mirror of
https://github.com/DigvijaysinhGohil/Godot-Shader-Lib.git
synced 2025-09-20 04:15:58 +08:00
Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
571098f3d9 | |||
d19bca6369 | |||
4125d1d412 | |||
2828af7503 | |||
13971eeab6 | |||
d3397cf87c | |||
4205904cb5 | |||
a0aaf91ef3 | |||
64dead8a82 |
45
README.md
45
README.md
@ -1,10 +1,7 @@
|
||||
# Godot-Shader-Lib
|
||||
Visual shader node library for Godot engine. The addon supports Godot versions 4.1.0 and above!
|
||||
Visual shader node library for Godot engine. The addon supports Godot versions 4.x!
|
||||
|
||||
Adds various extra nodes to use in built-in visual shader editor.
|
||||
|
||||
## This version is now deprecated and is no longer supported.
|
||||
|
||||
# Installation
|
||||
Copy the contents of **_addons/ShaderLib_** into the same folder in your project. No activation needed. Custom visual shader nodes work the same way as standard visual shader nodes.
|
||||
|
||||
@ -15,13 +12,14 @@ Delete the contents of **_addons/ShaderLib_** folder from your project. Make sur
|
||||
<details open>
|
||||
<summary><h1>Geometry nodes</h1></summary>
|
||||
<details>
|
||||
<summary><h3>Node Scale World node</h3></summary>
|
||||
Provides accees to node scale in world space.
|
||||
<summary><h3>Mesh node</h3></summary>
|
||||
Provides accees to node's position and scale in world space.
|
||||
<hr>
|
||||
|
||||
**Outputs**
|
||||
|Name|Type|Binding|Description|
|
||||
|---|---|---|---|
|
||||
|position|vec3|None|Node/object position in world space|
|
||||
|scale|vec3|None|Node/object scale in world space|
|
||||
___
|
||||
</details>
|
||||
@ -30,6 +28,31 @@ ___
|
||||
<details open>
|
||||
<summary><h1>Maths nodes</h1></summary>
|
||||
<details open>
|
||||
<summary><h2>Vector</h2></summary>
|
||||
<details>
|
||||
<summary><h3>Vector Transform node</h3></summary>
|
||||
Returns the transformed vector of the input value <i><b>in</b></i> from one coordinate space to another.<br><br><i>This node is only available in shader mode SPATIAL.</i>
|
||||
<hr>
|
||||
|
||||
**Inputs**
|
||||
|Name|Type|Binding|Description|
|
||||
|---|---|---|---|
|
||||
|in|vector3|none|Input vector|
|
||||
|
||||
**Controls**
|
||||
|Name|Options|Description|
|
||||
|---|---|---|
|
||||
|From|Local, World, View, Screen, Tangent|Coordinate space from which you want to transform the input vector|
|
||||
|To|Local, World, View, Screen, Tangent|Coordinate space to which you want to transform the input vector|
|
||||
|
||||
**Outputs**
|
||||
|Name|Type|Binding|Description|
|
||||
|---|---|---|---|
|
||||
|out|vector3|None|Output vector|
|
||||
___
|
||||
</details>
|
||||
</details>
|
||||
<details open>
|
||||
<summary><h2>Wave</h2></summary>
|
||||
<details>
|
||||
<summary><h3>Noise Sine Wave node</h3></summary>
|
||||
@ -297,7 +320,7 @@ Default value for uv input will be vec2(0, 0) for shader modes <i>PARTICLES</i>,
|
||||
<details>
|
||||
<summary><h3>Flipbook node</h3></summary>
|
||||
Creates a flipbook, or texture sheet animation, of the UVs supplied to input UV. The amount of tiles on the sheet are defined by the values of the inputs <b><i>rows</i></b> and <b><i>columns</i></b>.
|
||||
This node can be used to create a texture animation functionality, commonly used for particle effects and sprites. Animation frames will go from top left to bottom right.<br><br><i>This node is only available in shader modes SPATIAL and CANVAS ITEM.</i>
|
||||
This node can be used to create a texture animation functionality, commonly used for particle effects and sprites.<br><br><i>This node is only available in shader modes SPATIAL and CANVAS ITEM.</i>
|
||||
<hr>
|
||||
|
||||
**Inputs**
|
||||
@ -306,6 +329,8 @@ This node can be used to create a texture animation functionality, commonly used
|
||||
|uv|vec2|UV|Input UV value|
|
||||
|rows|int|none|Amount of horizontal tiles in texture sheet|
|
||||
|columns|int|none|Amount of vertical tiles in texture sheet|
|
||||
|start frame|int|none|Start tile index texture sheet|
|
||||
|end frame|int|none|End tile index texture sheet|
|
||||
|anim speed|float|none|Animation speed|
|
||||
|
||||
**Outputs**
|
||||
@ -361,7 +386,11 @@ Rotates value of input UV around a reference point defined by input <b><i>center
|
||||
|uv|vec2|UV|Input UV value|
|
||||
|center|vec2|none|Center reference point|
|
||||
|rotation|float|none|Rotation amount in radians|
|
||||
|use degrees|bool|none|Use degrees instead of radians for <b><i>rotation</i></b> amount|
|
||||
|
||||
**Controls**
|
||||
|Name|Options|Description|
|
||||
|---|---|---|
|
||||
|Units|Degrees, Radians|Specifies the unit for <i><b>rotation</b></i> input|
|
||||
|
||||
**Outputs**
|
||||
|Name|Type|Binding|Description|
|
||||
|
@ -1,8 +1,8 @@
|
||||
@tool
|
||||
class_name VisualShaderNodeGeometryNodeScaleWorld extends VisualShaderNodeCustom
|
||||
class_name VisualShaderNodeGeometryMeshNode extends VisualShaderNodeCustom
|
||||
|
||||
func _get_name() -> String:
|
||||
return "NodeScaleWorld"
|
||||
return "MeshNode"
|
||||
|
||||
func _get_category() -> String:
|
||||
return "Geometry"
|
||||
@ -20,10 +20,14 @@ func _get_return_icon_type() -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_VECTOR_3D
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
return 2
|
||||
|
||||
func _get_output_port_name(port: int) -> String:
|
||||
return "scale"
|
||||
match port:
|
||||
0:
|
||||
return "position"
|
||||
_:
|
||||
return "scale"
|
||||
|
||||
func _get_output_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_VECTOR_3D
|
||||
@ -38,8 +42,11 @@ func _is_available(mode: Shader.Mode, type: VisualShader.Type) -> bool:
|
||||
return false
|
||||
|
||||
func _get_global_code(mode: Shader.Mode) -> String:
|
||||
var code: String = preload("NodeScaleWorld.gdshaderinc").code
|
||||
var code: String = preload("MeshNode.gdshaderinc").code
|
||||
return code
|
||||
|
||||
func _get_code(input_vars: Array[String], output_vars: Array[String], mode: Shader.Mode, type: VisualShader.Type) -> String:
|
||||
return output_vars[0] + " = geometry_node_scale_world(MODEL_MATRIX);"
|
||||
var code: String
|
||||
code = "%s = geometry_node_scale_world(MODEL_MATRIX);" % output_vars[0]
|
||||
code += "\n%s = NODE_POSITION_WORLD;" % output_vars[1]
|
||||
return code
|
129
addons/ShaderLib/Maths/Vector/VectorTransform.gd
Normal file
129
addons/ShaderLib/Maths/Vector/VectorTransform.gd
Normal file
@ -0,0 +1,129 @@
|
||||
@tool
|
||||
class_name VisualShaderNodeVectorTransform extends VisualShaderNodeCustom
|
||||
|
||||
func _get_name() -> String:
|
||||
return "VectorTransform"
|
||||
|
||||
func _get_category() -> String:
|
||||
return "Maths/Vector"
|
||||
|
||||
func _get_description() -> String:
|
||||
return "Returns the transformed vector of the input value from one coordinate space to another."
|
||||
|
||||
func _get_return_icon_type() -> PortType:
|
||||
return PORT_TYPE_VECTOR_3D
|
||||
|
||||
func _get_input_port_count() -> int:
|
||||
return 1
|
||||
|
||||
func _get_input_port_name(port: int) -> String:
|
||||
return "in"
|
||||
|
||||
func _get_input_port_type(port: int) -> PortType:
|
||||
return PORT_TYPE_VECTOR_3D
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
func _get_output_port_name(port: int) -> String:
|
||||
return "out"
|
||||
|
||||
func _get_output_port_type(port: int) -> PortType:
|
||||
return PORT_TYPE_VECTOR_3D
|
||||
|
||||
func _get_property_count() -> int:
|
||||
return 2
|
||||
|
||||
func _get_property_default_index(index: int) -> int:
|
||||
match index:
|
||||
0:
|
||||
return 0
|
||||
_:
|
||||
return 1
|
||||
|
||||
func _get_property_name(index: int) -> String:
|
||||
match index:
|
||||
0:
|
||||
return "From"
|
||||
_:
|
||||
return "To"
|
||||
|
||||
func _get_property_options(index: int) -> PackedStringArray:
|
||||
return ["Local", "World", "View", "Screen", "Tangent"]
|
||||
|
||||
func _is_available(mode: Shader.Mode, type: VisualShader.Type) -> bool:
|
||||
return mode == Shader.MODE_SPATIAL
|
||||
|
||||
func _get_global_code(mode: Shader.Mode) -> String:
|
||||
var code: String = preload("VectorTransform.gdshaderinc").code
|
||||
return code
|
||||
|
||||
func _get_code(input_vars: Array[String], output_vars: Array[String], mode: Shader.Mode, type: VisualShader.Type) -> String:
|
||||
var code: String
|
||||
var from_coord_space_index: int = get_option_index(0)
|
||||
var to_coord_space_index: int = get_option_index(1)
|
||||
var input_vector: String = input_vars[0] if input_vars[0] else "vec3(0.0, 0.0, 0.0)"
|
||||
|
||||
match from_coord_space_index:
|
||||
0:
|
||||
match to_coord_space_index:
|
||||
0:
|
||||
code = "%s = %s;" % [output_vars[0], input_vector]
|
||||
1:
|
||||
code = "%s = vector_transform_local_to_world(MODEL_MATRIX, %s);" % [output_vars[0], input_vector]
|
||||
2:
|
||||
code = "%s = vector_transform_local_to_view(MODEL_MATRIX, VIEW_MATRIX, %s);" % [output_vars[0], input_vector]
|
||||
3:
|
||||
code = "%s = vector_transform_local_to_screen(MODEL_MATRIX, VIEW_MATRIX, PROJECTION_MATRIX, %s);" % [output_vars[0], input_vector]
|
||||
4:
|
||||
code = "%s = vector_transform_local_to_tangent(NORMAL, BINORMAL, TANGENT, %s);" % [output_vars[0], input_vector]
|
||||
1:
|
||||
match to_coord_space_index:
|
||||
0:
|
||||
code = "%s = vector_transform_world_to_local(MODEL_MATRIX, %s);" % [output_vars[0], input_vector]
|
||||
1:
|
||||
code = "%s = %s;" % [output_vars[0], input_vector]
|
||||
2:
|
||||
code = "%s = vector_transform_world_to_view(VIEW_MATRIX, %s);" % [output_vars[0], input_vector]
|
||||
3:
|
||||
code = "%s = vector_transform_world_to_screen(VIEW_MATRIX, PROJECTION_MATRIX, %s);" % [output_vars[0], input_vector]
|
||||
4:
|
||||
code = "%s = vector_transform_world_to_tangent(MODEL_MATRIX, NORMAL, BINORMAL, TANGENT, %s);" % [output_vars[0], input_vector]
|
||||
2:
|
||||
match to_coord_space_index:
|
||||
0:
|
||||
code = "%s = vector_transform_view_to_local(INV_VIEW_MATRIX, MODEL_MATRIX, %s);" % [output_vars[0], input_vector]
|
||||
1:
|
||||
code = "%s = vector_transform_view_to_world(INV_VIEW_MATRIX, %s);" % [output_vars[0], input_vector]
|
||||
2:
|
||||
code = "%s = %s;" % [output_vars[0], input_vector]
|
||||
3:
|
||||
code = "%s = vector_transform_view_to_screen(PROJECTION_MATRIX, %s);" % [output_vars[0], input_vector]
|
||||
4:
|
||||
code = "%s = vector_transform_view_to_tangent(INV_VIEW_MATRIX, MODEL_MATRIX, NORMAL, BINORMAL, TANGENT, %s);" % [output_vars[0], input_vector]
|
||||
3:
|
||||
match to_coord_space_index:
|
||||
0:
|
||||
code = "%s = vector_transform_screen_to_local(INV_PROJECTION_MATRIX, INV_VIEW_MATRIX, MODEL_MATRIX, %s);" % [output_vars[0], input_vector]
|
||||
1:
|
||||
code = "%s = vector_transform_screen_to_world(INV_PROJECTION_MATRIX, INV_VIEW_MATRIX, %s);" % [output_vars[0], input_vector]
|
||||
2:
|
||||
code = "%s = vector_transform_screen_to_view(INV_PROJECTION_MATRIX, %s);" % [output_vars[0], input_vector]
|
||||
3:
|
||||
code = "%s = %s;" % [output_vars[0], input_vector]
|
||||
4:
|
||||
code = "%s = vector_transform_screen_to_tangent(INV_PROJECTION_MATRIX, INV_VIEW_MATRIX, MODEL_MATRIX, NORMAL, BINORMAL, TANGENT, %s);" % [output_vars[0], input_vector]
|
||||
4:
|
||||
match to_coord_space_index:
|
||||
0:
|
||||
code = "%s = vector_transform_tangent_to_local(NORMAL, BINORMAL, TANGENT, %s);" % [output_vars[0], input_vector]
|
||||
1:
|
||||
code = "%s = vector_transform_tangent_to_world(MODEL_MATRIX, NORMAL, BINORMAL, TANGENT, %s);" % [output_vars[0], input_vector]
|
||||
2:
|
||||
code = "%s = vector_transform_tangent_to_view(MODEL_MATRIX, VIEW_MATRIX, NORMAL, BINORMAL, TANGENT, %s);" % [output_vars[0], input_vector]
|
||||
3:
|
||||
code = "%s = vector_transform_tangent_to_screen(MODEL_MATRIX, VIEW_MATRIX, PROJECTION_MATRIX, NORMAL, BINORMAL, TANGENT, %s);" % [output_vars[0], input_vector]
|
||||
4:
|
||||
code = "%s = %s;" % [output_vars[0], input_vector]
|
||||
|
||||
return code
|
99
addons/ShaderLib/Maths/Vector/VectorTransform.gdshaderinc
Normal file
99
addons/ShaderLib/Maths/Vector/VectorTransform.gdshaderinc
Normal file
@ -0,0 +1,99 @@
|
||||
vec3 vector_transform_world_to_local(mat4 model_matrix, vec3 vector){
|
||||
return (transpose(model_matrix) * vec4(vector, 0.0)).xyz;
|
||||
}
|
||||
|
||||
vec3 vector_transform_world_to_view(mat4 view_matrix, vec3 vector){
|
||||
return (view_matrix * vec4(vector, 0.0)).xyz;
|
||||
}
|
||||
|
||||
vec3 vector_transform_world_to_screen(mat4 view_matrix, mat4 projection_matrix, vec3 vector){
|
||||
vec3 vector_view = vector_transform_world_to_view(view_matrix, vector);
|
||||
return (projection_matrix * vec4(vector_view, 0.0)).xyz;
|
||||
}
|
||||
|
||||
vec3 vector_transform_world_to_tangent(mat4 model_matrix, vec3 normal, vec3 binormal, vec3 tangent, vec3 vector){
|
||||
mat3 local_to_tangent_matrix = mat3(tangent, binormal, normal);
|
||||
vec3 vector_local = vector_transform_world_to_local(model_matrix, vector);
|
||||
return local_to_tangent_matrix * vector_local;
|
||||
}
|
||||
|
||||
vec3 vector_transform_local_to_world(mat4 model_matrix, vec3 vector){
|
||||
return (model_matrix * vec4(vector, 0.0)).xyz;
|
||||
}
|
||||
|
||||
vec3 vector_transform_local_to_view(mat4 model_matrix, mat4 view_matrix, vec3 vector){
|
||||
vec3 vector_world = vector_transform_local_to_world(model_matrix, vector);
|
||||
return (view_matrix * vec4(vector_world, 0.0)).xyz;
|
||||
}
|
||||
|
||||
vec3 vector_transform_local_to_screen(mat4 model_matrix, mat4 view_matrix, mat4 projection_matrix, vec3 vector){
|
||||
vec3 vector_view = vector_transform_local_to_view(model_matrix, view_matrix, vector);
|
||||
return (projection_matrix * vec4(vector_view, 0.0)).xyz;
|
||||
}
|
||||
|
||||
vec3 vector_transform_local_to_tangent(vec3 normal, vec3 binormal, vec3 tangent, vec3 vector){
|
||||
mat3 local_to_tangent_matrix = mat3(tangent, binormal, normal);
|
||||
return local_to_tangent_matrix * vector;
|
||||
}
|
||||
|
||||
vec3 vector_transform_view_to_world(mat4 inv_view_matrix, vec3 vector){
|
||||
return (inv_view_matrix * vec4(vector, 0.0)).xyz;;
|
||||
}
|
||||
|
||||
vec3 vector_transform_view_to_local(mat4 inv_view_matrix, mat4 model_matrix, vec3 vector){
|
||||
vec3 vector_world = vector_transform_view_to_world(inv_view_matrix, vector);
|
||||
return vector_transform_world_to_local(model_matrix, vector_world);
|
||||
}
|
||||
|
||||
vec3 vector_transform_view_to_screen(mat4 projection_matrix, vec3 vector){
|
||||
return (projection_matrix * vec4(vector, 0.0)).xyz;
|
||||
}
|
||||
|
||||
vec3 vector_transform_view_to_tangent(mat4 inv_view_matrix, mat4 model_matrix, vec3 normal, vec3 binormal, vec3 tangent, vec3 vector){
|
||||
mat3 local_to_tangent_matrix = mat3(tangent, binormal, normal);
|
||||
vec3 vector_local = vector_transform_view_to_local(inv_view_matrix, model_matrix, vector);
|
||||
return vector_transform_local_to_tangent(normal, binormal, tangent, vector_local);
|
||||
}
|
||||
|
||||
vec3 vector_transform_screen_to_view(mat4 inv_projection_matrix, vec3 vector){
|
||||
return (inv_projection_matrix * vec4(vector, 0.0)).xyz;;
|
||||
}
|
||||
|
||||
vec3 vector_transform_screen_to_local(mat4 inv_projection_matrix, mat4 inv_view_matrix, mat4 model_matrix, vec3 vector){
|
||||
vec3 vector_view = vector_transform_screen_to_view(inv_projection_matrix, vector);
|
||||
return vector_transform_view_to_local(inv_view_matrix, model_matrix, vector_view);
|
||||
}
|
||||
|
||||
vec3 vector_transform_screen_to_world(mat4 inv_projection_matrix, mat4 inv_view_matrix, vec3 vector){
|
||||
vec3 vector_view = vector_transform_screen_to_view(inv_projection_matrix, vector);
|
||||
return vector_transform_view_to_world(inv_view_matrix, vector_view);
|
||||
}
|
||||
|
||||
vec3 vector_transform_screen_to_tangent(mat4 inv_projection_matrix, mat4 inv_view_matrix, mat4 model_matrix, vec3 normal, vec3 binormal, vec3 tangent, vec3 vector){
|
||||
mat3 local_to_tangent_matrix = mat3(tangent, binormal, normal);
|
||||
vec3 vector_local = vector_transform_screen_to_local(inv_projection_matrix, inv_view_matrix, model_matrix, vector);
|
||||
return local_to_tangent_matrix * vector_local;
|
||||
}
|
||||
|
||||
vec3 vector_transform_tangent_to_local(vec3 normal, vec3 binormal, vec3 tangent, vec3 vector){
|
||||
mat3 tangent_to_local_matrix = transpose(mat3(tangent, binormal, normal));
|
||||
return tangent_to_local_matrix * vector;
|
||||
}
|
||||
|
||||
vec3 vector_transform_tangent_to_world(mat4 model_matrix, vec3 normal, vec3 binormal, vec3 tangent, vec3 vector){
|
||||
mat3 tangent_to_local_matrix = transpose(mat3(tangent, binormal, normal));
|
||||
vec3 vector_local = tangent_to_local_matrix * vector;
|
||||
return vector_transform_local_to_world(model_matrix, vector_local);
|
||||
}
|
||||
|
||||
vec3 vector_transform_tangent_to_view(mat4 model_matrix, mat4 view_matrix, vec3 normal, vec3 binormal, vec3 tangent, vec3 vector){
|
||||
mat3 tangent_to_local_matrix = transpose(mat3(tangent, binormal, normal));
|
||||
vec3 vector_local = tangent_to_local_matrix * vector;
|
||||
return vector_transform_local_to_view(model_matrix, view_matrix, vector_local);
|
||||
}
|
||||
|
||||
vec3 vector_transform_tangent_to_screen(mat4 model_matrix, mat4 view_matrix, mat4 projection_matrix, vec3 normal, vec3 binormal, vec3 tangent, vec3 vector){
|
||||
mat3 tangent_to_local_matrix = transpose(mat3(tangent, binormal, normal));
|
||||
vec3 vector_local = tangent_to_local_matrix * vector;
|
||||
return vector_transform_local_to_screen(model_matrix, view_matrix, projection_matrix, vector_local);
|
||||
}
|
@ -1,9 +1,6 @@
|
||||
@tool
|
||||
class_name VisualShaderNodeMathsNoiseSineWave extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
set_input_port_default_value(1, Vector2(0.0, 1.0))
|
||||
|
||||
func _get_name() -> String:
|
||||
return "NoiseSineWave"
|
||||
|
||||
@ -34,6 +31,13 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_VECTOR_2D
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return Vector2(0.0, 1.0)
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,10 +2,6 @@
|
||||
class_name VisualShaderNodeProceduralCheckerBoard extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, Vector3(1.0, 1.0, 1.0))
|
||||
_set_input_port_default_value(2, Vector3(0.4, 0.4, 0.4))
|
||||
_set_input_port_default_value(3, Vector2(1.0, 1.0))
|
||||
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -43,6 +39,17 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_VECTOR_3D
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return Vector3(1.0, 1.0, 1.0)
|
||||
2:
|
||||
return Vector3(0.4, 0.4, 0.4)
|
||||
3:
|
||||
return Vector2(1.0, 1.0)
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
@ -66,4 +73,4 @@ func _get_code(input_vars: Array[String], output_vars: Array[String], mode: Shad
|
||||
var color_b: String = input_vars[2]
|
||||
var frequency: String = input_vars[3]
|
||||
|
||||
return output_vars[0] + " = checker_board(%s, %s, %s, %s);" % [uv, color_a, color_b, frequency]
|
||||
return output_vars[0] + " = checker_board(%s, %s.xyz, %s.xyz, %s);" % [uv, color_a, color_b, frequency]
|
||||
|
@ -2,8 +2,6 @@
|
||||
class_name VisualShaderNodeProceduralGradientNoise extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
set_input_port_default_value(1, 10.0)
|
||||
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -37,6 +35,13 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_SCALAR
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return 10.0
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,7 +2,6 @@
|
||||
class_name VisualShaderNodePseudoRandomNoise extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
set_input_port_default_value(0, 0.0)
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -26,6 +25,13 @@ func _get_input_port_name(port: int) -> String:
|
||||
func _get_input_port_type(port: int) -> PortType:
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
0:
|
||||
return 0.0
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,8 +2,6 @@
|
||||
class_name VisualShaderNodeProceduralSimpleNoise extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
set_input_port_default_value(1, 10.0)
|
||||
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -37,6 +35,13 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_SCALAR
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return 10.0
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,9 +2,6 @@
|
||||
class_name VisualShaderNodeProceduralVoronoi extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, 5.0)
|
||||
_set_input_port_default_value(2, 2.0)
|
||||
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -40,6 +37,15 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_SCALAR
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return 5.0
|
||||
2:
|
||||
return 2.0
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 2
|
||||
|
||||
|
@ -2,9 +2,6 @@
|
||||
class_name VisualShaderNodeProceduralEllipse extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, 0.5)
|
||||
_set_input_port_default_value(2, 0.5)
|
||||
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -40,6 +37,13 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_SCALAR
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1, 2:
|
||||
return 0.5
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,10 +2,6 @@
|
||||
class_name VisualShaderNodeProceduralPolygon extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, 3)
|
||||
_set_input_port_default_value(2, 0.5)
|
||||
_set_input_port_default_value(3, 0.5)
|
||||
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -45,6 +41,15 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_SCALAR
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return 3
|
||||
2, 3:
|
||||
return 0.5
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,9 +2,6 @@
|
||||
class_name VisualShaderNodeProceduralRectangle extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, 0.5)
|
||||
_set_input_port_default_value(2, 0.5)
|
||||
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -40,6 +37,13 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_SCALAR
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1, 2:
|
||||
return 0.5
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,11 +2,6 @@
|
||||
class_name VisualShaderNodeProceduralRoundedPolygon extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, 0.5)
|
||||
_set_input_port_default_value(2, 0.5)
|
||||
_set_input_port_default_value(3, 3)
|
||||
_set_input_port_default_value(4, 1.0)
|
||||
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -45,6 +40,17 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
_:
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1, 2:
|
||||
return 0.5
|
||||
3:
|
||||
return 3
|
||||
4:
|
||||
return 1.0
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,10 +2,6 @@
|
||||
class_name VisualShaderNodeProceduralRoundedRectangle extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, 0.5)
|
||||
_set_input_port_default_value(2, 0.5)
|
||||
_set_input_port_default_value(3, 1.0)
|
||||
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -43,6 +39,15 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_SCALAR
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1, 2:
|
||||
return 0.5
|
||||
3:
|
||||
return 1.0
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,10 +2,6 @@
|
||||
class_name VisualShaderNodeUVFlipbook extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
set_input_port_default_value(1, 1)
|
||||
set_input_port_default_value(2, 1)
|
||||
set_input_port_default_value(3, 0.1)
|
||||
|
||||
set_output_port_for_preview(0)
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -21,7 +17,7 @@ func _get_return_icon_type() -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_VECTOR_2D
|
||||
|
||||
func _get_input_port_count() -> int:
|
||||
return 4
|
||||
return 6
|
||||
|
||||
func _get_input_port_name(port: int) -> String:
|
||||
match port:
|
||||
@ -32,6 +28,10 @@ func _get_input_port_name(port: int) -> String:
|
||||
2:
|
||||
return "columns"
|
||||
3:
|
||||
return "start frame"
|
||||
4:
|
||||
return "end frame"
|
||||
5:
|
||||
return "anim speed"
|
||||
return ""
|
||||
|
||||
@ -39,12 +39,23 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
match port:
|
||||
0:
|
||||
return PORT_TYPE_VECTOR_2D
|
||||
1, 2:
|
||||
1, 2, 3, 4:
|
||||
return PORT_TYPE_SCALAR_INT
|
||||
3:
|
||||
5:
|
||||
return PORT_TYPE_SCALAR
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1, 2:
|
||||
return 1
|
||||
3, 4:
|
||||
return 0
|
||||
5:
|
||||
return 0.1
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
@ -79,6 +90,8 @@ func _get_code(input_vars: Array[String], output_vars: Array[String], mode: Shad
|
||||
|
||||
var rows: String = input_vars[1]
|
||||
var columns: String = input_vars[2]
|
||||
var anim_speed: String = input_vars[3]
|
||||
var start_frame: String = input_vars[3]
|
||||
var end_frame: String = input_vars[4]
|
||||
var anim_speed: String = input_vars[5]
|
||||
|
||||
return output_vars[0] + " = flipbook_uv(%s, %s, %s, %s);" % [uv, rows, columns, anim_speed]
|
||||
return output_vars[0] + " = flipbook_uv(%s, %s, %s, %s, %s, %s);" % [uv, rows, columns, start_frame, end_frame, anim_speed]
|
||||
|
@ -1,6 +1,4 @@
|
||||
vec2 flipbook_uv(vec2 uv, int rows, int columns, float anim_speed){
|
||||
int start_frame = 1;
|
||||
int end_frame = rows * columns;
|
||||
vec2 flipbook_uv(vec2 uv, int rows, int columns, int start_frame, int end_frame, float anim_speed){
|
||||
start_frame += int(fract(TIME * anim_speed) * float(end_frame));
|
||||
float _frame = float(clamp(start_frame, 0, end_frame));
|
||||
vec2 _off_per_frame = vec2((1.0 / float(columns)), (1.0 / float(rows)));
|
||||
@ -9,7 +7,7 @@ vec2 flipbook_uv(vec2 uv, int rows, int columns, float anim_speed){
|
||||
_current_sprite.x += _frame * _off_per_frame.x;
|
||||
float _row_index;
|
||||
float _mod = modf(_frame / float(columns), _row_index);
|
||||
_current_sprite.y -= 1.0 - (_row_index * _off_per_frame.y);
|
||||
_current_sprite.y -= _row_index * _off_per_frame.y;
|
||||
_current_sprite.x -= _row_index * float(columns) * _off_per_frame.x;
|
||||
vec2 _sprite_uv = (_sprite_size + _current_sprite);
|
||||
return _sprite_uv;
|
||||
|
@ -1,9 +1,6 @@
|
||||
@tool
|
||||
class_name VisualShaderNodeUVParallaxMapping extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, 1.0)
|
||||
|
||||
func _get_name() -> String:
|
||||
return "ParallaxMapping"
|
||||
|
||||
@ -34,6 +31,13 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
_:
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return 1.0
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,10 +2,6 @@
|
||||
class_name VisualShaderNodeUVRadialShear extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, Vector2(0.5, 0.5))
|
||||
_set_input_port_default_value(2, 10.0)
|
||||
_set_input_port_default_value(3, Vector2(0.0, 0.0))
|
||||
|
||||
set_output_port_for_preview(0)
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -43,6 +39,17 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_SCALAR
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return Vector2(0.5, 0.5)
|
||||
2:
|
||||
return 10.0
|
||||
3:
|
||||
return Vector2(0.0, 0.0)
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,10 +2,6 @@
|
||||
class_name VisualShaderNodeUVRotate extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, Vector2(0.5, 0.5))
|
||||
_set_input_port_default_value(2, 0.0)
|
||||
_set_input_port_default_value(3, false)
|
||||
|
||||
set_output_port_for_preview(0)
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -21,7 +17,7 @@ func _get_return_icon_type() -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_VECTOR_2D
|
||||
|
||||
func _get_input_port_count() -> int:
|
||||
return 4
|
||||
return 3
|
||||
|
||||
func _get_input_port_name(port: int) -> String:
|
||||
match port:
|
||||
@ -31,8 +27,6 @@ func _get_input_port_name(port: int) -> String:
|
||||
return "center"
|
||||
2:
|
||||
return "rotation"
|
||||
3:
|
||||
return "use degrees"
|
||||
return ""
|
||||
|
||||
func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
@ -41,10 +35,17 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_VECTOR_2D
|
||||
2:
|
||||
return PORT_TYPE_SCALAR
|
||||
3:
|
||||
return PORT_TYPE_BOOLEAN
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return Vector2(0.5, 0.5)
|
||||
2:
|
||||
return 0.0
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
@ -54,6 +55,18 @@ func _get_output_port_name(port: int) -> String:
|
||||
func _get_output_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_VECTOR_2D
|
||||
|
||||
func _get_property_count() -> int:
|
||||
return 1
|
||||
|
||||
func _get_property_default_index(index: int) -> int:
|
||||
return 0
|
||||
|
||||
func _get_property_name(index: int) -> String:
|
||||
return "Units"
|
||||
|
||||
func _get_property_options(index: int) -> PackedStringArray:
|
||||
return ["Degrees", "Radians"]
|
||||
|
||||
func _get_global_code(mode: Shader.Mode) -> String:
|
||||
var code: String = preload("RotateUV.gdshaderinc").code
|
||||
return code
|
||||
@ -72,6 +85,6 @@ func _get_code(input_vars: Array[String], output_vars: Array[String], mode: Shad
|
||||
|
||||
var center: String = input_vars[1]
|
||||
var rotation: String = input_vars[2]
|
||||
var use_degrees: String = input_vars[3]
|
||||
var use_degrees: String = "true" if get_option_index(0) == 0 else "false"
|
||||
|
||||
return output_vars[0] + " = rotate_uv(%s, %s, %s, %s);" % [uv, center, rotation, use_degrees]
|
||||
|
@ -2,10 +2,6 @@
|
||||
class_name VisualShaderNodeUVSpherize extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, Vector2(0.5, 0.5));
|
||||
_set_input_port_default_value(2, 10.0);
|
||||
_set_input_port_default_value(3, Vector2(0.0, 0.0));
|
||||
|
||||
set_output_port_for_preview(0)
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -43,6 +39,17 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_SCALAR
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return Vector2(0.5, 0.5)
|
||||
2:
|
||||
return 10.0
|
||||
3:
|
||||
return Vector2(0.0, 0.0)
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,10 +2,6 @@
|
||||
class_name VisualShaderNodeUVSwirl extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, Vector2(0.5, 0.5))
|
||||
_set_input_port_default_value(2, 10.0)
|
||||
_set_input_port_default_value(3, Vector2(0.0, 0.0))
|
||||
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -43,6 +39,17 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_SCALAR
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return Vector2(0.5, 0.5)
|
||||
2:
|
||||
return 10.0
|
||||
3:
|
||||
return Vector2(0.0, 0.0)
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,9 +2,6 @@
|
||||
class_name VisualShaderNodeUVTilingAndOffset extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, Vector2(1.0, 1.0))
|
||||
_set_input_port_default_value(2, Vector2(0.0, 0.0))
|
||||
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -38,6 +35,15 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_VECTOR_2D
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return Vector2(1.0, 1.0)
|
||||
2:
|
||||
return Vector2(0.0, 0.0)
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
@ -2,10 +2,6 @@
|
||||
class_name VisualShaderNodeUVTwirl extends VisualShaderNodeCustom
|
||||
|
||||
func _init() -> void:
|
||||
_set_input_port_default_value(1, Vector2(0.5, 0.5))
|
||||
_set_input_port_default_value(2, 10.0)
|
||||
_set_input_port_default_value(3, Vector2(0.0, 0.0))
|
||||
|
||||
output_port_for_preview = 0
|
||||
|
||||
func _get_name() -> String:
|
||||
@ -43,6 +39,17 @@ func _get_input_port_type(port: int) -> VisualShaderNode.PortType:
|
||||
return PORT_TYPE_SCALAR
|
||||
return PORT_TYPE_SCALAR
|
||||
|
||||
func _get_input_port_default_value(port: int) -> Variant:
|
||||
match port:
|
||||
1:
|
||||
return Vector2(0.5, 0.5)
|
||||
2:
|
||||
return 10.0
|
||||
3:
|
||||
return Vector2(0.0, 0.0)
|
||||
_:
|
||||
return null
|
||||
|
||||
func _get_output_port_count() -> int:
|
||||
return 1
|
||||
|
||||
|
Reference in New Issue
Block a user