summaryrefslogtreecommitdiff
path: root/include/GFSDK_WaveWorks_Quadtree.fxh
diff options
context:
space:
mode:
authorJason Maskell <Jason Maskell>2016-08-01 12:10:17 +0700
committerJason Maskell <Jason Maskell>2016-08-01 12:10:17 +0700
commit4f696cb8b1ee6fe6056017272ede68e38abb0564 (patch)
treed8cdb963e00bc8ef60d047c2e647eece6eeaa0bb /include/GFSDK_WaveWorks_Quadtree.fxh
parentDon't need FindDirectX anymore, so deleted it and modified the cmake files. (diff)
downloadwaveworks_archive-4f696cb8b1ee6fe6056017272ede68e38abb0564.tar.xz
waveworks_archive-4f696cb8b1ee6fe6056017272ede68e38abb0564.zip
Removed nvsf_ prefix from all shader variables.
Added manually generated glsl.h files for the OpenGL sample. Breaking DRY but no longer need sed and an external CL call to get glsl. Worth the tradeoff. OpenGL sample now compiles and runs but fails at runtime when loading a texture.
Diffstat (limited to 'include/GFSDK_WaveWorks_Quadtree.fxh')
-rw-r--r--include/GFSDK_WaveWorks_Quadtree.fxh136
1 files changed, 68 insertions, 68 deletions
diff --git a/include/GFSDK_WaveWorks_Quadtree.fxh b/include/GFSDK_WaveWorks_Quadtree.fxh
index b06e437..a3d5fc0 100644
--- a/include/GFSDK_WaveWorks_Quadtree.fxh
+++ b/include/GFSDK_WaveWorks_Quadtree.fxh
@@ -40,78 +40,78 @@
#endif
#if defined( GFSDK_WAVEWORKS_USE_TESSELLATION )
- GFSDK_WAVEWORKS_BEGIN_GEOM_HS_CBUFFER(nvsf_eyepos_buffer)
- GFSDK_WAVEWORKS_DECLARE_GEOM_HS_CONSTANT(float4, nvsf_g_hsWorldEye, 0)
- GFSDK_WAVEWORKS_DECLARE_GEOM_HS_CONSTANT(float4, nvsf_g_tessellationParams, 1)
+ GFSDK_WAVEWORKS_BEGIN_GEOM_HS_CBUFFER(eyepos_buffer)
+ GFSDK_WAVEWORKS_DECLARE_GEOM_HS_CONSTANT(float4, g_hsWorldEye, 0)
+ GFSDK_WAVEWORKS_DECLARE_GEOM_HS_CONSTANT(float4, g_tessellationParams, 1)
GFSDK_WAVEWORKS_END_GEOM_HS_CBUFFER
#endif
-GFSDK_WAVEWORKS_BEGIN_GEOM_VS_CBUFFER(nvsf_geom_buffer)
-GFSDK_WAVEWORKS_DECLARE_GEOM_VS_CONSTANT(float4x3, nvsf_g_matLocalWorld, 0)
-GFSDK_WAVEWORKS_DECLARE_GEOM_VS_CONSTANT(float4, nvsf_g_vsEyePos, 3)
-GFSDK_WAVEWORKS_DECLARE_GEOM_VS_CONSTANT(float4, nvsf_g_MorphParam, 4)
+GFSDK_WAVEWORKS_BEGIN_GEOM_VS_CBUFFER(geom_buffer)
+GFSDK_WAVEWORKS_DECLARE_GEOM_VS_CONSTANT(float4x3, g_matLocalWorld, 0)
+GFSDK_WAVEWORKS_DECLARE_GEOM_VS_CONSTANT(float4, g_vsEyePos, 3)
+GFSDK_WAVEWORKS_DECLARE_GEOM_VS_CONSTANT(float4, g_MorphParam, 4)
GFSDK_WAVEWORKS_END_GEOM_VS_CBUFFER
struct GFSDK_WAVEWORKS_VERTEX_INPUT
{
- float4 nvsf_vPos SEMANTIC(POSITION);
+ float4 vPos SEMANTIC(POSITION);
};
#if !defined(GFSDK_WAVEWORKS_USE_TESSELLATION)
float3 GFSDK_WaveWorks_GetUndisplacedVertexWorldPosition(GFSDK_WAVEWORKS_VERTEX_INPUT In)
{
- float2 nvsf_vpos = In.nvsf_vPos.xy;
+ float2 vpos = In.vPos.xy;
// Use multiple levels of geo-morphing to smooth away LOD boundaries
- float nvsf_geomorph_scale = 0.25f;
+ float geomorph_scale = 0.25f;
- float2 nvsf_geomorph_offset = float2(nvsf_g_MorphParam.w,nvsf_g_MorphParam.w);
- float2 nvsf_vpos_src = nvsf_vpos;
- float2 nvsf_vpos_target = nvsf_vpos_src;
- float nvsf_geomorph_amount = 0.f;
+ float2 geomorph_offset = float2(g_MorphParam.w,g_MorphParam.w);
+ float2 vpos_src = vpos;
+ float2 vpos_target = vpos_src;
+ float geomorph_amount = 0.f;
- for(int nvsf_geomorph_level = 0; nvsf_geomorph_level != 4; ++nvsf_geomorph_level) {
+ for(int geomorph_level = 0; geomorph_level != 4; ++geomorph_level) {
- float2 nvsf_intpart;
- float2 nvsf_rempart = modf(nvsf_geomorph_scale*nvsf_vpos_src.xy,nvsf_intpart);
+ float2 intpart;
+ float2 rempart = modf(geomorph_scale*vpos_src.xy,intpart);
- float2 nvsf_mirror = float2(1.0f, 1.0f);
+ float2 mirror = float2(1.0f, 1.0f);
- if(nvsf_rempart.x > 0.5f)
+ if(rempart.x > 0.5f)
{
- nvsf_rempart.x = 1.0f - nvsf_rempart.x;
- nvsf_mirror.x = -nvsf_mirror.x;
+ rempart.x = 1.0f - rempart.x;
+ mirror.x = -mirror.x;
}
- if(nvsf_rempart.y > 0.5f)
+ if(rempart.y > 0.5f)
{
- nvsf_rempart.y = 1.0f - nvsf_rempart.y;
- nvsf_mirror.y = -nvsf_mirror.y;
+ rempart.y = 1.0f - rempart.y;
+ mirror.y = -mirror.y;
}
- if(0.25f == nvsf_rempart.x && 0.25f == nvsf_rempart.y) nvsf_vpos_target.xy = nvsf_vpos_src.xy - nvsf_geomorph_offset*nvsf_mirror;
- else if(0.25f == nvsf_rempart.x) nvsf_vpos_target.x = nvsf_vpos_src.x + nvsf_geomorph_offset.x*nvsf_mirror.x;
- else if(0.25f == nvsf_rempart.y) nvsf_vpos_target.y = nvsf_vpos_src.y + nvsf_geomorph_offset.y*nvsf_mirror.y;
+ if(0.25f == rempart.x && 0.25f == rempart.y) vpos_target.xy = vpos_src.xy - geomorph_offset*mirror;
+ else if(0.25f == rempart.x) vpos_target.x = vpos_src.x + geomorph_offset.x*mirror.x;
+ else if(0.25f == rempart.y) vpos_target.y = vpos_src.y + geomorph_offset.y*mirror.y;
- float3 nvsf_eyevec = mul(float4(nvsf_vpos_target,0.f,1.f), nvsf_g_matLocalWorld) - nvsf_g_vsEyePos.xyz;
- float nvsf_d = length(nvsf_eyevec);
- float nvsf_geomorph_target_level = log2(nvsf_d * nvsf_g_MorphParam.x) + 1.f;
- nvsf_geomorph_amount = saturate(2.0*(nvsf_geomorph_target_level - float(nvsf_geomorph_level)));
- if(nvsf_geomorph_amount < 1.f)
+ float3 eyevec = mul(float4(vpos_target,0.f,1.f), g_matLocalWorld) - g_vsEyePos.xyz;
+ float d = length(eyevec);
+ float geomorph_target_level = log2(d * g_MorphParam.x) + 1.f;
+ geomorph_amount = saturate(2.0*(geomorph_target_level - float(geomorph_level)));
+ if(geomorph_amount < 1.f)
{
break;
}
else
{
- nvsf_vpos_src = nvsf_vpos_target;
- nvsf_geomorph_scale *= 0.5f;
- nvsf_geomorph_offset *= -2.f;
+ vpos_src = vpos_target;
+ geomorph_scale *= 0.5f;
+ geomorph_offset *= -2.f;
}
}
- nvsf_vpos.xy = lerp(nvsf_vpos_src, nvsf_vpos_target, nvsf_geomorph_amount);
- return mul(float4(nvsf_vpos,In.nvsf_vPos.zw), nvsf_g_matLocalWorld);
+ vpos.xy = lerp(vpos_src, vpos_target, geomorph_amount);
+ return mul(float4(vpos,In.vPos.zw), g_matLocalWorld);
}
#endif
@@ -119,59 +119,59 @@ float3 GFSDK_WaveWorks_GetUndisplacedVertexWorldPosition(GFSDK_WAVEWORKS_VERTEX_
#if defined(GFSDK_WAVEWORKS_USE_TESSELLATION)
float3 GFSDK_WaveWorks_GetUndisplacedVertexWorldPosition(GFSDK_WAVEWORKS_VERTEX_INPUT In)
{
- float2 nvsf_vpos = In.nvsf_vPos.xy;
+ float2 vpos = In.vPos.xy;
// Use multiple levels of geo-morphing to smooth away LOD boundaries
- float nvsf_geomorph_scale = 0.5f;
- float nvsf_geomorph_offset = abs(nvsf_g_MorphParam.w);
- float2 nvsf_vpos_src = nvsf_vpos;
- float2 nvsf_vpos_target = nvsf_vpos_src;
- float nvsf_geomorph_amount = 0.f;
+ float geomorph_scale = 0.5f;
+ float geomorph_offset = abs(g_MorphParam.w);
+ float2 vpos_src = vpos;
+ float2 vpos_target = vpos_src;
+ float geomorph_amount = 0.f;
- //nvsf_vpos_target.x += 0.25*nvsf_geomorph_offset;
- //nvsf_vpos_src.x += 0.25*nvsf_geomorph_offset;
+ //vpos_target.x += 0.25*geomorph_offset;
+ //vpos_src.x += 0.25*geomorph_offset;
- for(int nvsf_geomorph_level = 0; nvsf_geomorph_level != 4; ++nvsf_geomorph_level) {
+ for(int geomorph_level = 0; geomorph_level != 4; ++geomorph_level) {
- float2 nvsf_intpart;
- float2 nvsf_rempart = modf(nvsf_geomorph_scale*nvsf_vpos_src.xy,nvsf_intpart);
- if(0.5f == nvsf_rempart.x)
+ float2 intpart;
+ float2 rempart = modf(geomorph_scale*vpos_src.xy,intpart);
+ if(0.5f == rempart.x)
{
- nvsf_vpos_target.x = nvsf_vpos_src.x + nvsf_geomorph_offset;
+ vpos_target.x = vpos_src.x + geomorph_offset;
}
- if(0.5f == nvsf_rempart.y)
+ if(0.5f == rempart.y)
{
- nvsf_vpos_target.y = nvsf_vpos_src.y + nvsf_geomorph_offset;
+ vpos_target.y = vpos_src.y + geomorph_offset;
}
- float3 nvsf_eyevec = mul(float4(nvsf_vpos_target,0.f,1.f), nvsf_g_matLocalWorld) - nvsf_g_vsEyePos.xyz;
- float nvsf_d = length(nvsf_eyevec);
- float nvsf_geomorph_target_level = log2(nvsf_d * nvsf_g_MorphParam.x) + 1.f;
- nvsf_geomorph_amount = saturate(3.0*(nvsf_geomorph_target_level - float(nvsf_geomorph_level)));
- if(nvsf_geomorph_amount < 1.f) {
+ float3 eyevec = mul(float4(vpos_target,0.f,1.f), g_matLocalWorld) - g_vsEyePos.xyz;
+ float d = length(eyevec);
+ float geomorph_target_level = log2(d * g_MorphParam.x) + 1.f;
+ geomorph_amount = saturate(3.0*(geomorph_target_level - float(geomorph_level)));
+ if(geomorph_amount < 1.f) {
break;
} else {
- nvsf_vpos_src = nvsf_vpos_target;
- nvsf_geomorph_scale *= 0.5f;
- nvsf_geomorph_offset *= 2.f;
+ vpos_src = vpos_target;
+ geomorph_scale *= 0.5f;
+ geomorph_offset *= 2.f;
}
}
- nvsf_vpos.xy = lerp(nvsf_vpos_src, nvsf_vpos_target, nvsf_geomorph_amount);
- return mul(float4(nvsf_vpos,In.nvsf_vPos.zw), nvsf_g_matLocalWorld);
+ vpos.xy = lerp(vpos_src, vpos_target, geomorph_amount);
+ return mul(float4(vpos,In.vPos.zw), g_matLocalWorld);
}
float GFSDK_WaveWorks_GetEdgeTessellationFactor(float4 vertex1, float4 vertex2)
{
- float3 nvsf_edge_center = 0.5*(vertex1.xyz + vertex2.xyz);
- float nvsf_edge_length = length (vertex1.xyz - vertex2.xyz);
- float nvsf_edge_distance = length(nvsf_g_hsWorldEye.xyz - nvsf_edge_center.xyz);
- return nvsf_g_tessellationParams.x * nvsf_edge_length / nvsf_edge_distance;
+ float3 edge_center = 0.5*(vertex1.xyz + vertex2.xyz);
+ float edge_length = length (vertex1.xyz - vertex2.xyz);
+ float edge_distance = length(g_hsWorldEye.xyz - edge_center.xyz);
+ return g_tessellationParams.x * edge_length / edge_distance;
}
float GFSDK_WaveWorks_GetVertexTargetTessellatedEdgeLength(float3 vertex)
{
- float nvsf_vertex_distance = length(nvsf_g_hsWorldEye.xyz - vertex.xyz);
- return nvsf_vertex_distance / nvsf_g_tessellationParams.x;
+ float vertex_distance = length(g_hsWorldEye.xyz - vertex.xyz);
+ return vertex_distance / g_tessellationParams.x;
}
#endif