Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/render/nodes.cpp
| Show First 20 Lines • Show All 5,354 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| void VectorMathNode::compile(OSLCompiler& compiler) | void VectorMathNode::compile(OSLCompiler& compiler) | ||||
| { | { | ||||
| compiler.parameter(this, "type"); | compiler.parameter(this, "type"); | ||||
| compiler.add(this, "node_vector_math"); | compiler.add(this, "node_vector_math"); | ||||
| } | } | ||||
| /* Vector Rotate */ | |||||
| NODE_DEFINE(VectorRotateNode) | |||||
| { | |||||
| NodeType* type = NodeType::add("vector_rotate", create, NodeType::SHADER); | |||||
| SOCKET_IN_VECTOR(vector, "Vector", make_float3(0.0f, 0.0f, 0.0f)); | |||||
| SOCKET_IN_VECTOR(origin, "Origin", make_float3(0.0f, 0.0f, 0.0f)); | |||||
| SOCKET_IN_FLOAT(x, "X", 0.0f); | |||||
| SOCKET_IN_FLOAT(y, "Y", 0.0f); | |||||
| SOCKET_IN_FLOAT(z, "Z", 0.0f); | |||||
| SOCKET_OUT_VECTOR(vector, "Vector"); | |||||
| return type; | |||||
| } | |||||
| VectorRotateNode::VectorRotateNode() | |||||
| : ShaderNode(node_type) | |||||
| { | |||||
| } | |||||
| void VectorRotateNode::constant_fold(const ConstantFolder& folder) | |||||
| { | |||||
| if (folder.all_inputs_constant()) { | |||||
| folder.make_constant(make_float3(x, y, z)); | |||||
| } | |||||
| } | |||||
| void VectorRotateNode::compile(SVMCompiler& compiler) | |||||
| { | |||||
| ShaderInput *vector_in = input("Vector"); | |||||
| ShaderInput *origin_in = input("Origin"); | |||||
| ShaderInput *x_in = input("X"); | |||||
| ShaderInput *y_in = input("Y"); | |||||
| ShaderInput *z_in = input("Z"); | |||||
| ShaderOutput *vector_out = output("Vector"); | |||||
| compiler.add_node(NODE_VECTOR_ROTATE, | |||||
| compiler.encode_uchar4( | |||||
| compiler.stack_assign(vector_in), | |||||
| compiler.stack_assign(origin_in), | |||||
| compiler.stack_assign(vector_out) | |||||
| ), | |||||
| compiler.encode_uchar4( | |||||
| compiler.stack_assign(x_in), | |||||
| compiler.stack_assign(y_in), | |||||
| compiler.stack_assign(z_in) | |||||
| ) | |||||
| ); | |||||
| compiler.add_node( | |||||
| __float_as_int(x), | |||||
| __float_as_int(y), | |||||
| __float_as_int(z), | |||||
| SVM_STACK_INVALID | |||||
| ); | |||||
| } | |||||
| void VectorRotateNode::compile(OSLCompiler& compiler) | |||||
| { | |||||
| compiler.add(this, "node_vector_rotate"); | |||||
| } | |||||
| /* VectorTransform */ | /* VectorTransform */ | ||||
| NODE_DEFINE(VectorTransformNode) | NODE_DEFINE(VectorTransformNode) | ||||
| { | { | ||||
| NodeType* type = NodeType::add("vector_transform", create, NodeType::SHADER); | NodeType* type = NodeType::add("vector_transform", create, NodeType::SHADER); | ||||
| static NodeEnum type_enum; | static NodeEnum type_enum; | ||||
| type_enum.insert("vector", NODE_VECTOR_TRANSFORM_TYPE_VECTOR); | type_enum.insert("vector", NODE_VECTOR_TRANSFORM_TYPE_VECTOR); | ||||
| ▲ Show 20 Lines • Show All 835 Lines • Show Last 20 Lines | |||||