add : sam groud textures & sam character animation
This commit is contained in:
@@ -7,7 +7,7 @@ float2 WorldToScreenUV(float3 posWS)
|
||||
return ndc * .5 + .5; // [0, 1]
|
||||
}
|
||||
|
||||
float3 GetBillboardPositionWS(float3 PositionOS, float3 PivotWS, float3 ViewDirWS)
|
||||
float3 GetBillboardPositionWS(float3 PositionOS, float3 PivotWS, float3 ViewDirWS, uint EnableFacing)
|
||||
{
|
||||
float3 upWS = normalize(TransformObjectToWorldDir(float3(0, 1, 0)));
|
||||
|
||||
@@ -19,6 +19,13 @@ float3 GetBillboardPositionWS(float3 PositionOS, float3 PivotWS, float3 ViewDirW
|
||||
rightWS = normalize(rightWS);
|
||||
|
||||
float3 forwardWS = normalize(cross(rightWS, upWS));
|
||||
|
||||
// Local object-space axes, used as fallback when facing is disabled
|
||||
float3 localRightWS = normalize(TransformObjectToWorldDir(float3(1, 0, 0)));
|
||||
float3 localForwardWS = normalize(TransformObjectToWorldDir(float3(0, 0, 1)));
|
||||
|
||||
rightWS = lerp(localRightWS, rightWS, (float)EnableFacing);
|
||||
forwardWS = lerp(localForwardWS, forwardWS, (float)EnableFacing);
|
||||
|
||||
float3 pOS = PositionOS.x * rightWS + PositionOS.y * upWS + PositionOS.z * forwardWS;
|
||||
|
||||
@@ -45,6 +52,7 @@ void Ray_float
|
||||
float3 PositionOS,
|
||||
float4 ScreenPos,
|
||||
uint Orthographic,
|
||||
uint EnableFacing,
|
||||
float UvDebug,
|
||||
out float3 OutPosition,
|
||||
out float3 OutColor
|
||||
@@ -67,9 +75,9 @@ void Ray_float
|
||||
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);
|
||||
float3 pWS_2 = GetBillboardPositionWS(pOS_2, pivot, viewDir);
|
||||
float3 pWS_0 = GetBillboardPositionWS(pOS_0, pivot, viewDir, EnableFacing);
|
||||
float3 pWS_1 = GetBillboardPositionWS(pOS_1, pivot, viewDir, EnableFacing);
|
||||
float3 pWS_2 = GetBillboardPositionWS(pOS_2, pivot, viewDir, EnableFacing);
|
||||
|
||||
float2 pSC_0 = ScreenPos.xy;
|
||||
float2 pSC_1 = WorldToScreenUV(pWS_1);
|
||||
|
||||
Reference in New Issue
Block a user