Deferred pipeline nodes
This commit is contained in:
parent
c8bdae0ba9
commit
6f50e4cd70
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue