Improve colorid sampling

This commit is contained in:
luboslenco
2020-03-20 14:03:01 +01:00
parent 7e06eea87f
commit 975b6fd6cd
2 changed files with 3 additions and 12 deletions
+3 -6
View File
@@ -6,13 +6,10 @@ import arm.node.MaterialShader;
class MakeDiscard {
public static function colorId(vert: MaterialShader, frag: MaterialShader) {
vert.add_out('vec2 texCoordPick');
vert.write('texCoordPick = fract(subtex);');
frag.add_uniform('sampler2D texpaint_colorid'); // 1x1 picker
frag.add_uniform('sampler2D texcolorid', '_texcolorid'); // color map
frag.add_uniform('vec2 texcoloridSize', '_texcoloridSize'); // color map
frag.write('vec3 c1 = texelFetch(texpaint_colorid, ivec2(0, 0), 0).rgb;');
frag.write('vec3 c2 = texelFetch(texcolorid, ivec2(texCoordPick * texcoloridSize), 0).rgb;');
frag.write('vec3 c2 = textureLod(texcolorid, subtex, 0).rgb;');
#if kha_opengl
frag.write('if (c1 != c2) discard;');
#else
@@ -22,7 +19,7 @@ class MakeDiscard {
public static function face(vert: MaterialShader, frag: MaterialShader) {
vert.add_out('vec2 texCoordPick');
vert.write('texCoordPick = fract(subtex);');
vert.write('texCoordPick = subtex;');
frag.add_uniform('sampler2D gbuffer2');
frag.add_uniform('sampler2D textrianglemap', '_textrianglemap'); // triangle map
frag.add_uniform('float textrianglemapSize', '_texpaintSize');
@@ -33,7 +30,7 @@ class MakeDiscard {
frag.write('vec2 texCoordInp = texelFetch(gbuffer2, ivec2(inp.x * gbufferSize.x, inp.y * gbufferSize.y), 0).ba;');
#end
frag.write('vec4 c1 = texelFetch(textrianglemap, ivec2(texCoordInp * textrianglemapSize), 0);');
frag.write('vec4 c2 = texelFetch(textrianglemap, ivec2(texCoordPick * textrianglemapSize), 0);');
frag.write('vec4 c2 = textureLod(textrianglemap, texCoordPick, 0);');
#if kha_opengl
frag.write('if (c1 != c2) discard;');
#else
-6
View File
@@ -117,12 +117,6 @@ class Uniforms {
vec2.set(-eps, eps, 0.0);
return vec2;
}
if (link == "_texcoloridSize") {
if (Project.assets.length == 0) return vec2;
var img = UISidebar.inst.getImage(Project.assets[UISidebar.inst.colorIdHandle.position]);
vec2.set(img.width, img.height, 0);
return vec2;
}
if (link == "_gbufferSize") {
vec2.set(0, 0, 0);
var gbuffer2 = RenderPath.active.renderTargets.get("gbuffer2");