def swizzleRewrite(self, node): if not hasNumArgs(node, 1): return if self is None: return True else: name = node.code.annotation.origin.name return glsl.Load(self(node.args[0]), name)
def visitLoad(self, node, g): slot = self.getSingleSlot(g.annotation.read.flat) if intrinsics.isIntrinsicMemoryOp(node): expr = self.valueRef(node.expr, g) field = intrinsics.fields[node.name.object.pyobj] src = self.slotRef(glsl.Load(expr.ast(), field), slot) else: src = self.fieldRef(node, slot, g) return self.assignmentTransfer(src, g)
def visitStore(self, node, g): # Source src = self(node.value, g) slot = self.getSingleSlot(g.annotation.modify.flat) # Destination if intrinsics.isIntrinsicMemoryOp(node): expr = self.valueRef(node.expr, g) field = intrinsics.fields[node.name.object.pyobj] dst = self.slotRef(glsl.Load(expr.ast(), field), slot) else: dst = self.fieldRef(node, slot, g) return self.transfer(src, dst)
def visitLoad(self, node): exprInfo = self(node.expr) exprRef = exprInfo.intrinsicRef( singleType(node.expr.annotation.references.merged)) field = intrinsics.fields[node.name.object.pyobj] return glsl.Load(exprRef, field)
def getType(self, index): assert self.poolinfo.typeTaken #assert False, "hack" return glsl.Load(index, 'type')