| 1234567891011121314151617181920212223242526272829303132 |
- function make_clone_run(vert: node_shader_t, frag: node_shader_t) {
- node_shader_add_uniform(frag, "vec2 cloneDelta", "_cloneDelta");
- ///if (krom_direct3d11 || krom_direct3d12 || krom_metal || krom_vulkan)
- node_shader_write(frag, "vec2 texCoordInp = texelFetch(gbuffer2, ivec2((sp.xy + cloneDelta) * gbufferSize), 0).ba;");
- ///else
- node_shader_write(frag, "vec2 texCoordInp = texelFetch(gbuffer2, ivec2((sp.x + cloneDelta.x) * gbufferSize.x, (1.0 - (sp.y + cloneDelta.y)) * gbufferSize.y), 0).ba;");
- ///end
- node_shader_write(frag, "vec3 texpaint_pack_sample = textureLod(texpaint_pack_undo, texCoordInp, 0.0).rgb;");
- let base: string = "textureLod(texpaint_undo, texCoordInp, 0.0).rgb";
- let rough: string = "texpaint_pack_sample.g";
- let met: string = "texpaint_pack_sample.b";
- let occ: string = "texpaint_pack_sample.r";
- let nortan: string = "textureLod(texpaint_nor_undo, texCoordInp, 0.0).rgb";
- let height: string = "0.0";
- let opac: string = "1.0";
- node_shader_write(frag, "vec3 basecol = " + base + ";");
- node_shader_write(frag, "float roughness = " + rough + ";");
- node_shader_write(frag, "float metallic = " + met + ";");
- node_shader_write(frag, "float occlusion = " + occ + ";");
- node_shader_write(frag, "vec3 nortan = " + nortan + ";");
- node_shader_write(frag, "float height = " + height + ";");
- node_shader_write(frag, "float mat_opacity = " + opac + ";");
- node_shader_write(frag, "float opacity = mat_opacity * brushOpacity;");
- if (context_raw.material.paint_emis) {
- node_shader_write(frag, "float emis = 0.0;");
- }
- if (context_raw.material.paint_subs) {
- node_shader_write(frag, "float subs = 0.0;");
- }
- }
|