|
@@ -125,6 +125,7 @@ class DecalPBR extends hxsl.Shader {
|
|
|
var pixelTransformedPosition : Vec3;
|
|
|
var projectedPosition : Vec4;
|
|
|
var pixelColor : Vec4;
|
|
|
+ var fadeFactor : Float;
|
|
|
|
|
|
|
|
|
function __init__vertex() {
|
|
@@ -133,7 +134,10 @@ class DecalPBR extends hxsl.Shader {
|
|
|
}
|
|
|
|
|
|
function __init__fragment() {
|
|
|
-
|
|
|
+ output.albedoStrength = USE_ALBEDO ? albedoStrength * pixelColor.a * fadeFactor : 0.0;
|
|
|
+ output.normalStrength = USE_NORMAL ? normalStrength * pixelColor.a * fadeFactor : 0.0;
|
|
|
+ output.pbrStrength = pbrStrength * pixelColor.a * fadeFactor;
|
|
|
+ output.emissiveStrength = emissiveStrength * pixelColor.a * fadeFactor;
|
|
|
}
|
|
|
|
|
|
function getWorlPos( pos : Vec2 ) : Vec3{
|
|
@@ -155,11 +159,10 @@ class DecalPBR extends hxsl.Shader {
|
|
|
var depth = depthMap.get(screenToUv(screenPos));
|
|
|
var ruv = vec4( screenPos, depth, 1 );
|
|
|
var wpos = ruv * matrix;
|
|
|
- var alpha = 1.0;
|
|
|
|
|
|
var localPos = (wpos.xyz / wpos.w);
|
|
|
calculatedUV = localPos.xy;
|
|
|
- var fadeFactor = 1 - clamp( pow( max( 0.0, abs(localPos.z * 2) - fadeStart) / (fadeEnd - fadeStart), fadePower), 0, 1);
|
|
|
+ fadeFactor = 1 - clamp( pow( max( 0.0, abs(localPos.z * 2) - fadeStart) / (fadeEnd - fadeStart), fadePower), 0, 1);
|
|
|
|
|
|
if( CENTERED )
|
|
|
calculatedUV += 0.5;
|
|
@@ -167,13 +170,9 @@ class DecalPBR extends hxsl.Shader {
|
|
|
if( outsideBounds(localPos) )
|
|
|
discard;
|
|
|
|
|
|
- var albedoSt = 0.;
|
|
|
- var normalSt = 0.;
|
|
|
if( USE_ALBEDO ) {
|
|
|
var albedo = albedoTexture.get(calculatedUV);
|
|
|
pixelColor *= albedo;
|
|
|
- alpha = pixelColor.a;
|
|
|
- albedoSt = albedoStrength;
|
|
|
}
|
|
|
|
|
|
if( USE_NORMAL ) {
|
|
@@ -188,13 +187,7 @@ class DecalPBR extends hxsl.Shader {
|
|
|
var tanX = worldTangent.xyz.normalize();
|
|
|
var tanY = n.cross(tanX) * -1;
|
|
|
transformedNormal = (nf.x * tanX + nf.y * tanY + nf.z * n).normalize();
|
|
|
- normalSt = normalStrength;
|
|
|
}
|
|
|
-
|
|
|
- output.albedoStrength = albedoSt * alpha * fadeFactor;
|
|
|
- output.normalStrength = normalSt * alpha * fadeFactor;
|
|
|
- output.pbrStrength = pbrStrength * alpha * fadeFactor;
|
|
|
- output.emissiveStrength = emissiveStrength * alpha * fadeFactor;
|
|
|
}
|
|
|
};
|
|
|
|