summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/GFSDK_WaveWorks_Attributes.fxh370
-rw-r--r--include/GFSDK_WaveWorks_Common.fxh16
-rw-r--r--include/GFSDK_WaveWorks_Quadtree.fxh136
3 files changed, 261 insertions, 261 deletions
diff --git a/include/GFSDK_WaveWorks_Attributes.fxh b/include/GFSDK_WaveWorks_Attributes.fxh
index 840243c..13a32b0 100644
--- a/include/GFSDK_WaveWorks_Attributes.fxh
+++ b/include/GFSDK_WaveWorks_Attributes.fxh
@@ -64,53 +64,53 @@
#define GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_SAMPLER_TEXTUREARRAY(SampLabel,TexLabel,Regoff) GFSDK_WAVEWORKS_DECLARE_ATTR_VS_SAMPLER_TEXTUREARRAY(SampLabel,TexLabel,Regoff)
#endif
-GFSDK_WAVEWORKS_BEGIN_ATTR_DISPLACEMENT_CBUFFER(nvsf_attr_vs_buffer)
-GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_CONSTANT(float3, nvsf_g_WorldEye, 0)
+GFSDK_WAVEWORKS_BEGIN_ATTR_DISPLACEMENT_CBUFFER(attr_vs_buffer)
+GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_CONSTANT(float3, g_WorldEye, 0)
#if defined( GFSDK_WAVEWORKS_GL )
- GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_CONSTANT(float, nvsf_g_UseTextureArrays, 1)
+ GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_CONSTANT(float, g_UseTextureArrays, 1)
#else
- GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_CONSTANT(float, nvsf_g_Pad1, 1)
+ GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_CONSTANT(float, g_Pad1, 1)
#endif
-GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_CONSTANT(float4, nvsf_g_UVScaleCascade0123, 2)
+GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_CONSTANT(float4, g_UVScaleCascade0123, 2)
GFSDK_WAVEWORKS_END_ATTR_DISPLACEMENT_CBUFFER
-GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_SAMPLER(nvsf_g_samplerDisplacementMap0, nvsf_g_textureDisplacementMap0, 0)
-GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_SAMPLER(nvsf_g_samplerDisplacementMap1, nvsf_g_textureDisplacementMap1, 1)
-GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_SAMPLER(nvsf_g_samplerDisplacementMap2, nvsf_g_textureDisplacementMap2, 2)
-GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_SAMPLER(nvsf_g_samplerDisplacementMap3, nvsf_g_textureDisplacementMap3, 3)
+GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_SAMPLER(g_samplerDisplacementMap0, g_textureDisplacementMap0, 0)
+GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_SAMPLER(g_samplerDisplacementMap1, g_textureDisplacementMap1, 1)
+GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_SAMPLER(g_samplerDisplacementMap2, g_textureDisplacementMap2, 2)
+GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_SAMPLER(g_samplerDisplacementMap3, g_textureDisplacementMap3, 3)
#if defined( GFSDK_WAVEWORKS_GL )
- GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_SAMPLER_TEXTUREARRAY(nvsf_g_samplerDisplacementMapTextureArray, nvsf_g_textureArrayDisplacementMap, 4)
+ GFSDK_WAVEWORKS_DECLARE_ATTR_DISPLACEMENT_SAMPLER_TEXTUREARRAY(g_samplerDisplacementMapTextureArray, g_textureArrayDisplacementMap, 4)
#endif
-GFSDK_WAVEWORKS_BEGIN_ATTR_PS_CBUFFER(nvsf_attr_ps_buffer)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, nvsf_g_TexelLength_x2_PS, 0)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, nvsf_g_Cascade1Scale_PS, 1)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, nvsf_g_Cascade1TexelScale_PS, 2)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, nvsf_g_Cascade1UVOffset_PS, 3)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, nvsf_g_Cascade2Scale_PS, 4)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, nvsf_g_Cascade2TexelScale_PS, 5)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, nvsf_g_Cascade2UVOffset_PS, 6)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, nvsf_g_Cascade3Scale_PS, 7)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, nvsf_g_Cascade3TexelScale_PS, 8)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, nvsf_g_Cascade3UVOffset_PS, 9)
+GFSDK_WAVEWORKS_BEGIN_ATTR_PS_CBUFFER(attr_ps_buffer)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, g_TexelLength_x2_PS, 0)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, g_Cascade1Scale_PS, 1)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, g_Cascade1TexelScale_PS, 2)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, g_Cascade1UVOffset_PS, 3)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, g_Cascade2Scale_PS, 4)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, g_Cascade2TexelScale_PS, 5)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, g_Cascade2UVOffset_PS, 6)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, g_Cascade3Scale_PS, 7)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, g_Cascade3TexelScale_PS, 8)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_CONSTANT(float, g_Cascade3UVOffset_PS, 9)
GFSDK_WAVEWORKS_END_ATTR_PS_CBUFFER
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_SAMPLER(nvsf_g_samplerGradientMap0, nvsf_g_textureGradientMap0, 0)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_SAMPLER(nvsf_g_samplerGradientMap1, nvsf_g_textureGradientMap1, 1)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_SAMPLER(nvsf_g_samplerGradientMap2, nvsf_g_textureGradientMap2, 2)
-GFSDK_WAVEWORKS_DECLARE_ATTR_PS_SAMPLER(nvsf_g_samplerGradientMap3, nvsf_g_textureGradientMap3, 3)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_SAMPLER(g_samplerGradientMap0, g_textureGradientMap0, 0)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_SAMPLER(g_samplerGradientMap1, g_textureGradientMap1, 1)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_SAMPLER(g_samplerGradientMap2, g_textureGradientMap2, 2)
+GFSDK_WAVEWORKS_DECLARE_ATTR_PS_SAMPLER(g_samplerGradientMap3, g_textureGradientMap3, 3)
#if defined( GFSDK_WAVEWORKS_GL )
- GFSDK_WAVEWORKS_DECLARE_ATTR_PS_SAMPLER_TEXTUREARRAY(nvsf_g_samplerGradientMapTextureArray, nvsf_g_textureArrayGradientMap, 4)
+ GFSDK_WAVEWORKS_DECLARE_ATTR_PS_SAMPLER_TEXTUREARRAY(g_samplerGradientMapTextureArray, g_textureArrayGradientMap, 4)
#endif
struct GFSDK_WAVEWORKS_INTERPOLATED_VERTEX_OUTPUT
{
- float4 nvsf_tex_coord_cascade01 SEMANTIC(TEXCOORD0);
- float4 nvsf_tex_coord_cascade23 SEMANTIC(TEXCOORD1);
- float4 nvsf_blend_factor_cascade0123 SEMANTIC(TEXCOORD2);
- float3 nvsf_eye_vec SEMANTIC(TEXCOORD3);
+ float4 tex_coord_cascade01 SEMANTIC(TEXCOORD0);
+ float4 tex_coord_cascade23 SEMANTIC(TEXCOORD1);
+ float4 blend_factor_cascade0123 SEMANTIC(TEXCOORD2);
+ float3 eye_vec SEMANTIC(TEXCOORD3);
};
struct GFSDK_WAVEWORKS_VERTEX_OUTPUT
@@ -124,186 +124,186 @@ struct GFSDK_WAVEWORKS_VERTEX_OUTPUT
GFSDK_WAVEWORKS_VERTEX_OUTPUT GFSDK_WaveWorks_GetDisplacedVertex(GFSDK_WAVEWORKS_VERTEX_INPUT In)
{
// Get starting position and distance to camera
- float3 nvsf_pos_world_undisplaced = GFSDK_WaveWorks_GetUndisplacedVertexWorldPosition(In);
- float nvsf_distance = length(nvsf_g_WorldEye - nvsf_pos_world_undisplaced);
+ float3 pos_world_undisplaced = GFSDK_WaveWorks_GetUndisplacedVertexWorldPosition(In);
+ float distance = length(g_WorldEye - pos_world_undisplaced);
// UVs
- float2 nvsf_uv_world_cascade0 = nvsf_pos_world_undisplaced.xy * nvsf_g_UVScaleCascade0123.x;
- float2 nvsf_uv_world_cascade1 = nvsf_pos_world_undisplaced.xy * nvsf_g_UVScaleCascade0123.y;
- float2 nvsf_uv_world_cascade2 = nvsf_pos_world_undisplaced.xy * nvsf_g_UVScaleCascade0123.z;
- float2 nvsf_uv_world_cascade3 = nvsf_pos_world_undisplaced.xy * nvsf_g_UVScaleCascade0123.w;
+ float2 uv_world_cascade0 = pos_world_undisplaced.xy * g_UVScaleCascade0123.x;
+ float2 uv_world_cascade1 = pos_world_undisplaced.xy * g_UVScaleCascade0123.y;
+ float2 uv_world_cascade2 = pos_world_undisplaced.xy * g_UVScaleCascade0123.z;
+ float2 uv_world_cascade3 = pos_world_undisplaced.xy * g_UVScaleCascade0123.w;
// cascade blend factors
- float4 nvsf_blendfactors;
- float4 nvsf_cascade_spatial_size = 1.0/nvsf_g_UVScaleCascade0123.xyzw;
- nvsf_blendfactors.x = 1.0;
- nvsf_blendfactors.yzw = saturate(0.25*(nvsf_cascade_spatial_size.yzw*24.0-nvsf_distance)/nvsf_cascade_spatial_size.yzw);
- nvsf_blendfactors.yzw *= nvsf_blendfactors.yzw;
+ float4 blendfactors;
+ float4 cascade_spatial_size = 1.0/g_UVScaleCascade0123.xyzw;
+ blendfactors.x = 1.0;
+ blendfactors.yzw = saturate(0.25*(cascade_spatial_size.yzw*24.0-distance)/cascade_spatial_size.yzw);
+ blendfactors.yzw *= blendfactors.yzw;
// Displacement map
#if defined(GFSDK_WAVEWORKS_GL)
- float3 nvsf_displacement;
- if(nvsf_g_UseTextureArrays > 0)
+ float3 displacement;
+ if(g_UseTextureArrays > 0)
{
- nvsf_displacement = nvsf_blendfactors.x * SampleTex2Dlod(nvsf_g_textureArrayDisplacementMap, nvsf_g_samplerDisplacementMapTextureArray, vec3(nvsf_uv_world_cascade0, 0.0), 0).xyz;
- nvsf_displacement += nvsf_blendfactors.y==0? float3(0,0,0) : nvsf_blendfactors.y * SampleTex2Dlod(nvsf_g_textureArrayDisplacementMap, nvsf_g_samplerDisplacementMapTextureArray, vec3(nvsf_uv_world_cascade1, 1.0), 0).xyz;
- nvsf_displacement += nvsf_blendfactors.z==0? float3(0,0,0) : nvsf_blendfactors.z * SampleTex2Dlod(nvsf_g_textureArrayDisplacementMap, nvsf_g_samplerDisplacementMapTextureArray, vec3(nvsf_uv_world_cascade2, 2.0), 0).xyz;
- nvsf_displacement += nvsf_blendfactors.w==0? float3(0,0,0) : nvsf_blendfactors.w * SampleTex2Dlod(nvsf_g_textureArrayDisplacementMap, nvsf_g_samplerDisplacementMapTextureArray, vec3(nvsf_uv_world_cascade3, 3.0), 0).xyz;
+ displacement = blendfactors.x * SampleTex2Dlod(g_textureArrayDisplacementMap, g_samplerDisplacementMapTextureArray, vec3(uv_world_cascade0, 0.0), 0).xyz;
+ displacement += blendfactors.y==0? float3(0,0,0) : blendfactors.y * SampleTex2Dlod(g_textureArrayDisplacementMap, g_samplerDisplacementMapTextureArray, vec3(uv_world_cascade1, 1.0), 0).xyz;
+ displacement += blendfactors.z==0? float3(0,0,0) : blendfactors.z * SampleTex2Dlod(g_textureArrayDisplacementMap, g_samplerDisplacementMapTextureArray, vec3(uv_world_cascade2, 2.0), 0).xyz;
+ displacement += blendfactors.w==0? float3(0,0,0) : blendfactors.w * SampleTex2Dlod(g_textureArrayDisplacementMap, g_samplerDisplacementMapTextureArray, vec3(uv_world_cascade3, 3.0), 0).xyz;
}
else
{
- nvsf_displacement = nvsf_blendfactors.x * SampleTex2Dlod(nvsf_g_textureDisplacementMap0, nvsf_g_samplerDisplacementMap0, nvsf_uv_world_cascade0, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.y==0? float3(0,0,0) : nvsf_blendfactors.y * SampleTex2Dlod(nvsf_g_textureDisplacementMap1, nvsf_g_samplerDisplacementMap1, nvsf_uv_world_cascade1, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.z==0? float3(0,0,0) : nvsf_blendfactors.z * SampleTex2Dlod(nvsf_g_textureDisplacementMap2, nvsf_g_samplerDisplacementMap2, nvsf_uv_world_cascade2, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.w==0? float3(0,0,0) : nvsf_blendfactors.w * SampleTex2Dlod(nvsf_g_textureDisplacementMap3, nvsf_g_samplerDisplacementMap3, nvsf_uv_world_cascade3, 0).xyz;
+ displacement = blendfactors.x * SampleTex2Dlod(g_textureDisplacementMap0, g_samplerDisplacementMap0, uv_world_cascade0, 0).xyz;
+ displacement += blendfactors.y==0? float3(0,0,0) : blendfactors.y * SampleTex2Dlod(g_textureDisplacementMap1, g_samplerDisplacementMap1, uv_world_cascade1, 0).xyz;
+ displacement += blendfactors.z==0? float3(0,0,0) : blendfactors.z * SampleTex2Dlod(g_textureDisplacementMap2, g_samplerDisplacementMap2, uv_world_cascade2, 0).xyz;
+ displacement += blendfactors.w==0? float3(0,0,0) : blendfactors.w * SampleTex2Dlod(g_textureDisplacementMap3, g_samplerDisplacementMap3, uv_world_cascade3, 0).xyz;
}
#else
- float3 nvsf_displacement = nvsf_blendfactors.x * SampleTex2Dlod(nvsf_g_textureDisplacementMap0, nvsf_g_samplerDisplacementMap0, nvsf_uv_world_cascade0, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.y==0? float3(0,0,0) : nvsf_blendfactors.y * SampleTex2Dlod(nvsf_g_textureDisplacementMap1, nvsf_g_samplerDisplacementMap1, nvsf_uv_world_cascade1, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.z==0? float3(0,0,0) : nvsf_blendfactors.z * SampleTex2Dlod(nvsf_g_textureDisplacementMap2, nvsf_g_samplerDisplacementMap2, nvsf_uv_world_cascade2, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.w==0? float3(0,0,0) : nvsf_blendfactors.w * SampleTex2Dlod(nvsf_g_textureDisplacementMap3, nvsf_g_samplerDisplacementMap3, nvsf_uv_world_cascade3, 0).xyz;
+ float3 displacement = blendfactors.x * SampleTex2Dlod(g_textureDisplacementMap0, g_samplerDisplacementMap0, uv_world_cascade0, 0).xyz;
+ displacement += blendfactors.y==0? float3(0,0,0) : blendfactors.y * SampleTex2Dlod(g_textureDisplacementMap1, g_samplerDisplacementMap1, uv_world_cascade1, 0).xyz;
+ displacement += blendfactors.z==0? float3(0,0,0) : blendfactors.z * SampleTex2Dlod(g_textureDisplacementMap2, g_samplerDisplacementMap2, uv_world_cascade2, 0).xyz;
+ displacement += blendfactors.w==0? float3(0,0,0) : blendfactors.w * SampleTex2Dlod(g_textureDisplacementMap3, g_samplerDisplacementMap3, uv_world_cascade3, 0).xyz;
#endif
- float3 nvsf_pos_world = nvsf_pos_world_undisplaced + nvsf_displacement;
+ float3 pos_world = pos_world_undisplaced + displacement;
// Output
GFSDK_WAVEWORKS_VERTEX_OUTPUT Output;
- Output.interp.nvsf_eye_vec = nvsf_g_WorldEye - nvsf_pos_world;
- Output.interp.nvsf_tex_coord_cascade01.xy = nvsf_uv_world_cascade0;
- Output.interp.nvsf_tex_coord_cascade01.zw = nvsf_uv_world_cascade1;
- Output.interp.nvsf_tex_coord_cascade23.xy = nvsf_uv_world_cascade2;
- Output.interp.nvsf_tex_coord_cascade23.zw = nvsf_uv_world_cascade3;
- Output.interp.nvsf_blend_factor_cascade0123 = nvsf_blendfactors;
- Output.pos_world = nvsf_pos_world;
- Output.pos_world_undisplaced = nvsf_pos_world_undisplaced;
- Output.world_displacement = nvsf_displacement;
+ Output.interp.eye_vec = g_WorldEye - pos_world;
+ Output.interp.tex_coord_cascade01.xy = uv_world_cascade0;
+ Output.interp.tex_coord_cascade01.zw = uv_world_cascade1;
+ Output.interp.tex_coord_cascade23.xy = uv_world_cascade2;
+ Output.interp.tex_coord_cascade23.zw = uv_world_cascade3;
+ Output.interp.blend_factor_cascade0123 = blendfactors;
+ Output.pos_world = pos_world;
+ Output.pos_world_undisplaced = pos_world_undisplaced;
+ Output.world_displacement = displacement;
return Output;
}
GFSDK_WAVEWORKS_VERTEX_OUTPUT GFSDK_WaveWorks_GetDisplacedVertexAfterTessellation(float4 In0, float4 In1, float4 In2, float3 BarycentricCoords)
{
// Get starting position
- float3 nvsf_tessellated_ws_position = In0.xyz * BarycentricCoords.x +
+ float3 tessellated_ws_position = In0.xyz * BarycentricCoords.x +
In1.xyz * BarycentricCoords.y +
In2.xyz * BarycentricCoords.z;
- float3 nvsf_pos_world_undisplaced = nvsf_tessellated_ws_position;
+ float3 pos_world_undisplaced = tessellated_ws_position;
// blend factors for cascades
- float4 nvsf_blendfactors;
- float nvsf_distance = length(nvsf_g_WorldEye - nvsf_pos_world_undisplaced);
- float4 nvsf_cascade_spatial_size = 1.0/nvsf_g_UVScaleCascade0123.xyzw;
- nvsf_blendfactors.x = 1.0;
- nvsf_blendfactors.yzw = saturate(0.25*(nvsf_cascade_spatial_size.yzw*24.0-nvsf_distance)/nvsf_cascade_spatial_size.yzw);
- nvsf_blendfactors.yzw *= nvsf_blendfactors.yzw;
+ float4 blendfactors;
+ float distance = length(g_WorldEye - pos_world_undisplaced);
+ float4 cascade_spatial_size = 1.0/g_UVScaleCascade0123.xyzw;
+ blendfactors.x = 1.0;
+ blendfactors.yzw = saturate(0.25*(cascade_spatial_size.yzw*24.0-distance)/cascade_spatial_size.yzw);
+ blendfactors.yzw *= blendfactors.yzw;
// UVs
- float2 nvsf_uv_world_cascade0 = nvsf_pos_world_undisplaced.xy * nvsf_g_UVScaleCascade0123.x;
- float2 nvsf_uv_world_cascade1 = nvsf_pos_world_undisplaced.xy * nvsf_g_UVScaleCascade0123.y;
- float2 nvsf_uv_world_cascade2 = nvsf_pos_world_undisplaced.xy * nvsf_g_UVScaleCascade0123.z;
- float2 nvsf_uv_world_cascade3 = nvsf_pos_world_undisplaced.xy * nvsf_g_UVScaleCascade0123.w;
+ float2 uv_world_cascade0 = pos_world_undisplaced.xy * g_UVScaleCascade0123.x;
+ float2 uv_world_cascade1 = pos_world_undisplaced.xy * g_UVScaleCascade0123.y;
+ float2 uv_world_cascade2 = pos_world_undisplaced.xy * g_UVScaleCascade0123.z;
+ float2 uv_world_cascade3 = pos_world_undisplaced.xy * g_UVScaleCascade0123.w;
// Displacement map
#if defined(GFSDK_WAVEWORKS_GL)
- float3 nvsf_displacement;
- if(nvsf_g_UseTextureArrays > 0)
+ float3 displacement;
+ if(g_UseTextureArrays > 0)
{
- nvsf_displacement = nvsf_blendfactors.x * SampleTex2Dlod(nvsf_g_textureArrayDisplacementMap, nvsf_g_samplerDisplacementMapTextureArray, vec3(nvsf_uv_world_cascade0, 0.0), 0).xyz;
- nvsf_displacement += nvsf_blendfactors.y==0? float3(0,0,0) : nvsf_blendfactors.y * SampleTex2Dlod(nvsf_g_textureArrayDisplacementMap, nvsf_g_samplerDisplacementMapTextureArray, vec3(nvsf_uv_world_cascade1, 1.0), 0).xyz;
- nvsf_displacement += nvsf_blendfactors.z==0? float3(0,0,0) : nvsf_blendfactors.z * SampleTex2Dlod(nvsf_g_textureArrayDisplacementMap, nvsf_g_samplerDisplacementMapTextureArray, vec3(nvsf_uv_world_cascade2, 2.0), 0).xyz;
- nvsf_displacement += nvsf_blendfactors.w==0? float3(0,0,0) : nvsf_blendfactors.w * SampleTex2Dlod(nvsf_g_textureArrayDisplacementMap, nvsf_g_samplerDisplacementMapTextureArray, vec3(nvsf_uv_world_cascade3, 3.0), 0).xyz;
+ displacement = blendfactors.x * SampleTex2Dlod(g_textureArrayDisplacementMap, g_samplerDisplacementMapTextureArray, vec3(uv_world_cascade0, 0.0), 0).xyz;
+ displacement += blendfactors.y==0? float3(0,0,0) : blendfactors.y * SampleTex2Dlod(g_textureArrayDisplacementMap, g_samplerDisplacementMapTextureArray, vec3(uv_world_cascade1, 1.0), 0).xyz;
+ displacement += blendfactors.z==0? float3(0,0,0) : blendfactors.z * SampleTex2Dlod(g_textureArrayDisplacementMap, g_samplerDisplacementMapTextureArray, vec3(uv_world_cascade2, 2.0), 0).xyz;
+ displacement += blendfactors.w==0? float3(0,0,0) : blendfactors.w * SampleTex2Dlod(g_textureArrayDisplacementMap, g_samplerDisplacementMapTextureArray, vec3(uv_world_cascade3, 3.0), 0).xyz;
}
else
{
- nvsf_displacement = nvsf_blendfactors.x * SampleTex2Dlod(nvsf_g_textureDisplacementMap0, nvsf_g_samplerDisplacementMap0, nvsf_uv_world_cascade0, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.y==0? float3(0,0,0) : nvsf_blendfactors.y * SampleTex2Dlod(nvsf_g_textureDisplacementMap1, nvsf_g_samplerDisplacementMap1, nvsf_uv_world_cascade1, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.z==0? float3(0,0,0) : nvsf_blendfactors.z * SampleTex2Dlod(nvsf_g_textureDisplacementMap2, nvsf_g_samplerDisplacementMap2, nvsf_uv_world_cascade2, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.w==0? float3(0,0,0) : nvsf_blendfactors.w * SampleTex2Dlod(nvsf_g_textureDisplacementMap3, nvsf_g_samplerDisplacementMap3, nvsf_uv_world_cascade3, 0).xyz;
+ displacement = blendfactors.x * SampleTex2Dlod(g_textureDisplacementMap0, g_samplerDisplacementMap0, uv_world_cascade0, 0).xyz;
+ displacement += blendfactors.y==0? float3(0,0,0) : blendfactors.y * SampleTex2Dlod(g_textureDisplacementMap1, g_samplerDisplacementMap1, uv_world_cascade1, 0).xyz;
+ displacement += blendfactors.z==0? float3(0,0,0) : blendfactors.z * SampleTex2Dlod(g_textureDisplacementMap2, g_samplerDisplacementMap2, uv_world_cascade2, 0).xyz;
+ displacement += blendfactors.w==0? float3(0,0,0) : blendfactors.w * SampleTex2Dlod(g_textureDisplacementMap3, g_samplerDisplacementMap3, uv_world_cascade3, 0).xyz;
}
#else
- float3 nvsf_displacement = nvsf_blendfactors.x * SampleTex2Dlod(nvsf_g_textureDisplacementMap0, nvsf_g_samplerDisplacementMap0, nvsf_uv_world_cascade0, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.y==0? float3(0,0,0) : nvsf_blendfactors.y * SampleTex2Dlod(nvsf_g_textureDisplacementMap1, nvsf_g_samplerDisplacementMap1, nvsf_uv_world_cascade1, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.z==0? float3(0,0,0) : nvsf_blendfactors.z * SampleTex2Dlod(nvsf_g_textureDisplacementMap2, nvsf_g_samplerDisplacementMap2, nvsf_uv_world_cascade2, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.w==0? float3(0,0,0) : nvsf_blendfactors.w * SampleTex2Dlod(nvsf_g_textureDisplacementMap3, nvsf_g_samplerDisplacementMap3, nvsf_uv_world_cascade3, 0).xyz;
+ float3 displacement = blendfactors.x * SampleTex2Dlod(g_textureDisplacementMap0, g_samplerDisplacementMap0, uv_world_cascade0, 0).xyz;
+ displacement += blendfactors.y==0? float3(0,0,0) : blendfactors.y * SampleTex2Dlod(g_textureDisplacementMap1, g_samplerDisplacementMap1, uv_world_cascade1, 0).xyz;
+ displacement += blendfactors.z==0? float3(0,0,0) : blendfactors.z * SampleTex2Dlod(g_textureDisplacementMap2, g_samplerDisplacementMap2, uv_world_cascade2, 0).xyz;
+ displacement += blendfactors.w==0? float3(0,0,0) : blendfactors.w * SampleTex2Dlod(g_textureDisplacementMap3, g_samplerDisplacementMap3, uv_world_cascade3, 0).xyz;
#endif
- float3 nvsf_pos_world = nvsf_pos_world_undisplaced + nvsf_displacement;
+ float3 pos_world = pos_world_undisplaced + displacement;
// Output
GFSDK_WAVEWORKS_VERTEX_OUTPUT Output;
- Output.interp.nvsf_eye_vec = nvsf_g_WorldEye - nvsf_pos_world;
- Output.interp.nvsf_tex_coord_cascade01.xy = nvsf_uv_world_cascade0;
- Output.interp.nvsf_tex_coord_cascade01.zw = nvsf_uv_world_cascade1;
- Output.interp.nvsf_tex_coord_cascade23.xy = nvsf_uv_world_cascade2;
- Output.interp.nvsf_tex_coord_cascade23.zw = nvsf_uv_world_cascade3;
- Output.interp.nvsf_blend_factor_cascade0123 = nvsf_blendfactors;
- Output.pos_world = nvsf_pos_world;
- Output.pos_world_undisplaced = nvsf_pos_world_undisplaced;
- Output.world_displacement = nvsf_displacement;
+ Output.interp.eye_vec = g_WorldEye - pos_world;
+ Output.interp.tex_coord_cascade01.xy = uv_world_cascade0;
+ Output.interp.tex_coord_cascade01.zw = uv_world_cascade1;
+ Output.interp.tex_coord_cascade23.xy = uv_world_cascade2;
+ Output.interp.tex_coord_cascade23.zw = uv_world_cascade3;
+ Output.interp.blend_factor_cascade0123 = blendfactors;
+ Output.pos_world = pos_world;
+ Output.pos_world_undisplaced = pos_world_undisplaced;
+ Output.world_displacement = displacement;
return Output;
}
GFSDK_WAVEWORKS_VERTEX_OUTPUT GFSDK_WaveWorks_GetDisplacedVertexAfterTessellationQuad(float4 In0, float4 In1, float4 In2, float4 In3, float2 UV)
{
// Get starting position
- float3 nvsf_tessellated_ws_position = In2.xyz*UV.x*UV.y +
+ float3 tessellated_ws_position = In2.xyz*UV.x*UV.y +
In0.xyz*(1.0-UV.x)*UV.y +
In1.xyz*(1.0-UV.x)*(1.0-UV.y) +
In3.xyz*UV.x*(1.0-UV.y);
- float3 nvsf_pos_world_undisplaced = nvsf_tessellated_ws_position;
+ float3 pos_world_undisplaced = tessellated_ws_position;
// blend factors for cascades
- float4 nvsf_blendfactors;
- float nvsf_distance = length(nvsf_g_WorldEye - nvsf_pos_world_undisplaced);
- float4 nvsf_cascade_spatial_size = 1.0/nvsf_g_UVScaleCascade0123.xyzw;
- nvsf_blendfactors.x = 1.0;
- nvsf_blendfactors.yzw = saturate(0.25*(nvsf_cascade_spatial_size.yzw*24.0-nvsf_distance)/nvsf_cascade_spatial_size.yzw);
- nvsf_blendfactors.yzw *= nvsf_blendfactors.yzw;
+ float4 blendfactors;
+ float distance = length(g_WorldEye - pos_world_undisplaced);
+ float4 cascade_spatial_size = 1.0/g_UVScaleCascade0123.xyzw;
+ blendfactors.x = 1.0;
+ blendfactors.yzw = saturate(0.25*(cascade_spatial_size.yzw*24.0-distance)/cascade_spatial_size.yzw);
+ blendfactors.yzw *= blendfactors.yzw;
// UVs
- float2 nvsf_uv_world_cascade0 = nvsf_pos_world_undisplaced.xy * nvsf_g_UVScaleCascade0123.x;
- float2 nvsf_uv_world_cascade1 = nvsf_pos_world_undisplaced.xy * nvsf_g_UVScaleCascade0123.y;
- float2 nvsf_uv_world_cascade2 = nvsf_pos_world_undisplaced.xy * nvsf_g_UVScaleCascade0123.z;
- float2 nvsf_uv_world_cascade3 = nvsf_pos_world_undisplaced.xy * nvsf_g_UVScaleCascade0123.w;
+ float2 uv_world_cascade0 = pos_world_undisplaced.xy * g_UVScaleCascade0123.x;
+ float2 uv_world_cascade1 = pos_world_undisplaced.xy * g_UVScaleCascade0123.y;
+ float2 uv_world_cascade2 = pos_world_undisplaced.xy * g_UVScaleCascade0123.z;
+ float2 uv_world_cascade3 = pos_world_undisplaced.xy * g_UVScaleCascade0123.w;
// Displacement map
#if defined(GFSDK_WAVEWORKS_GL)
- float3 nvsf_displacement;
- if(nvsf_g_UseTextureArrays > 0)
+ float3 displacement;
+ if(g_UseTextureArrays > 0)
{
- nvsf_displacement = nvsf_blendfactors.x * SampleTex2Dlod(nvsf_g_textureArrayDisplacementMap, nvsf_g_samplerDisplacementMapTextureArray, vec3(nvsf_uv_world_cascade0, 0.0), 0).xyz;
- nvsf_displacement += nvsf_blendfactors.y==0? float3(0,0,0) : nvsf_blendfactors.y * SampleTex2Dlod(nvsf_g_textureArrayDisplacementMap, nvsf_g_samplerDisplacementMapTextureArray, vec3(nvsf_uv_world_cascade1, 1.0), 0).xyz;
- nvsf_displacement += nvsf_blendfactors.z==0? float3(0,0,0) : nvsf_blendfactors.z * SampleTex2Dlod(nvsf_g_textureArrayDisplacementMap, nvsf_g_samplerDisplacementMapTextureArray, vec3(nvsf_uv_world_cascade2, 2.0), 0).xyz;
- nvsf_displacement += nvsf_blendfactors.w==0? float3(0,0,0) : nvsf_blendfactors.w * SampleTex2Dlod(nvsf_g_textureArrayDisplacementMap, nvsf_g_samplerDisplacementMapTextureArray, vec3(nvsf_uv_world_cascade3, 3.0), 0).xyz;
+ displacement = blendfactors.x * SampleTex2Dlod(g_textureArrayDisplacementMap, g_samplerDisplacementMapTextureArray, vec3(uv_world_cascade0, 0.0), 0).xyz;
+ displacement += blendfactors.y==0? float3(0,0,0) : blendfactors.y * SampleTex2Dlod(g_textureArrayDisplacementMap, g_samplerDisplacementMapTextureArray, vec3(uv_world_cascade1, 1.0), 0).xyz;
+ displacement += blendfactors.z==0? float3(0,0,0) : blendfactors.z * SampleTex2Dlod(g_textureArrayDisplacementMap, g_samplerDisplacementMapTextureArray, vec3(uv_world_cascade2, 2.0), 0).xyz;
+ displacement += blendfactors.w==0? float3(0,0,0) : blendfactors.w * SampleTex2Dlod(g_textureArrayDisplacementMap, g_samplerDisplacementMapTextureArray, vec3(uv_world_cascade3, 3.0), 0).xyz;
}
else
{
- nvsf_displacement = nvsf_blendfactors.x * SampleTex2Dlod(nvsf_g_textureDisplacementMap0, nvsf_g_samplerDisplacementMap0, nvsf_uv_world_cascade0, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.y==0? float3(0,0,0) : nvsf_blendfactors.y * SampleTex2Dlod(nvsf_g_textureDisplacementMap1, nvsf_g_samplerDisplacementMap1, nvsf_uv_world_cascade1, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.z==0? float3(0,0,0) : nvsf_blendfactors.z * SampleTex2Dlod(nvsf_g_textureDisplacementMap2, nvsf_g_samplerDisplacementMap2, nvsf_uv_world_cascade2, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.w==0? float3(0,0,0) : nvsf_blendfactors.w * SampleTex2Dlod(nvsf_g_textureDisplacementMap3, nvsf_g_samplerDisplacementMap3, nvsf_uv_world_cascade3, 0).xyz;
+ displacement = blendfactors.x * SampleTex2Dlod(g_textureDisplacementMap0, g_samplerDisplacementMap0, uv_world_cascade0, 0).xyz;
+ displacement += blendfactors.y==0? float3(0,0,0) : blendfactors.y * SampleTex2Dlod(g_textureDisplacementMap1, g_samplerDisplacementMap1, uv_world_cascade1, 0).xyz;
+ displacement += blendfactors.z==0? float3(0,0,0) : blendfactors.z * SampleTex2Dlod(g_textureDisplacementMap2, g_samplerDisplacementMap2, uv_world_cascade2, 0).xyz;
+ displacement += blendfactors.w==0? float3(0,0,0) : blendfactors.w * SampleTex2Dlod(g_textureDisplacementMap3, g_samplerDisplacementMap3, uv_world_cascade3, 0).xyz;
}
#else
- float3 nvsf_displacement = nvsf_blendfactors.x * SampleTex2Dlod(nvsf_g_textureDisplacementMap0, nvsf_g_samplerDisplacementMap0, nvsf_uv_world_cascade0, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.y==0? float3(0,0,0) : nvsf_blendfactors.y * SampleTex2Dlod(nvsf_g_textureDisplacementMap1, nvsf_g_samplerDisplacementMap1, nvsf_uv_world_cascade1, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.z==0? float3(0,0,0) : nvsf_blendfactors.z * SampleTex2Dlod(nvsf_g_textureDisplacementMap2, nvsf_g_samplerDisplacementMap2, nvsf_uv_world_cascade2, 0).xyz;
- nvsf_displacement += nvsf_blendfactors.w==0? float3(0,0,0) : nvsf_blendfactors.w * SampleTex2Dlod(nvsf_g_textureDisplacementMap3, nvsf_g_samplerDisplacementMap3, nvsf_uv_world_cascade3, 0).xyz;
+ float3 displacement = blendfactors.x * SampleTex2Dlod(g_textureDisplacementMap0, g_samplerDisplacementMap0, uv_world_cascade0, 0).xyz;
+ displacement += blendfactors.y==0? float3(0,0,0) : blendfactors.y * SampleTex2Dlod(g_textureDisplacementMap1, g_samplerDisplacementMap1, uv_world_cascade1, 0).xyz;
+ displacement += blendfactors.z==0? float3(0,0,0) : blendfactors.z * SampleTex2Dlod(g_textureDisplacementMap2, g_samplerDisplacementMap2, uv_world_cascade2, 0).xyz;
+ displacement += blendfactors.w==0? float3(0,0,0) : blendfactors.w * SampleTex2Dlod(g_textureDisplacementMap3, g_samplerDisplacementMap3, uv_world_cascade3, 0).xyz;
#endif
- float3 nvsf_pos_world = nvsf_pos_world_undisplaced + nvsf_displacement;
+ float3 pos_world = pos_world_undisplaced + displacement;
// Output
GFSDK_WAVEWORKS_VERTEX_OUTPUT Output;
- Output.interp.nvsf_eye_vec = nvsf_g_WorldEye - nvsf_pos_world;
- Output.interp.nvsf_tex_coord_cascade01.xy = nvsf_uv_world_cascade0;
- Output.interp.nvsf_tex_coord_cascade01.zw = nvsf_uv_world_cascade1;
- Output.interp.nvsf_tex_coord_cascade23.xy = nvsf_uv_world_cascade2;
- Output.interp.nvsf_tex_coord_cascade23.zw = nvsf_uv_world_cascade3;
- Output.interp.nvsf_blend_factor_cascade0123 = nvsf_blendfactors;
- Output.pos_world = nvsf_pos_world;
- Output.pos_world_undisplaced = nvsf_pos_world_undisplaced;
- Output.world_displacement = nvsf_displacement;
+ Output.interp.eye_vec = g_WorldEye - pos_world;
+ Output.interp.tex_coord_cascade01.xy = uv_world_cascade0;
+ Output.interp.tex_coord_cascade01.zw = uv_world_cascade1;
+ Output.interp.tex_coord_cascade23.xy = uv_world_cascade2;
+ Output.interp.tex_coord_cascade23.zw = uv_world_cascade3;
+ Output.interp.blend_factor_cascade0123 = blendfactors;
+ Output.pos_world = pos_world;
+ Output.pos_world_undisplaced = pos_world_undisplaced;
+ Output.world_displacement = displacement;
return Output;
}
@@ -319,83 +319,83 @@ struct GFSDK_WAVEWORKS_SURFACE_ATTRIBUTES
GFSDK_WAVEWORKS_SURFACE_ATTRIBUTES GFSDK_WaveWorks_GetSurfaceAttributes(GFSDK_WAVEWORKS_INTERPOLATED_VERTEX_OUTPUT In)
{
// Calculate eye vector.
- // Beware: 'nvsf_eye_vec' is a large number, 32bit floating point required.
- float3 nvsf_eye_dir = normalize(In.nvsf_eye_vec);
+ // Beware: 'eye_vec' is a large number, 32bit floating point required.
+ float3 eye_dir = normalize(In.eye_vec);
// --------------- Water body color
- float4 nvsf_grad_fold0;
- float4 nvsf_grad_fold1;
- float4 nvsf_grad_fold2;
- float4 nvsf_grad_fold3;
+ float4 grad_fold0;
+ float4 grad_fold1;
+ float4 grad_fold2;
+ float4 grad_fold3;
#if defined(GFSDK_WAVEWORKS_GL)
- float3 nvsf_displacement;
- if(nvsf_g_UseTextureArrays > 0)
+ float3 displacement;
+ if(g_UseTextureArrays > 0)
{
- nvsf_grad_fold0 = SampleTex2D(nvsf_g_textureArrayGradientMap, nvsf_g_samplerGradientMapTextureArray, vec3(In.nvsf_tex_coord_cascade01.xy, 0.0));
- nvsf_grad_fold1 = SampleTex2D(nvsf_g_textureArrayGradientMap, nvsf_g_samplerGradientMapTextureArray, vec3(In.nvsf_tex_coord_cascade01.zw, 1.0));
- nvsf_grad_fold2 = SampleTex2D(nvsf_g_textureArrayGradientMap, nvsf_g_samplerGradientMapTextureArray, vec3(In.nvsf_tex_coord_cascade23.xy, 2.0));
- nvsf_grad_fold3 = SampleTex2D(nvsf_g_textureArrayGradientMap, nvsf_g_samplerGradientMapTextureArray, vec3(In.nvsf_tex_coord_cascade23.zw, 3.0));
+ grad_fold0 = SampleTex2D(g_textureArrayGradientMap, g_samplerGradientMapTextureArray, vec3(In.tex_coord_cascade01.xy, 0.0));
+ grad_fold1 = SampleTex2D(g_textureArrayGradientMap, g_samplerGradientMapTextureArray, vec3(In.tex_coord_cascade01.zw, 1.0));
+ grad_fold2 = SampleTex2D(g_textureArrayGradientMap, g_samplerGradientMapTextureArray, vec3(In.tex_coord_cascade23.xy, 2.0));
+ grad_fold3 = SampleTex2D(g_textureArrayGradientMap, g_samplerGradientMapTextureArray, vec3(In.tex_coord_cascade23.zw, 3.0));
}
else
{
- nvsf_grad_fold0 = SampleTex2D(nvsf_g_textureGradientMap0, nvsf_g_samplerGradientMap0, In.nvsf_tex_coord_cascade01.xy);
- nvsf_grad_fold1 = SampleTex2D(nvsf_g_textureGradientMap1, nvsf_g_samplerGradientMap1, In.nvsf_tex_coord_cascade01.zw);
- nvsf_grad_fold2 = SampleTex2D(nvsf_g_textureGradientMap2, nvsf_g_samplerGradientMap2, In.nvsf_tex_coord_cascade23.xy);
- nvsf_grad_fold3 = SampleTex2D(nvsf_g_textureGradientMap3, nvsf_g_samplerGradientMap3, In.nvsf_tex_coord_cascade23.zw);
+ grad_fold0 = SampleTex2D(g_textureGradientMap0, g_samplerGradientMap0, In.tex_coord_cascade01.xy);
+ grad_fold1 = SampleTex2D(g_textureGradientMap1, g_samplerGradientMap1, In.tex_coord_cascade01.zw);
+ grad_fold2 = SampleTex2D(g_textureGradientMap2, g_samplerGradientMap2, In.tex_coord_cascade23.xy);
+ grad_fold3 = SampleTex2D(g_textureGradientMap3, g_samplerGradientMap3, In.tex_coord_cascade23.zw);
}
#else
- nvsf_grad_fold0 = SampleTex2D(nvsf_g_textureGradientMap0, nvsf_g_samplerGradientMap0, In.nvsf_tex_coord_cascade01.xy);
- nvsf_grad_fold1 = SampleTex2D(nvsf_g_textureGradientMap1, nvsf_g_samplerGradientMap1, In.nvsf_tex_coord_cascade01.zw);
- nvsf_grad_fold2 = SampleTex2D(nvsf_g_textureGradientMap2, nvsf_g_samplerGradientMap2, In.nvsf_tex_coord_cascade23.xy);
- nvsf_grad_fold3 = SampleTex2D(nvsf_g_textureGradientMap3, nvsf_g_samplerGradientMap3, In.nvsf_tex_coord_cascade23.zw);
+ grad_fold0 = SampleTex2D(g_textureGradientMap0, g_samplerGradientMap0, In.tex_coord_cascade01.xy);
+ grad_fold1 = SampleTex2D(g_textureGradientMap1, g_samplerGradientMap1, In.tex_coord_cascade01.zw);
+ grad_fold2 = SampleTex2D(g_textureGradientMap2, g_samplerGradientMap2, In.tex_coord_cascade23.xy);
+ grad_fold3 = SampleTex2D(g_textureGradientMap3, g_samplerGradientMap3, In.tex_coord_cascade23.zw);
#endif
- float2 nvsf_grad;
- nvsf_grad.xy = nvsf_grad_fold0.xy*In.nvsf_blend_factor_cascade0123.x +
- nvsf_grad_fold1.xy*In.nvsf_blend_factor_cascade0123.y*nvsf_g_Cascade1TexelScale_PS +
- nvsf_grad_fold2.xy*In.nvsf_blend_factor_cascade0123.z*nvsf_g_Cascade2TexelScale_PS +
- nvsf_grad_fold3.xy*In.nvsf_blend_factor_cascade0123.w*nvsf_g_Cascade3TexelScale_PS;
+ float2 grad;
+ grad.xy = grad_fold0.xy*In.blend_factor_cascade0123.x +
+ grad_fold1.xy*In.blend_factor_cascade0123.y*g_Cascade1TexelScale_PS +
+ grad_fold2.xy*In.blend_factor_cascade0123.z*g_Cascade2TexelScale_PS +
+ grad_fold3.xy*In.blend_factor_cascade0123.w*g_Cascade3TexelScale_PS;
- float nvsf_c2c_scale = 0.25; // larger cascaded cover larger areas, so foamed texels cover larger area, thus, foam intensity on these needs to be scaled down for uniform foam look
+ float c2c_scale = 0.25; // larger cascaded cover larger areas, so foamed texels cover larger area, thus, foam intensity on these needs to be scaled down for uniform foam look
- float nvsf_foam_turbulent_energy =
+ float foam_turbulent_energy =
// accumulated foam energy with blendfactors
- 100.0*nvsf_grad_fold0.w *
- lerp(nvsf_c2c_scale, nvsf_grad_fold1.w, In.nvsf_blend_factor_cascade0123.y)*
- lerp(nvsf_c2c_scale, nvsf_grad_fold2.w, In.nvsf_blend_factor_cascade0123.z)*
- lerp(nvsf_c2c_scale, nvsf_grad_fold3.w, In.nvsf_blend_factor_cascade0123.w);
+ 100.0*grad_fold0.w *
+ lerp(c2c_scale, grad_fold1.w, In.blend_factor_cascade0123.y)*
+ lerp(c2c_scale, grad_fold2.w, In.blend_factor_cascade0123.z)*
+ lerp(c2c_scale, grad_fold3.w, In.blend_factor_cascade0123.w);
- float nvsf_foam_surface_folding =
+ float foam_surface_folding =
// folding for foam "clumping" on folded areas
max(-100,
- (1.0-nvsf_grad_fold0.z) +
- (1.0-nvsf_grad_fold1.z) +
- (1.0-nvsf_grad_fold2.z) +
- (1.0-nvsf_grad_fold3.z));
+ (1.0-grad_fold0.z) +
+ (1.0-grad_fold1.z) +
+ (1.0-grad_fold2.z) +
+ (1.0-grad_fold3.z));
// Calculate normal here.
- float3 nvsf_normal = normalize(float3(nvsf_grad, nvsf_g_TexelLength_x2_PS));
+ float3 normal = normalize(float3(grad, g_TexelLength_x2_PS));
- float nvsf_hats_c2c_scale = 0.5; // the larger is the wave, the higher is the chance to start breaking at high folding, so folding for smaller cascade s is decreased
- float nvsf_foam_wave_hats =
+ float hats_c2c_scale = 0.5; // the larger is the wave, the higher is the chance to start breaking at high folding, so folding for smaller cascade s is decreased
+ float foam_wave_hats =
10.0*(-0.55 + // this allows hats to appear on breaking places only. Can be tweaked to represent Beaufort scale better
- (1.0-nvsf_grad_fold0.z) +
- nvsf_hats_c2c_scale*(1.0-nvsf_grad_fold1.z) +
- nvsf_hats_c2c_scale*nvsf_hats_c2c_scale*(1.0-nvsf_grad_fold2.z) +
- nvsf_hats_c2c_scale*nvsf_hats_c2c_scale*nvsf_hats_c2c_scale*(1.0-nvsf_grad_fold3.z));
+ (1.0-grad_fold0.z) +
+ hats_c2c_scale*(1.0-grad_fold1.z) +
+ hats_c2c_scale*hats_c2c_scale*(1.0-grad_fold2.z) +
+ hats_c2c_scale*hats_c2c_scale*hats_c2c_scale*(1.0-grad_fold3.z));
// Output
GFSDK_WAVEWORKS_SURFACE_ATTRIBUTES Output;
- Output.normal = nvsf_normal;
- Output.eye_dir = nvsf_eye_dir;
- Output.foam_surface_folding = nvsf_foam_surface_folding;
- Output.foam_turbulent_energy = log(1.0 + nvsf_foam_turbulent_energy);
- Output.foam_wave_hats = nvsf_foam_wave_hats;
+ Output.normal = normal;
+ Output.eye_dir = eye_dir;
+ Output.foam_surface_folding = foam_surface_folding;
+ Output.foam_turbulent_energy = log(1.0 + foam_turbulent_energy);
+ Output.foam_wave_hats = foam_wave_hats;
return Output;
}
diff --git a/include/GFSDK_WaveWorks_Common.fxh b/include/GFSDK_WaveWorks_Common.fxh
index c100c8b..8b13250 100644
--- a/include/GFSDK_WaveWorks_Common.fxh
+++ b/include/GFSDK_WaveWorks_Common.fxh
@@ -34,30 +34,30 @@
*
*/
#if defined(GFSDK_WAVEWORKS_SM4) || defined(GFSDK_WAVEWORKS_SM5)
- #define SampleTex2D(nvsf_texture,nvsf_sampler,nvsf_coords) nvsf_texture.Sample(nvsf_sampler,nvsf_coords)
- #define SampleTex2Dlod(nvsf_texture,nvsf_sampler,nvsf_coords,nvsf_lod) nvsf_texture.SampleLevel(nvsf_sampler,nvsf_coords,nvsf_lod)
+ #define SampleTex2D(texture,sampler,coords) texture.Sample(sampler,coords)
+ #define SampleTex2Dlod(texture,sampler,coords,lod) texture.SampleLevel(sampler,coords,lod)
#define BEGIN_CBUFFER(name,slot) cbuffer name : register(b##slot) {
#define END_CBUFFER };
#define SEMANTIC(x) : x
#elif defined(GFSDK_WAVEWORKS_SM3)
- #define SampleTex2D(nvsf_texture,nvsf_sampler,nvsf_coords) tex2D(nvsf_sampler,nvsf_coords)
- #define SampleTex2Dlod(nvsf_texture,nvsf_sampler,nvsf_coords,nvsf_lod) tex2Dlod(nvsf_sampler,float4(nvsf_coords,0,nvsf_lod))
+ #define SampleTex2D(texture,sampler,coords) tex2D(sampler,coords)
+ #define SampleTex2Dlod(texture,sampler,coords,lod) tex2Dlod(sampler,float4(coords,0,lod))
#define BEGIN_CBUFFER(name,slot)
#define END_CBUFFER
#define SV_Target COLOR
#define SV_Position POSITION
#define SEMANTIC(x) : x
#elif defined(GFSDK_WAVEWORKS_GNM)
- #define SampleTex2D(nvsf_texture,nvsf_sampler,nvsf_coords) nvsf_texture.Sample(nvsf_sampler,nvsf_coords)
- #define SampleTex2Dlod(nvsf_texture,nvsf_sampler,nvsf_coords,nvsf_lod) nvsf_texture.SampleLOD(nvsf_sampler,nvsf_coords,nvsf_lod)
+ #define SampleTex2D(texture,sampler,coords) texture.Sample(sampler,coords)
+ #define SampleTex2Dlod(texture,sampler,coords,lod) texture.SampleLOD(sampler,coords,lod)
#define BEGIN_CBUFFER(name,slot) ConstantBuffer name : register(b##slot) {
#define END_CBUFFER };
#define SV_Target S_TARGET_OUTPUT
#define SV_Position S_POSITION
#define SEMANTIC(x) : x
#elif defined(GFSDK_WAVEWORKS_GL)
- #define SampleTex2D(nvsf_texture,nvsf_sampler,nvsf_coords) texture(nvsf_sampler,nvsf_coords)
- #define SampleTex2Dlod(nvsf_texture,nvsf_sampler,nvsf_coords,nvsf_lod) textureLod(nvsf_sampler,nvsf_coords,nvsf_lod)
+ #define SampleTex2D(texture,sampler,coords) texture(sampler,coords)
+ #define SampleTex2Dlod(texture,sampler,coords,lod) textureLod(sampler,coords,lod)
#define BEGIN_CBUFFER(name,slot)
#define END_CBUFFER
#define SEMANTIC(x)
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