Generate forward pipeline nodes

This commit is contained in:
Lubos Lenco 2016-01-27 23:40:33 +01:00
parent 6a7d93ce04
commit e8d7f7d6e4
4 changed files with 46 additions and 5 deletions

View file

@ -15,7 +15,7 @@ vec2 envMapEquirect(vec3 wcNormal, float flipEnvMap) {
return vec2(theta / TwoPI, phi / PI);
}
void kore() {
void main() {
vec3 N = normalize(wcNormal);
gl_FragColor = texture2D(envmap, envMapEquirect(N, -1.0));

View file

@ -56,7 +56,7 @@ mat3 transpose(mat3 m) {
m[0][2], m[1][2], m[2][2]);
}
void kore() {
void main() {
mat4 invP = inverse(P);
mat3 invMV = transpose(mat3(V));

View file

@ -170,15 +170,44 @@ node_categories = [
]),
]
def reset_pipelines():
if bpy.data.node_groups.get('forward_pipeline') == None:
make_forward_pipeline()
def make_forward_pipeline():
step = 170
pipe = bpy.data.node_groups.new(name='forward_pipeline', type='CGPipelineTreeType')
nodes = pipe.nodes
links = pipe.links
framebuffer_node = nodes.new('FramebufferNodeType')
framebuffer_node.location = 0, 0
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.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.location = step * 3, 0
drawgeometry_node.inputs[1].default_value = 'forward' # Context
links.new(cleartarget_node.outputs[0], drawgeometry_node.inputs[0])
def register():
bpy.utils.register_module(__name__)
try:
nodeitems_utils.register_node_categories("CG_PIELINE_PNODES", node_categories)
nodeitems_utils.register_node_categories("CG_PIPELINE_NODES", node_categories)
reset_pipelines()
except:
pass
def unregister():
nodeitems_utils.unregister_node_categories("CG_PIELINE_PNODES")
nodeitems_utils.unregister_node_categories("CG_PIPELINE_NODES")
bpy.utils.unregister_module(__name__)

View file

@ -2,6 +2,7 @@ import shutil
import bpy
import os
import json
import pipeline_nodes
from bpy.types import Menu, Panel, UIList
from bpy.props import *
@ -21,7 +22,7 @@ def initProperties():
# For camera
bpy.types.Camera.frustum_culling = bpy.props.BoolProperty(name="Frustum Culling", default=False)
bpy.types.Camera.sort_front_to_back = bpy.props.BoolProperty(name="Sort Front to Back", default=False)
bpy.types.Camera.pipeline_path = bpy.props.StringProperty(name="Pipeline Path", default="pipeline_resource/forward_pipeline")
bpy.types.Camera.pipeline_path = bpy.props.StringProperty(name="Pipeline Path", default="forward_pipeline")
bpy.types.Camera.pipeline_pass = bpy.props.StringProperty(name="Pipeline Pass", default="forward")
# For material
bpy.types.Material.receive_shadow = bpy.props.BoolProperty(name="Receive Shadow", default=True)
@ -63,9 +64,19 @@ class DataPropsPanel(bpy.types.Panel):
layout.prop(obj.data, 'sort_front_to_back')
layout.prop_search(obj.data, "pipeline_path", bpy.data, "node_groups")
layout.prop(obj.data, 'pipeline_pass')
layout.operator("cg.reset_pipelines")
elif obj.type == 'MESH':
layout.prop(obj.data, 'static_usage')
# Reset pipelines
class OBJECT_OT_RESETPIPELINESButton(bpy.types.Operator):
bl_idname = "cg.reset_pipelines"
bl_label = "Reset Pipelines"
def execute(self, context):
pipeline_nodes.reset_pipelines()
return{'FINISHED'}
# Menu in materials region
class MatsPropsPanel(bpy.types.Panel):
bl_label = "Cycles Props"
@ -83,6 +94,7 @@ class MatsPropsPanel(bpy.types.Panel):
if mat.custom_shader:
layout.prop(mat, 'custom_shader_name')
# Registration
def register():
bpy.utils.register_module(__name__)