Skip to content

Commit 488751a

Browse files
committed
Add a VectorCoordinateTransform node
1 parent 34d0665 commit 488751a

6 files changed

Lines changed: 620 additions & 0 deletions

File tree

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<class name="VisualShaderNodeVectorCoordinateTransform" inherits="VisualShaderNode" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
3+
<brief_description>
4+
Transforms a [Vector3] from one coordinate space to another.
5+
</brief_description>
6+
<description>
7+
Transforms a position or direction [Vector3] from one coordinate space to another. See also [VisualShaderNodeTransformVecMult].
8+
</description>
9+
<tutorials>
10+
</tutorials>
11+
<members>
12+
<member name="from_space" type="int" setter="set_from_space" getter="get_from_space" enum="VisualShaderNodeVectorCoordinateTransform.Space" default="0">
13+
Coordinate space to transform from.
14+
</member>
15+
<member name="normalize_output" type="bool" setter="set_normalize_output" getter="get_normalize_output" default="true">
16+
If vector type is set to direction, you can reduce the length of the output vector to 1.
17+
</member>
18+
<member name="to_space" type="int" setter="set_to_space" getter="get_to_space" enum="VisualShaderNodeVectorCoordinateTransform.Space" default="0">
19+
Coordinate space to transform to.
20+
</member>
21+
<member name="vector_type" type="int" setter="set_vector_type" getter="get_vector_type" enum="VisualShaderNodeVectorCoordinateTransform.VectorType" default="0">
22+
Type of the vector to transform, either position or direction.
23+
</member>
24+
</members>
25+
<constants>
26+
<constant name="SPACE_MODEL" value="0" enum="Space">
27+
Model space.
28+
</constant>
29+
<constant name="SPACE_WORLD" value="1" enum="Space">
30+
World space.
31+
</constant>
32+
<constant name="SPACE_VIEW" value="2" enum="Space">
33+
View space.
34+
</constant>
35+
<constant name="SPACE_TANGENT" value="3" enum="Space">
36+
Tangent space.
37+
</constant>
38+
<constant name="SPACE_SCREEN" value="4" enum="Space">
39+
Screen space.
40+
</constant>
41+
<constant name="SPACE_MAX" value="5" enum="Space">
42+
Represents the size of the [enum Space] enum.
43+
</constant>
44+
<constant name="VECTOR_TYPE_POSITION" value="0" enum="VectorType">
45+
A position vector.
46+
</constant>
47+
<constant name="VECTOR_TYPE_DIRECTION" value="1" enum="VectorType">
48+
A direction vector, such as a normal vector.
49+
</constant>
50+
<constant name="VECTOR_TYPE_MAX" value="2" enum="VectorType">
51+
Represents the size of the [enum VectorType] enum.
52+
</constant>
53+
</constants>
54+
</class>

modules/visual_shader/editor/visual_shader_editor_plugin.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8472,6 +8472,8 @@ VisualShaderEditor::VisualShaderEditor() {
84728472
add_options.push_back(AddOption("Subtract (-)", "Transform/Operators", "VisualShaderNodeTransformOp", TTR("Subtracts two transforms."), { VisualShaderNodeTransformOp::OP_A_MINUS_B }, VisualShaderNode::PORT_TYPE_TRANSFORM));
84738473
add_options.push_back(AddOption("TransformVectorMult (*)", "Transform/Operators", "VisualShaderNodeTransformVecMult", TTR("Multiplies vector by transform."), {}, VisualShaderNode::PORT_TYPE_VECTOR_3D));
84748474

8475+
add_options.push_back(AddOption("TransformVectorCoordinate (*)", "Vector/Functions", "VisualShaderNodeVectorCoordinateTransform", TTR("Transform between coordinate spaces."), {}, VisualShaderNode::PORT_TYPE_VECTOR_3D));
8476+
84758477
add_options.push_back(AddOption("TransformConstant", "Transform/Variables", "VisualShaderNodeTransformConstant", TTR("Transform constant."), {}, VisualShaderNode::PORT_TYPE_TRANSFORM));
84768478
add_options.push_back(AddOption("TransformParameter", "Transform/Variables", "VisualShaderNodeTransformParameter", TTR("Transform parameter."), {}, VisualShaderNode::PORT_TYPE_TRANSFORM));
84778479

modules/visual_shader/register_types.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ void initialize_visual_shader_module(ModuleInitializationLevel p_level) {
9797
GDREGISTER_CLASS(VisualShaderNodeColorOp);
9898
GDREGISTER_CLASS(VisualShaderNodeTransformOp);
9999
GDREGISTER_CLASS(VisualShaderNodeTransformVecMult);
100+
GDREGISTER_CLASS(VisualShaderNodeVectorCoordinateTransform);
100101
GDREGISTER_CLASS(VisualShaderNodeFloatFunc);
101102
GDREGISTER_CLASS(VisualShaderNodeIntFunc);
102103
GDREGISTER_CLASS(VisualShaderNodeUIntFunc);

0 commit comments

Comments
 (0)