wip: tvHead

This commit is contained in:
Alexandre Coirier
2026-06-05 22:29:51 +02:00
parent 2199870593
commit ecb6f94a55
32 changed files with 2667 additions and 9654 deletions
File diff suppressed because it is too large Load Diff
@@ -19,11 +19,13 @@ float3 GetBillboardPositionWS(float3 PositionOS, float3 PivotWS, float3 ViewDirW
rightWS = normalize(rightWS);
float3 forwardWS = normalize(cross(rightWS, upWS));
return PivotWS + PositionOS.x * rightWS + PositionOS.y * upWS + PositionOS.z * forwardWS;
float3 pOS = PositionOS.x * rightWS + PositionOS.y * upWS + PositionOS.z * forwardWS;
return PivotWS + pOS;
}
float3 ApplayerTaperAndScale(float3 PositionOS, float3 Scale)
float3 AppyTaperAndScale(float3 PositionOS, float3 Scale)
{
float taper = lerp(1, Scale.z, saturate(PositionOS.y));
@@ -58,10 +60,12 @@ void Ray_float
);
float3 viewDir = lerp(normalize(pivot - _WorldSpaceCameraPos.xyz), GetViewForwardDir(), Orthographic);
float3 pOS_0 = ApplayerTaperAndScale(PositionOS, scale);
float3 pOS_1 = ApplayerTaperAndScale(float3( .5, PositionOS.y, 0), scale);
float3 pOS_2 = ApplayerTaperAndScale(float3(-.5, PositionOS.y, 0), scale);
float viewAlign = dot(-viewDir, normalize(TransformObjectToWorldDir(float3(0, 1, 0))));
float viewAtten = smoothstep(1, .98, viewAlign);
float3 pOS_0 = AppyTaperAndScale(PositionOS, scale);
float3 pOS_1 = AppyTaperAndScale(float3( .5, PositionOS.y, 0), scale);
float3 pOS_2 = AppyTaperAndScale(float3(-.5, PositionOS.y, 0), scale);
float3 pWS_0 = GetBillboardPositionWS(pOS_0, pivot, viewDir);
float3 pWS_1 = GetBillboardPositionWS(pOS_1, pivot, viewDir);
@@ -73,10 +77,11 @@ void Ray_float
float2 uv = float2(distance(pSC_0.x, pSC_2.x) / distance(pSC_1.x, pSC_2.x), pOS_0.y / scale.y);
float mask = smoothstep(1, .2, abs(uv.x * 2 - 1));
mask *= smoothstep(0, .1, uv.y);
mask *= pow(smoothstep(1, .3, uv.y * .95), 2);
mask *= smoothstep(1, .98, dot(-viewDir, normalize(TransformObjectToWorldDir(float3(0, 1, 0)))));
mask *= viewAtten;
float noise = 1;
if (Intensity > 0)