Improve base layer handling
This commit is contained in:
@@ -74,7 +74,6 @@ class MakeMesh {
|
||||
frag.write('float metallic;');
|
||||
frag.write('float occlusion;');
|
||||
frag.write('float opacity;');
|
||||
frag.write('float specular;');
|
||||
frag.write('float matid = 0.0;');
|
||||
|
||||
frag.vVec = true;
|
||||
@@ -88,6 +87,12 @@ class MakeMesh {
|
||||
if (Project.layers[0].isVisible()) {
|
||||
var l = Project.layers[0];
|
||||
|
||||
if (l.objectMask > 0) {
|
||||
var uid = Project.paintObjects[l.objectMask - 1].uid;
|
||||
frag.add_uniform('int objectId', '_uid');
|
||||
frag.write('if ($uid == objectId) {');
|
||||
}
|
||||
|
||||
if (l.paintBase) {
|
||||
frag.add_shared_sampler('sampler2D texpaint');
|
||||
frag.write('vec4 texpaint_sample = textureLodShared(texpaint, texCoord, 0.0);');
|
||||
@@ -100,7 +105,7 @@ class MakeMesh {
|
||||
else {
|
||||
frag.write('vec4 texpaint_sample = vec4(0.0, 0.0, 0.0, 1.0);');
|
||||
}
|
||||
frag.write('basecol = texpaint_sample.rgb;');
|
||||
frag.write('basecol = texpaint_sample.rgb * texpaint_sample.a;');
|
||||
|
||||
if (l.paintNor || MaterialBuilder.emisUsed) {
|
||||
frag.add_shared_sampler('sampler2D texpaint_nor');
|
||||
@@ -184,13 +189,22 @@ class MakeMesh {
|
||||
frag.write('roughness *= ${l.maskOpacity};');
|
||||
frag.write('metallic *= ${l.maskOpacity};');
|
||||
}
|
||||
|
||||
if (l.objectMask > 0) {
|
||||
frag.write('}');
|
||||
frag.write('else {');
|
||||
frag.write('basecol = vec3(0.0, 0.0, 0.0);');
|
||||
frag.write('occlusion = 1.0;');
|
||||
frag.write('roughness = 0.0;');
|
||||
frag.write('metallic = 0.0;');
|
||||
frag.write('}');
|
||||
}
|
||||
}
|
||||
else {
|
||||
frag.write('basecol = vec3(0.0, 0.0, 0.0);');
|
||||
frag.write('occlusion = 1.0;');
|
||||
frag.write('roughness = 1.0;');
|
||||
frag.write('roughness = 0.0;');
|
||||
frag.write('metallic = 0.0;');
|
||||
frag.write('specular = 1.0;');
|
||||
}
|
||||
|
||||
if (Project.layers.length > 1) {
|
||||
|
||||
@@ -314,9 +314,9 @@ class MakePaint {
|
||||
}
|
||||
else {
|
||||
if (eraser) {
|
||||
frag.write('fragColor[0] = vec4(mix(sample_undo.rgb, vec3(${Layers.defaultBase}, ${Layers.defaultBase}, ${Layers.defaultBase}), str), sample_undo.a - str);');
|
||||
frag.write('fragColor[0] = vec4(mix(sample_undo.rgb, vec3(0.0, 0.0, 0.0), str), sample_undo.a - str);');
|
||||
frag.write('fragColor[1] = vec4(0.5, 0.5, 1.0, 0.0);');
|
||||
frag.write('fragColor[2] = vec4(1.0, ${Layers.defaultRough}, 0.0, 0.0);');
|
||||
frag.write('fragColor[2] = vec4(1.0, 0.0, 0.0, 0.0);');
|
||||
}
|
||||
else {
|
||||
frag.add_uniform('sampler2D texpaint_nor_undo', '_texpaint_nor_undo');
|
||||
@@ -326,7 +326,7 @@ class MakePaint {
|
||||
#if kha_direct3d12
|
||||
frag.write('fragColor[0] = vec4(' + MaterialBuilder.blendMode(frag, UITrait.inst.brushBlending, 'sample_undo.rgb', 'basecol', 'str') + ', mat_opacity);');
|
||||
#else
|
||||
frag.write('fragColor[0] = vec4(' + MaterialBuilder.blendMode(frag, UITrait.inst.brushBlending, 'sample_undo.rgb', 'basecol', 'str') + ', 0.0);');
|
||||
frag.write('fragColor[0] = vec4(' + MaterialBuilder.blendMode(frag, UITrait.inst.brushBlending, 'sample_undo.rgb', 'basecol', 'str') + ', max(str, sample_undo.a));');
|
||||
#end
|
||||
frag.write('fragColor[1] = vec4(mix(sample_nor_undo.rgb, nortan, str), matid);');
|
||||
if (Context.material.paintHeight && MaterialBuilder.heightUsed) {
|
||||
|
||||
Reference in New Issue
Block a user