init
This commit is contained in:
commit
2fe6ca2f65
1473 changed files with 251771 additions and 0 deletions
79
gamedata/shaders/d3d11/tess.ds.hlsl
Normal file
79
gamedata/shaders/d3d11/tess.ds.hlsl
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
#include "common.hlsli"
|
||||
#include "tess.hlsli"
|
||||
|
||||
[domain("tri")]
|
||||
void main(in HS_CONSTANT_DATA_OUTPUT input,
|
||||
in float3 uvw : SV_DomainLocation, in const OutputPatch<p_bumped_new, 3> bp, out p_bumped_new output)
|
||||
{
|
||||
float minc = min(uvw.x, min(uvw.y, uvw.z));
|
||||
|
||||
[flatten]
|
||||
if (minc != 0.0f)
|
||||
{
|
||||
[flatten]
|
||||
if (((1.0f / 3.0f) - minc) > 0.01f)
|
||||
{
|
||||
float fK = (1.0f / 3.0f) / ((1.0f / 3.0f) - minc);
|
||||
fK = minc < 0.1 ? fK : 1.0f;
|
||||
uvw = lerp((1.0f / 3.0f).xxx, uvw, fK);
|
||||
}
|
||||
}
|
||||
|
||||
float u = uvw.x;
|
||||
float v = uvw.y;
|
||||
float w = uvw.z;
|
||||
|
||||
output.tcdh = bp[0].tcdh * w + bp[1].tcdh * v + bp[2].tcdh * u;
|
||||
output.position = bp[0].position * w + bp[1].position * v + bp[2].position * u;
|
||||
output.snow_mask = bp[0].snow_mask * w + bp[1].snow_mask * v + bp[2].snow_mask * u;
|
||||
|
||||
float3 M1 = bp[0].M1 * w + bp[1].M1 * v + bp[2].M1 * u;
|
||||
output.M1 = M1;
|
||||
float3 M2 = bp[0].M2 * w + bp[1].M2 * v + bp[2].M2 * u;
|
||||
output.M2 = M2;
|
||||
float3 M3 = bp[0].M3 * w + bp[1].M3 * v + bp[2].M3 * u;
|
||||
output.M3 = M3;
|
||||
float3 Normal = normalize(float3(M1.z, M2.z, M3.z));
|
||||
float3 triPos = output.position.xyz;
|
||||
|
||||
#if TESS_PN
|
||||
float3 N[3] =
|
||||
{
|
||||
float3(bp[0].M1.z, bp[0].M2.z, bp[0].M3.z),
|
||||
float3(bp[1].M1.z, bp[1].M2.z, bp[1].M3.z),
|
||||
float3(bp[2].M1.z, bp[2].M2.z, bp[2].M3.z)
|
||||
};
|
||||
|
||||
float3 P[3] =
|
||||
{
|
||||
bp[0].position.xyz,
|
||||
bp[1].position.xyz,
|
||||
bp[2].position.xyz
|
||||
};
|
||||
|
||||
ComputePatchVertex(P, N, uvw, input.patch, output.position.xyz, Normal);
|
||||
#endif
|
||||
|
||||
#if TESS_HM
|
||||
ComputeDisplacedVertex(output.position.xyz, Normal, output.tcdh, output.tcdh.xy * dt_params.xy);
|
||||
#endif
|
||||
|
||||
[flatten]
|
||||
if (minc == 0)
|
||||
{
|
||||
output.position.xyz = triPos;
|
||||
}
|
||||
|
||||
output.hpos = mul(m_P, float4(output.position.xyz, 1));
|
||||
|
||||
output.hpos_curr = bp[0].hpos_curr * w + bp[1].hpos_curr * v + bp[2].hpos_curr * u;
|
||||
output.hpos_old = bp[0].hpos_old * w + bp[1].hpos_old * v + bp[2].hpos_old * u;
|
||||
|
||||
#if 0
|
||||
output.hpos_curr = mul(m_P, float4(output.position.xyz, 1.0));
|
||||
output.hpos_old = mul(m_VP_old, float4(mul(m_invV, float4(output.position.xyz, 1.0)).xyz, 1.0));
|
||||
#endif
|
||||
|
||||
output.hpos.xy += m_taa_jitter.xy * output.hpos.w;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue