kong test

This commit is contained in:
luboslenco
2025-04-05 22:22:43 +02:00
parent f657e9ea02
commit e5999905b4
20 changed files with 262 additions and 263 deletions
+4 -4
View File
@@ -4,7 +4,7 @@ function make_brush_run(kong: node_shader_t) {
node_shader_write_frag(kong, "var dist: float = 0.0;");
if (config_raw.brush_3d) {
node_shader_write_frag(kong, "var depth: float = sample_lod(gbufferD, inp.xy, 0.0).r;");
node_shader_write_frag(kong, "var depth: float = sample_lod(gbufferD, gbufferD_sampler, inp.xy, 0.0).r;");
node_shader_add_constant(kong, "invVP: float4x4", "_inv_view_proj_matrix");
node_shader_write_frag(kong, "var winp: float4 = float4(float2(inp.x, 1.0 - inp.y) * 2.0 - 1.0, depth * 2.0 - 1.0, 1.0);");
@@ -15,14 +15,14 @@ function make_brush_run(kong: node_shader_t) {
node_shader_write_attrib_frag(kong, "var wposition: float3 = (constants.W * texpaint_undo[int2(tex_coord.x * textureSize(texpaint_undo, 0).x, tex_coord.y * textureSize(texpaint_undo, 0).y)]).xyz;");
node_shader_write_frag(kong, "var depthlast: float = sample_lod(gbufferD, inplast.xy, 0.0).r;");
node_shader_write_frag(kong, "var depthlast: float = sample_lod(gbufferD, gbufferD_sampler, constants.inplast.xy, 0.0).r;");
node_shader_write_frag(kong, "var winplast: float4 = float4(float2(inplast.x, 1.0 - inplast.y) * 2.0 - 1.0, depthlast * 2.0 - 1.0, 1.0);");
node_shader_write_frag(kong, "var winplast: float4 = float4(float2(constants.inplast.x, 1.0 - constants.inplast.y) * 2.0 - 1.0, depthlast * 2.0 - 1.0, 1.0);");
node_shader_write_frag(kong, "winplast = constants.invVP * winplast;");
node_shader_write_frag(kong, "winplast.xyz /= winplast.w;");
node_shader_write_frag(kong, "dist = distance(wposition, winp.xyz);");
}
node_shader_write_frag(kong, "if (dist > brush_radius) { discard; }");
node_shader_write_frag(kong, "if (dist > constants.brush_radius) { discard; }");
}
+16 -16
View File
@@ -40,7 +40,7 @@ function make_mesh_run(data: material_t, layer_pass: i32 = 0): node_shader_conte
node_shader_add_constant(kong, "WVP: float4x4", "_world_view_proj_matrix");
let lid: i32 = project_layers[0].id;
node_shader_add_texture(kong, "texpaint_vert", "_texpaint_vert" + lid);
node_shader_write_vert(kong, "var meshpos: float3 = sample_lod(texpaint_vert, int2(gl_VertexID % textureSize(texpaint_vert, 0).x, gl_VertexID / textureSize(texpaint_vert, 0).y), 0).xyz;");
node_shader_write_vert(kong, "var meshpos: float3 = sample_lod(texpaint_vert, texpaint_vert_sampler, int2(gl_VertexID % textureSize(texpaint_vert, 0).x, gl_VertexID / textureSize(texpaint_vert, 0).y), 0).xyz;");
// + input.pos.xyz * 0.000001
node_shader_write_vert(kong, "output.pos = constants.WVP * float4(meshpos.xyz, 1.0);");
@@ -54,11 +54,11 @@ function make_mesh_run(data: material_t, layer_pass: i32 = 0): node_shader_conte
node_shader_write_attrib_vert(kong, "var base_vertex0: int = gl_VertexID - (gl_VertexID % 3);");
node_shader_write_attrib_vert(kong, "var base_vertex1: int = base_vertex0 + 1;");
node_shader_write_attrib_vert(kong, "var base_vertex2: int = base_vertex0 + 2;");
node_shader_write_attrib_vert(kong, "var meshpos0: float3 = sample_lod(texpaint_vert, int2(base_vertex0 % textureSize(texpaint_vert, 0).x, base_vertex0 / textureSize(texpaint_vert, 0).y), 0).xyz;");
node_shader_write_attrib_vert(kong, "var meshpos1: float3 = sample_lod(texpaint_vert, int2(base_vertex1 % textureSize(texpaint_vert, 0).x, base_vertex1 / textureSize(texpaint_vert, 0).y), 0).xyz;");
node_shader_write_attrib_vert(kong, "var meshpos2: float3 = sample_lod(texpaint_vert, int2(base_vertex2 % textureSize(texpaint_vert, 0).x, base_vertex2 / textureSize(texpaint_vert, 0).y), 0).xyz;");
node_shader_write_attrib_vert(kong, "var meshpos0: float3 = sample_lod(texpaint_vert, texpaint_vert_sampler, int2(base_vertex0 % textureSize(texpaint_vert, 0).x, base_vertex0 / textureSize(texpaint_vert, 0).y), 0).xyz;");
node_shader_write_attrib_vert(kong, "var meshpos1: float3 = sample_lod(texpaint_vert, texpaint_vert_sampler, int2(base_vertex1 % textureSize(texpaint_vert, 0).x, base_vertex1 / textureSize(texpaint_vert, 0).y), 0).xyz;");
node_shader_write_attrib_vert(kong, "var meshpos2: float3 = sample_lod(texpaint_vert, texpaint_vert_sampler, int2(base_vertex2 % textureSize(texpaint_vert, 0).x, base_vertex2 / textureSize(texpaint_vert, 0).y), 0).xyz;");
node_shader_write_attrib_vert(kong, "var meshnor: float3 = normalize(cross(meshpos2 - meshpos1, meshpos0 - meshpos1));");
node_shader_write_attrib_vert(kong, "output.wnormal = mul(meshnor, constants.N);");
node_shader_write_attrib_vert(kong, "output.wnormal = constants.N * meshnor;");
node_shader_write_attrib_frag(kong, "var n: float3 = normalize(input.wnormal);");
node_shader_add_function(kong, str_pack_float_int16);
@@ -68,11 +68,11 @@ function make_mesh_run(data: material_t, layer_pass: i32 = 0): node_shader_conte
node_shader_add_texture(kong, "gbuffer0");
node_shader_add_texture(kong, "gbuffer1");
node_shader_add_texture(kong, "gbuffer2");
node_shader_write_frag(kong, "var fragcoord: float2 = (wvpposition.xy / wvpposition.w) * 0.5 + 0.5;");
node_shader_write_frag(kong, "var fragcoord: float2 = (input.wvpposition.xy / input.wvpposition.w) * 0.5 + 0.5;");
node_shader_write_frag(kong, "fragcoord.y = 1.0 - fragcoord.y;");
node_shader_write_frag(kong, "var gbuffer0_sample: float4 = sample_lod(gbuffer0, fragcoord, 0.0);");
node_shader_write_frag(kong, "var gbuffer1_sample: float4 = sample_lod(gbuffer1, fragcoord, 0.0);");
node_shader_write_frag(kong, "var gbuffer2_sample: float4 = sample_lod(gbuffer2, fragcoord, 0.0);");
node_shader_write_frag(kong, "var gbuffer0_sample: float4 = sample_lod(gbuffer0, gbuffer0_sampler, fragcoord, 0.0);");
node_shader_write_frag(kong, "var gbuffer1_sample: float4 = sample_lod(gbuffer1, gbuffer1_sampler, fragcoord, 0.0);");
node_shader_write_frag(kong, "var gbuffer2_sample: float4 = sample_lod(gbuffer2, gbuffer2_sampler, fragcoord, 0.0);");
node_shader_write_frag(kong, "var basecol: float3 = gbuffer0_sample.rgb;");
node_shader_write_frag(kong, "var roughness: float = gbuffer2_sample.g;");
node_shader_write_frag(kong, "var metallic: float = gbuffer2_sample.b;");
@@ -186,7 +186,7 @@ function make_mesh_run(data: material_t, layer_pass: i32 = 0): node_shader_conte
if (!slot_layer_is_visible(m)) continue;
node_shader_add_shared_sampler(kong, "texpaint" + m.id);
node_shader_write_frag(kong, "{"); // Group mask is sampled across multiple layers
node_shader_write_frag(kong, "var texpaint_mask_sample" + m.id + ": float = sample_lod_shared(texpaint" + m.id + ", input.tex_coord, 0.0).r;");
node_shader_write_frag(kong, "var texpaint_mask_sample" + m.id + ": float = sample_lod(texpaint" + m.id + ", shared_sampler, input.tex_coord, 0.0).r;");
node_shader_write_frag(kong, "}");
}
node_shader_write_frag(kong, "texpaint_opac *= clamp(" + texpaint_mask + ", 0.0, 1.0);");
@@ -217,7 +217,7 @@ function make_mesh_run(data: material_t, layer_pass: i32 = 0): node_shader_conte
}
if (last_pass && context_raw.draw_wireframe) {
node_shader_write_frag(kong, "basecol *= 1.0 - sample_lod(texuvmap, input.tex_coord, 0.0).r;");
node_shader_write_frag(kong, "basecol *= 1.0 - sample_lod(texuvmap, texuvmap_sampler, input.tex_coord, 0.0).r;");
}
if (make_material_height_used) {
@@ -249,7 +249,7 @@ function make_mesh_run(data: material_t, layer_pass: i32 = 0): node_shader_conte
if (context_raw.viewport_mode == viewport_mode_t.LIT) {
node_shader_write_frag(kong, "basecol = pow(basecol, float3(2.2, 2.2, 2.2));");
node_shader_write_frag(kong, "basecol = pow3(basecol, float3(2.2, 2.2, 2.2));");
if (context_raw.viewport_shader != null) {
node_shader_write_frag(kong, "var output_color: float3;");
@@ -258,8 +258,8 @@ function make_mesh_run(data: material_t, layer_pass: i32 = 0): node_shader_conte
}
else if (context_raw.render_mode == render_mode_t.FORWARD) {
kong.frag_wposition = true;
node_shader_write_frag(kong, "var albedo: float3 = lerp(basecol, float3(0.0, 0.0, 0.0), metallic);");
node_shader_write_frag(kong, "var f0: float3 = lerp(float3(0.04, 0.04, 0.04), basecol, metallic);");
node_shader_write_frag(kong, "var albedo: float3 = lerp3(basecol, float3(0.0, 0.0, 0.0), metallic);");
node_shader_write_frag(kong, "var f0: float3 = lerp3(float3(0.04, 0.04, 0.04), basecol, metallic);");
kong.frag_vvec = true;
node_shader_write_frag(kong, "var dotnv: float = max(0.0, dot(n, vvec));");
node_shader_write_frag(kong, "var env_brdf: float2 = senvmap_brdf[int2(float2(roughness, 1.0 - dotnv) * 256.0)].xy;");
@@ -268,7 +268,7 @@ function make_mesh_run(data: material_t, layer_pass: i32 = 0): node_shader_conte
node_shader_write_frag(kong, "var wreflect: float3 = reflect(-vvec, n);");
node_shader_write_frag(kong, "var envlod: float = roughness * float(constants.envmap_num_mipmaps);");
node_shader_add_function(kong, str_envmap_equirect);
node_shader_write_frag(kong, "var prefiltered_color: float3 = sample_lod(senvmap_radiance, envmap_equirect(wreflect, constants.envmap_data.x), envlod).rgb;");
node_shader_write_frag(kong, "var prefiltered_color: float3 = sample_lod(senvmap_radiance, senvmap_radiance_sampler, envmap_equirect(wreflect, constants.envmap_data.x), envlod).rgb;");
// node_shader_add_constant(kong, "shirr: float4[7]", "_envmap_irradiance");
node_shader_add_constant(kong, "shirr0: float4", "_envmap_irradiance0");
node_shader_add_constant(kong, "shirr1: float4", "_envmap_irradiance1");
@@ -307,7 +307,7 @@ function make_mesh_run(data: material_t, layer_pass: i32 = 0): node_shader_conte
}
if (context_raw.viewport_mode != viewport_mode_t.LIT && context_raw.viewport_mode != viewport_mode_t.PATH_TRACE) {
node_shader_write_frag(kong, "output[1].rgb = pow(output[1].rgb, float3(2.2, 2.2, 2.2));");
node_shader_write_frag(kong, "output[1].rgb = pow3(output[1].rgb, float3(2.2, 2.2, 2.2));");
}
node_shader_write_frag(kong, "n /= (abs(n.x) + abs(n.y) + abs(n.z));");
+4 -4
View File
@@ -80,7 +80,7 @@ function make_mesh_preview_run(data: material_t, matcon: material_context_t): no
let opac: string = "0.0";
let height: string = "0.0";
let nortan: string = "float3(1.0, 1.0, 1.0)";
node_shader_write_frag(kong, "var basecol: float3 = pow(" + base + ", float3(2.2, 2.2, 2.2));");
node_shader_write_frag(kong, "var basecol: float3 = pow3(" + base + ", float3(2.2, 2.2, 2.2));");
node_shader_write_frag(kong, "var roughness: float = " + rough + ";");
node_shader_write_frag(kong, "var metallic: float = " + met + ";");
node_shader_write_frag(kong, "var occlusion: float = " + occ + ";");
@@ -91,7 +91,7 @@ function make_mesh_preview_run(data: material_t, matcon: material_context_t): no
if (decal) {
if (context_raw.tool == workspace_tool_t.TEXT) {
node_shader_add_texture(kong, "textexttool", "_textexttool");
node_shader_write_frag(kong, "opacity *= sample_lod(textexttool, input.tex_coord / float(" + brush_scale + "), 0.0).r;");
node_shader_write_frag(kong, "opacity *= sample_lod(textexttool, textexttool_sampler, input.tex_coord / float(" + brush_scale + "), 0.0).r;");
}
}
if (decal) {
@@ -126,7 +126,7 @@ function make_mesh_preview_run(data: material_t, matcon: material_context_t): no
node_shader_write_frag(kong, "var TBN: float3x3 = cotangent_frame(n, vvec, input.tex_coord);");
node_shader_write_frag(kong, "n = nortan * 2.0 - 1.0;");
node_shader_write_frag(kong, "n.y = -n.y;");
node_shader_write_frag(kong, "n = normalize(mul(n, TBN));");
node_shader_write_frag(kong, "n = normalize(TBN * n);");
}
node_shader_write_frag(kong, "n /= (abs(n.x) + abs(n.y) + abs(n.z));");
@@ -140,7 +140,7 @@ function make_mesh_preview_run(data: material_t, matcon: material_context_t): no
}
else {
node_shader_write_frag(kong, "output[0].rgba = float4(n.x, n.y, lerp(1.0, roughness, opacity), pack_f32_i16(lerp(1.0, metallic, opacity), uint(0)));"); // metallic/matid
node_shader_write_frag(kong, "output[1].rgba = float4(lerp(float3(0.0, 0.0, 0.0), basecol, opacity), occlusion);");
node_shader_write_frag(kong, "output[1].rgba = float4(lerp3(float3(0.0, 0.0, 0.0), basecol, opacity), occlusion);");
}
node_shader_write_frag(kong, "output[2].rgba = float4(0.0, 0.0, 0.0, 0.0);"); // veloc
+2 -2
View File
@@ -68,13 +68,13 @@ function make_sculpt_run(data: material_t, matcon: material_context_t): node_sha
node_shader_write_frag(kong, "var str: float = clamp((constants.brush_radius - dist) * constants.brush_hardness * 400.0, 0.0, 1.0) * opacity;");
node_shader_add_texture(kong, "texpaint_undo", "_texpaint_undo");
node_shader_write_frag(kong, "var sample_undo: float4 = sample_lod(texpaint_undo, input.tex_coord, 0.0);");
node_shader_write_frag(kong, "var sample_undo: float4 = sample_lod(texpaint_undo, texpaint_undo_sampler, input.tex_coord, 0.0);");
node_shader_write_frag(kong, "if (sample_undo.r == 0 && sample_undo.g == 0 && sample_undo.b == 0) { discard; }");
node_shader_add_function(kong, str_octahedron_wrap);
node_shader_add_texture(kong, "gbuffer0_undo");
node_shader_write_frag(kong, "var g0_undo: float2 = sample_lod(gbuffer0_undo, constants.inp.xy, 0.0).rg;");
node_shader_write_frag(kong, "var g0_undo: float2 = sample_lod(gbuffer0_undo, gbuffer0_undo_sampler, constants.inp.xy, 0.0).rg;");
node_shader_write_frag(kong, "var wn: float3;");
node_shader_write_frag(kong, "wn.z = 1.0 - abs(g0_undo.x) - abs(g0_undo.y);");
// node_shader_write_frag(kong, "wn.xy = wn.z >= 0.0 ? g0_undo.xy : octahedron_wrap(g0_undo.xy);");