示例#1
0
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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
 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)
示例#5
0
    def getType(self, index):
        assert self.poolinfo.typeTaken
        #assert False, "hack"

        return glsl.Load(index, 'type')