Started preparing color support in easysdf node
This commit is contained in:
parent
55a562c464
commit
d94c4bb4a7
|
@ -27,14 +27,26 @@ func get_filtered_parameter_defs(parameters_filter : String) -> Array:
|
|||
return defs
|
||||
|
||||
func get_output_defs(_show_hidden : bool = false) -> Array:
|
||||
var outputs : Array
|
||||
var color_output : String
|
||||
var gs_output : String
|
||||
match get_scene_type():
|
||||
"SDF3D":
|
||||
return [ { type="sdf3d" } ]
|
||||
outputs = [ { type="sdf3d" } ]
|
||||
color_output = "tex3d"
|
||||
gs_output = "tex3d_gs"
|
||||
_:
|
||||
if editor:
|
||||
return [ { type="rgb" } ]
|
||||
outputs = [ { type="rgb" } ]
|
||||
else:
|
||||
return [ { type="sdf2d" } ]
|
||||
outputs = [ { type="sdf2d" } ]
|
||||
color_output = "rgba"
|
||||
gs_output = "float"
|
||||
outputs.push_back({type=color_output, channel="albedo"})
|
||||
outputs.push_back({type=gs_output, channel="metallic"})
|
||||
outputs.push_back({type=gs_output, channel="roughness"})
|
||||
outputs.push_back({type=color_output, channel="emission"})
|
||||
return outputs
|
||||
|
||||
func get_scene_type() -> String:
|
||||
if scene.empty():
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,20 @@
|
|||
extends "res://addons/material_maker/sdf_builder/sdf2d/union.gd"
|
||||
|
||||
export var channel_name : String
|
||||
export(int, "greyscale", "rgba") var type : int
|
||||
|
||||
func _ready():
|
||||
pass # Replace with function body.
|
||||
|
||||
func get_children_types():
|
||||
return [ "TEX" ]
|
||||
|
||||
func get_parameter_defs():
|
||||
return [
|
||||
]
|
||||
|
||||
func get_includes():
|
||||
return [ ]
|
||||
|
||||
func scene_to_shader_model(scene : Dictionary, uv : String = "$uv", editor : bool = false) -> Dictionary:
|
||||
return {}
|
|
@ -90,7 +90,8 @@ func scene_to_shader_model(scene : Dictionary, uv : String = "$uv", editor = fal
|
|||
_:
|
||||
print("Unsupported parameter %s of type %s" % [ p.name, p.type ])
|
||||
return {}
|
||||
shader_model.includes = get_includes(scene)
|
||||
if ! shader_model.empty():
|
||||
shader_model.includes = get_includes(scene)
|
||||
return shader_model
|
||||
|
||||
func generate_rotate_3d(variable, _scene) -> String:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=50 format=2]
|
||||
[gd_scene load_steps=51 format=2]
|
||||
|
||||
[ext_resource path="res://addons/material_maker/sdf_builder/sdf2d/circle.gd" type="Script" id=1]
|
||||
[ext_resource path="res://addons/material_maker/sdf_builder/sdf_builder.gd" type="Script" id=2]
|
||||
|
@ -36,6 +36,7 @@
|
|||
[ext_resource path="res://addons/material_maker/sdf_builder/sdf3d/revolution.gd" type="Script" id=34]
|
||||
[ext_resource path="res://addons/material_maker/sdf_builder/sdf3d/cylinder.gd" type="Script" id=35]
|
||||
[ext_resource path="res://addons/material_maker/sdf_builder/sdf2d/polygon.gd" type="Script" id=36]
|
||||
[ext_resource path="res://addons/material_maker/sdf_builder/sdf2d/color.gd" type="Script" id=37]
|
||||
|
||||
[sub_resource type="AtlasTexture" id=1]
|
||||
flags = 4
|
||||
|
@ -246,6 +247,34 @@ script = ExtResource( 13 )
|
|||
item_type = "Morph"
|
||||
item_category = "SDF2D"
|
||||
|
||||
[node name="Color" type="Node" parent="SDF2D"]
|
||||
|
||||
[node name="Albedo" type="Node" parent="SDF2D/Color"]
|
||||
script = ExtResource( 37 )
|
||||
item_type = "Albedo2D"
|
||||
item_category = "SDF2D"
|
||||
channel_name = "albedo"
|
||||
type = 1
|
||||
|
||||
[node name="Metallic" type="Node" parent="SDF2D/Color"]
|
||||
script = ExtResource( 37 )
|
||||
item_type = "Metallic2D"
|
||||
item_category = "SDF2D"
|
||||
channel_name = "metallic"
|
||||
|
||||
[node name="Roughness" type="Node" parent="SDF2D/Color"]
|
||||
script = ExtResource( 37 )
|
||||
item_type = "Roughness2D"
|
||||
item_category = "SDF2D"
|
||||
channel_name = "roughness"
|
||||
|
||||
[node name="Emission" type="Node" parent="SDF2D/Color"]
|
||||
script = ExtResource( 37 )
|
||||
item_type = "Albedo2D"
|
||||
item_category = "SDF2D"
|
||||
channel_name = "emission"
|
||||
type = 1
|
||||
|
||||
[node name="SDF3D" type="Node" parent="."]
|
||||
|
||||
[node name="Shape" type="Node" parent="SDF3D"]
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
extends "res://material_maker/panels/preview_2d/preview_2d_panel.gd"
|
||||
|
||||
func _ready():
|
||||
pass # Replace with function body.
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
[gd_scene load_steps=7 format=2]
|
||||
|
||||
[ext_resource path="res://material_maker/panels/preview_2d/preview_2d_panel.tscn" type="PackedScene" id=1]
|
||||
|
||||
[sub_resource type="Shader" id=2]
|
||||
resource_local_to_scene = true
|
||||
code = "shader_type canvas_item;
|
||||
|
||||
void fragment() {
|
||||
COLOR = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
}
|
||||
"
|
||||
|
||||
[sub_resource type="ShaderMaterial" id=3]
|
||||
resource_local_to_scene = true
|
||||
shader = SubResource( 2 )
|
||||
|
||||
[sub_resource type="GDScript" id=1]
|
||||
script/source = "extends \"res://material_maker/panels/preview_2d/preview_2d_panel.gd\"
|
||||
|
||||
func _ready():
|
||||
pass # Replace with function body.
|
||||
"
|
||||
|
||||
[sub_resource type="Shader" id=4]
|
||||
resource_local_to_scene = true
|
||||
|
||||
[sub_resource type="ShaderMaterial" id=5]
|
||||
resource_local_to_scene = true
|
||||
shader = SubResource( 4 )
|
||||
|
||||
[node name="Preview2D" instance=ExtResource( 1 )]
|
||||
material = SubResource( 3 )
|
||||
script = SubResource( 1 )
|
||||
shader = "uniform vec2 preview_2d_size = vec2(100.0);
|
||||
uniform float preview_2d_scale = 1.2;
|
||||
uniform vec2 preview_2d_center = vec2(0.5);
|
||||
uniform int mode = 0;
|
||||
uniform vec4 background_color_1 = vec4(0.0);
|
||||
uniform vec4 background_color_2 = vec4(1.0);
|
||||
|
||||
void fragment() {
|
||||
vec2 ratio = preview_2d_size;
|
||||
vec2 uv = preview_2d_center+(UV-0.5)*preview_2d_scale*ratio/min(ratio.x, ratio.y);
|
||||
if (mode == 2 && (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0)) {
|
||||
COLOR = vec4(0.0);
|
||||
} else {
|
||||
if (mode == 1) {
|
||||
uv = fract(uv);
|
||||
}
|
||||
vec4 image = preview_2d_postprocessed(uv);
|
||||
float checkerboard = mod(floor(uv.x*32.0)+floor(uv.y*32.0), 2.0);
|
||||
vec3 image_with_background = mix(mix(background_color_1, background_color_2, checkerboard).rgb, image.rgb, image.a);
|
||||
COLOR = vec4(image_with_background, 1.0);
|
||||
}
|
||||
}
|
||||
"
|
||||
shader_accumulate = "uniform sampler2D sum;
|
||||
uniform bool clear = false;
|
||||
uniform vec2 preview_2d_size = vec2(100.0);
|
||||
uniform float preview_2d_scale = 1.2;
|
||||
uniform vec2 preview_2d_center = vec2(0.5);
|
||||
|
||||
void fragment() {
|
||||
vec2 ratio = preview_2d_size;
|
||||
vec2 jitter_uv = UV+0.75*fract(sin(vec2(TIME, TIME*0.5)*43758.5453123))/preview_2d_size;
|
||||
vec2 uv = preview_2d_center+(jitter_uv-0.5)*preview_2d_scale*ratio/min(ratio.x, ratio.y);
|
||||
if (clear) {
|
||||
COLOR = preview_2d(uv);
|
||||
} else {
|
||||
COLOR = textureLod(sum, UV, 0.0)+preview_2d(uv);
|
||||
}
|
||||
}
|
||||
"
|
||||
shader_divide = "shader_type canvas_item;
|
||||
|
||||
uniform sampler2D sum;
|
||||
uniform int divide = 1;
|
||||
|
||||
void fragment() {
|
||||
COLOR = vec4(texture(sum, UV).rgb/float(divide), 1.0);
|
||||
}"
|
||||
|
||||
[node name="ContextMenu" parent="." index="15"]
|
||||
items = [ "Reset view", null, 0, false, false, 0, 0, null, "", false ]
|
||||
|
||||
[node name="View" parent="ContextMenu" index="0"]
|
||||
items = [ "Extend", null, 2, true, false, 0, 0, null, "", false, "Repeat", null, 2, false, false, 1, 0, null, "", false, "Clamp", null, 2, false, false, 2, 0, null, "", false, "Temporal AA", null, 2, false, false, 3, 0, null, "", false ]
|
||||
|
||||
[node name="Iteration" parent="Accumulate" index="0"]
|
||||
material = SubResource( 5 )
|
|
@ -104,7 +104,6 @@ func on_float_parameters_changed(parameter_changes : Dictionary) -> bool:
|
|||
break
|
||||
return return_value
|
||||
|
||||
|
||||
func _on_Preview3D_resized():
|
||||
if viewport != null:
|
||||
viewport.size = rect_size
|
||||
|
|
|
@ -103,8 +103,12 @@ mouse_filter = 1
|
|||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource( 1 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Viewport" type="Viewport" parent="."]
|
||||
size = Vector2( 1, 1 )
|
||||
handle_input_locally = false
|
||||
render_target_update_mode = 3
|
||||
physics_object_picking = true
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[gd_scene load_steps=8 format=2]
|
||||
|
||||
[ext_resource path="res://addons/material_maker/engine/gen_sdf.gd" type="Script" id=1]
|
||||
[ext_resource path="res://material_maker/panels/preview_2d/preview_2d_panel.tscn" type="PackedScene" id=2]
|
||||
[ext_resource path="res://material_maker/windows/sdf_builder/preview_2d.tscn" type="PackedScene" id=2]
|
||||
[ext_resource path="res://material_maker/windows/sdf_builder/sdf_builder.gd" type="Script" id=3]
|
||||
[ext_resource path="res://material_maker/windows/sdf_builder/sdf_builder_tree.gd" type="Script" id=4]
|
||||
[ext_resource path="res://material_maker/windows/sdf_builder/preview_3d.tscn" type="PackedScene" id=5]
|
||||
|
|
Loading…
Reference in New Issue