Deferred pipeline nodes

This commit is contained in:
Lubos Lenco 2016-01-28 13:21:51 +01:00
parent c8bdae0ba9
commit 6f50e4cd70

View file

@ -173,6 +173,8 @@ node_categories = [
def reset_pipelines():
if bpy.data.node_groups.get('forward_pipeline') == None:
make_forward_pipeline()
if bpy.data.node_groups.get('deferred_pipeline') == None:
make_deferred_pipeline()
def make_forward_pipeline():
step = 170
@ -180,24 +182,71 @@ def make_forward_pipeline():
nodes = pipe.nodes
links = pipe.links
framebuffer_node = nodes.new('FramebufferNodeType')
framebuffer_node = nodes.new('FramebufferNodeType')
framebuffer_node.location = 0, 0
settarget_node = nodes.new('SetTargetNodeType')
settarget_node = nodes.new('SetTargetNodeType')
settarget_node.location = step * 1, 0
links.new(framebuffer_node.outputs[0], settarget_node.inputs[1])
cleartarget_node = nodes.new('ClearTargetNodeType')
cleartarget_node = nodes.new('ClearTargetNodeType')
cleartarget_node.location = step * 2, 0
cleartarget_node.inputs[1].default_value = True # Color
cleartarget_node.inputs[2].default_value = True # Depth
links.new(settarget_node.outputs[0], cleartarget_node.inputs[0])
drawgeometry_node = nodes.new('DrawGeometryNodeType')
drawgeometry_node = nodes.new('DrawGeometryNodeType')
drawgeometry_node.location = step * 3, 0
drawgeometry_node.inputs[1].default_value = 'forward' # Context
links.new(cleartarget_node.outputs[0], drawgeometry_node.inputs[0])
def make_deferred_pipeline():
step = 170
pipe = bpy.data.node_groups.new(name='deferred_pipeline', type='CGPipelineTreeType')
nodes = pipe.nodes
links = pipe.links
gbuffer_node = nodes.new('TargetNodeType')
gbuffer_node.location = 0, -step * 1
drawgbuffer_node.inputs[0].default_value = 'gbuffer' # Id
drawgbuffer_node.inputs[3].default_value = 3 # Color buffers
drawgbuffer_node.inputs[4].default_value = True # Depth
drawgbuffer_node.inputs[5].default_value = 'RGBA128' # Format
setgbuffer_node = nodes.new('SetTargetNodeType')
setgbuffer_node.location = step * 1, 0
links.new(gbuffer_node.outputs[0], setgbuffer_node.inputs[1])
cleargbuffer_node = nodes.new('ClearTargetNodeType')
cleargbuffer_node.location = step * 2, 0
cleargbuffer_node.inputs[1].default_value = True # Color
cleargbuffer_node.inputs[2].default_value = True # Depth
links.new(setgbuffer_node.outputs[0], cleargbuffer_node.inputs[0])
drawgbuffer_node = nodes.new('DrawGeometryNodeType')
drawgbuffer_node.location = step * 3, 0
drawgbuffer_node.inputs[1].default_value = 'deferred' # Context
links.new(cleargbuffer_node.outputs[0], drawgbuffer_node.inputs[0])
framebuffer_node = nodes.new('FramebufferNodeType')
framebuffer_node.location = step * 3, -step * 1
setframebuffer_node = nodes.new('SetTargetNodeType')
setframebuffer_node.location = step * 4, 0
links.new(drawgbuffer_node.outputs[0], setframebuffer_node.inputs[0])
links.new(framebuffer_node.outputs[0], setframebuffer_node.inputs[1])
bindgbuffer_node = nodes.new('BindTargetNodeType')
bindgbuffer_node.location = step * 5, -step * 1
drawgbuffer_node.inputs[2].default_value = 'gbuffer' # Constant
links.new(setframebuffer_node.outputs[0], bindgbuffer_node.inputs[0])
links.new(gbuffer_node.outputs[0], bindgbuffer_node.inputs[1])
drawquad_node = nodes.new('DrawQuadNodeType')
drawquad_node.location = step * 6, -step * 1
drawquad_node.inputs[1].default_value = 'final_pass' # Material context
links.new(bindgbuffer_node.outputs[0], drawquad_node.inputs[0])
def register():
bpy.utils.register_module(__name__)
try: