summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Internal.h2
-rw-r--r--src/Quadtree.cpp16
-rw-r--r--src/Simulation.cpp220
-rw-r--r--src/shader/CalcGradient.fx60
-rw-r--r--src/shader/CalcGradient_glsl_ps.h36
-rw-r--r--src/shader/CalcGradient_glsl_vs.h26
-rw-r--r--src/shader/FoamGeneration.fx54
-rw-r--r--src/shader/FoamGeneration_glsl_ps.h41
-rw-r--r--src/shader/FoamGeneration_glsl_vs.h25
-rw-r--r--src/shader/Quadtree_SM4_sig.fx2
-rw-r--r--src/shader/Quadtree_SM5_sig.fx2
11 files changed, 306 insertions, 178 deletions
diff --git a/src/Internal.h b/src/Internal.h
index d8f64ef..a7a73e7 100644
--- a/src/Internal.h
+++ b/src/Internal.h
@@ -414,7 +414,7 @@ void handle_hr_error(HRESULT hr, const char_type* file, int line);
#endif
#ifdef TARGET_PLATFORM_WINDOWS
-//#define WAVEWORKS_ENABLE_GL WAVEWORKS_ALLOW_GFX
+#define WAVEWORKS_ENABLE_GL WAVEWORKS_ALLOW_GFX
#else
#ifdef TARGET_PLATFORM_MACOSX
#define WAVEWORKS_ENABLE_GL WAVEWORKS_ALLOW_GFX
diff --git a/src/Quadtree.cpp b/src/Quadtree.cpp
index 7f132db..9e0acd8 100644
--- a/src/Quadtree.cpp
+++ b/src/Quadtree.cpp
@@ -96,24 +96,24 @@ enum ShaderInputsGL2
#if WAVEWORKS_ENABLE_D3D11
const GFSDK_WaveWorks_ShaderInput_Desc ShaderInputD3D11Descs[NumShaderInputsD3D11] = {
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_ConstantBuffer, "nvsf_geom_buffer", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::HullShader_ConstantBuffer, "nvsf_eyepos_buffer", 0 }
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_ConstantBuffer, "geom_buffer", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::HullShader_ConstantBuffer, "eyepos_buffer", 0 }
};
#endif
#if WAVEWORKS_ENABLE_GNM
const GFSDK_WaveWorks_ShaderInput_Desc ShaderInputGnmDescs[NumShaderInputsGnm] = {
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_ConstantBuffer, "nvsf_geom_buffer", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::HullShader_ConstantBuffer, "nvsf_eyepos_buffer", 0 }
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_ConstantBuffer, "geom_buffer", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::HullShader_ConstantBuffer, "eyepos_buffer", 0 }
};
#endif
#if WAVEWORKS_ENABLE_GL
const GFSDK_WaveWorks_ShaderInput_Desc ShaderInputGL2Descs[NumShaderInputsGL2] = {
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_UniformLocation, "nvsf_g_matLocalWorld", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_UniformLocation, "nvsf_g_vsEyePos", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_UniformLocation, "nvsf_g_MorphParam", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_AttribLocation, "nvsf_vPos", 0 }
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_UniformLocation, "g_matLocalWorld", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_UniformLocation, "g_vsEyePos", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_UniformLocation, "g_MorphParam", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_AttribLocation, "vPos", 0 }
};
#endif
struct vs_cbuffer
diff --git a/src/Simulation.cpp b/src/Simulation.cpp
index 039d191..146fc7d 100644
--- a/src/Simulation.cpp
+++ b/src/Simulation.cpp
@@ -242,92 +242,92 @@ enum ShaderInputsGL2
#if WAVEWORKS_ENABLE_D3D11
const GFSDK_WaveWorks_ShaderInput_Desc ShaderInputDescsD3D11[NumShaderInputsD3D11] = {
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_ConstantBuffer, "nvsf_attr_vs_buffer", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "nvsf_g_samplerDisplacementMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "nvsf_g_samplerDisplacementMap1", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "nvsf_g_samplerDisplacementMap2", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "nvsf_g_samplerDisplacementMap3", 3 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "nvsf_g_textureDisplacementMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "nvsf_g_textureDisplacementMap1", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "nvsf_g_textureDisplacementMap2", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "nvsf_g_textureDisplacementMap3", 3 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_ConstantBuffer, "nvsf_attr_vs_buffer", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "nvsf_g_samplerDisplacementMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "nvsf_g_samplerDisplacementMap1", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "nvsf_g_samplerDisplacementMap2", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "nvsf_g_samplerDisplacementMap3", 3 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "nvsf_g_textureDisplacementMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "nvsf_g_textureDisplacementMap1", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "nvsf_g_textureDisplacementMap2", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "nvsf_g_textureDisplacementMap3", 3 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_ConstantBuffer, "nvsf_attr_ps_buffer", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "nvsf_g_samplerGradientMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "nvsf_g_samplerGradientMap1", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "nvsf_g_samplerGradientMap2", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "nvsf_g_samplerGradientMap3", 3 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "nvsf_g_textureGradientMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "nvsf_g_textureGradientMap1", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "nvsf_g_textureGradientMap2", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "nvsf_g_textureGradientMap3", 3 }
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_ConstantBuffer, "attr_vs_buffer", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "g_samplerDisplacementMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "g_samplerDisplacementMap1", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "g_samplerDisplacementMap2", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "g_samplerDisplacementMap3", 3 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "g_textureDisplacementMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "g_textureDisplacementMap1", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "g_textureDisplacementMap2", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "g_textureDisplacementMap3", 3 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_ConstantBuffer, "attr_vs_buffer", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "g_samplerDisplacementMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "g_samplerDisplacementMap1", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "g_samplerDisplacementMap2", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "g_samplerDisplacementMap3", 3 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "g_textureDisplacementMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "g_textureDisplacementMap1", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "g_textureDisplacementMap2", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "g_textureDisplacementMap3", 3 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_ConstantBuffer, "attr_ps_buffer", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "g_samplerGradientMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "g_samplerGradientMap1", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "g_samplerGradientMap2", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "g_samplerGradientMap3", 3 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "g_textureGradientMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "g_textureGradientMap1", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "g_textureGradientMap2", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "g_textureGradientMap3", 3 }
};
#endif // WAVEWORKS_ENABLE_D3D11
#if WAVEWORKS_ENABLE_GNM
const GFSDK_WaveWorks_ShaderInput_Desc ShaderInputDescsGnm[NumShaderInputsGnm] = {
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_ConstantBuffer, "nvsf_attr_vs_buffer", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "nvsf_g_samplerDisplacementMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "nvsf_g_samplerDisplacementMap1", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "nvsf_g_samplerDisplacementMap2", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "nvsf_g_samplerDisplacementMap3", 3 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "nvsf_g_textureDisplacementMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "nvsf_g_textureDisplacementMap1", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "nvsf_g_textureDisplacementMap2", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "nvsf_g_textureDisplacementMap3", 3 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_ConstantBuffer, "nvsf_attr_vs_buffer", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "nvsf_g_samplerDisplacementMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "nvsf_g_samplerDisplacementMap1", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "nvsf_g_samplerDisplacementMap2", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "nvsf_g_samplerDisplacementMap3", 3 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "nvsf_g_textureDisplacementMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "nvsf_g_textureDisplacementMap1", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "nvsf_g_textureDisplacementMap2", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "nvsf_g_textureDisplacementMap3", 3 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_ConstantBuffer, "nvsf_attr_ps_buffer", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "nvsf_g_samplerGradientMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "nvsf_g_samplerGradientMap1", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "nvsf_g_samplerGradientMap2", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "nvsf_g_samplerGradientMap3", 3 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "nvsf_g_textureGradientMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "nvsf_g_textureGradientMap1", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "nvsf_g_textureGradientMap2", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "nvsf_g_textureGradientMap3", 3 }
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_ConstantBuffer, "attr_vs_buffer", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "g_samplerDisplacementMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "g_samplerDisplacementMap1", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "g_samplerDisplacementMap2", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Sampler, "g_samplerDisplacementMap3", 3 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "g_textureDisplacementMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "g_textureDisplacementMap1", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "g_textureDisplacementMap2", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::VertexShader_Texture, "g_textureDisplacementMap3", 3 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_ConstantBuffer, "attr_vs_buffer", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "g_samplerDisplacementMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "g_samplerDisplacementMap1", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "g_samplerDisplacementMap2", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Sampler, "g_samplerDisplacementMap3", 3 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "g_textureDisplacementMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "g_textureDisplacementMap1", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "g_textureDisplacementMap2", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::DomainShader_Texture, "g_textureDisplacementMap3", 3 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_ConstantBuffer, "attr_ps_buffer", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "g_samplerGradientMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "g_samplerGradientMap1", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "g_samplerGradientMap2", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Sampler, "g_samplerGradientMap3", 3 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "g_textureGradientMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "g_textureGradientMap1", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "g_textureGradientMap2", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::PixelShader_Texture, "g_textureGradientMap3", 3 }
};
#endif // WAVEWORKS_ENABLE_GNM
#if WAVEWORKS_ENABLE_GL
const GFSDK_WaveWorks_ShaderInput_Desc ShaderInputDescsGL2[NumShaderInputsGL2] = {
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_TextureBindLocation, "nvsf_g_samplerDisplacementMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_TextureBindLocation, "nvsf_g_samplerDisplacementMap1", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_TextureBindLocation, "nvsf_g_samplerDisplacementMap2", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_TextureBindLocation, "nvsf_g_samplerDisplacementMap3", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_TextureBindLocation, "nvsf_g_samplerGradientMap0", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_TextureBindLocation, "nvsf_g_samplerGradientMap1", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_TextureBindLocation, "nvsf_g_samplerGradientMap2", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_TextureBindLocation, "nvsf_g_samplerGradientMap3", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_TextureArrayBindLocation, "nvsf_g_samplerDisplacementMapTextureArray", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_TextureArrayBindLocation, "nvsf_g_samplerGradientMapTextureArray", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_UniformLocation, "nvsf_g_WorldEye", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_UniformLocation, "nvsf_g_UseTextureArrays", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_UniformLocation, "nvsf_g_UVScaleCascade0123", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "nvsf_g_TexelLength_x2_PS", 0 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "nvsf_g_Cascade1Scale_PS", 1 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "nvsf_g_Cascade1TexelScale_PS", 2 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "nvsf_g_Cascade1UVOffset_PS", 3 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "nvsf_g_Cascade2Scale_PS", 4 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "nvsf_g_Cascade2TexelScale_PS", 5 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "nvsf_g_Cascade2UVOffset_PS", 6 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "nvsf_g_Cascade3Scale_PS", 7 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "nvsf_g_Cascade3TexelScale_PS", 8 },
- { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "nvsf_g_Cascade3UVOffset_PS", 9 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_TextureBindLocation, "g_samplerDisplacementMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_TextureBindLocation, "g_samplerDisplacementMap1", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_TextureBindLocation, "g_samplerDisplacementMap2", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_TextureBindLocation, "g_samplerDisplacementMap3", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_TextureBindLocation, "g_samplerGradientMap0", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_TextureBindLocation, "g_samplerGradientMap1", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_TextureBindLocation, "g_samplerGradientMap2", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_TextureBindLocation, "g_samplerGradientMap3", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_TextureArrayBindLocation, "g_samplerDisplacementMapTextureArray", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_TextureArrayBindLocation, "g_samplerGradientMapTextureArray", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_UniformLocation, "g_WorldEye", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_UniformLocation, "g_UseTextureArrays", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_VertexShader_UniformLocation, "g_UVScaleCascade0123", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "g_TexelLength_x2_PS", 0 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "g_Cascade1Scale_PS", 1 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "g_Cascade1TexelScale_PS", 2 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "g_Cascade1UVOffset_PS", 3 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "g_Cascade2Scale_PS", 4 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "g_Cascade2TexelScale_PS", 5 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "g_Cascade2UVOffset_PS", 6 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "g_Cascade3Scale_PS", 7 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "g_Cascade3TexelScale_PS", 8 },
+ { GFSDK_WaveWorks_ShaderInput_Desc::GL_FragmentShader_UniformLocation, "g_Cascade3UVOffset_PS", 9 },
};
#endif // __GL__
struct ps_calcgradient_cbuffer
@@ -353,10 +353,10 @@ struct vs_attr_cbuffer
struct ps_foamgeneration_cbuffer
{
- float nvsf_g_DissipationFactors_BlurExtents;
- float nvsf_g_DissipationFactors_Fadeout;
- float nvsf_g_DissipationFactors_Accumulation;
- float nvsf_g_FoamGenerationThreshold;
+ float g_DissipationFactors_BlurExtents;
+ float g_DissipationFactors_Fadeout;
+ float g_DissipationFactors_Accumulation;
+ float g_FoamGenerationThreshold;
gfsdk_float4 g_SourceComponents;
gfsdk_float4 g_UVOffsets;
};
@@ -772,15 +772,15 @@ HRESULT GFSDK_WaveWorks_Simulation::initShaders()
if(m_d3d._GL2.m_GradCalcProgram == 0) return E_FAIL;
// Gradient calculation program binding
- m_d3d._GL2.m_GradCalcUniformLocation_Scales = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_GradCalcProgram,"nvsf_g_Scales"); CHECK_GL_ERRORS;
- m_d3d._GL2.m_GradCalcUniformLocation_OneBack = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_GradCalcProgram,"nvsf_g_OneTexel_Back"); CHECK_GL_ERRORS;
- m_d3d._GL2.m_GradCalcUniformLocation_OneFront = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_GradCalcProgram,"nvsf_g_OneTexel_Front"); CHECK_GL_ERRORS;
- m_d3d._GL2.m_GradCalcUniformLocation_OneLeft = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_GradCalcProgram,"nvsf_g_OneTexel_Left"); CHECK_GL_ERRORS;
- m_d3d._GL2.m_GradCalcUniformLocation_OneRight = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_GradCalcProgram,"nvsf_g_OneTexel_Right"); CHECK_GL_ERRORS;
- m_d3d._GL2.m_GradCalcTextureBindLocation_DisplacementMap = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_GradCalcProgram,"nvsf_g_samplerDisplacementMap"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_GradCalcUniformLocation_Scales = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_GradCalcProgram,"g_Scales"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_GradCalcUniformLocation_OneBack = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_GradCalcProgram,"g_OneTexel_Back"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_GradCalcUniformLocation_OneFront = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_GradCalcProgram,"g_OneTexel_Front"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_GradCalcUniformLocation_OneLeft = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_GradCalcProgram,"g_OneTexel_Left"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_GradCalcUniformLocation_OneRight = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_GradCalcProgram,"g_OneTexel_Right"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_GradCalcTextureBindLocation_DisplacementMap = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_GradCalcProgram,"g_samplerDisplacementMap"); CHECK_GL_ERRORS;
m_d3d._GL2.m_GradCalcTextureUnit_DisplacementMap = 0;
- m_d3d._GL2.m_GradCalcAttributeLocation_Pos = NVSDK_GLFunctions.glGetAttribLocation(m_d3d._GL2.m_GradCalcProgram, "nvsf_vInPos"); CHECK_GL_ERRORS;
- m_d3d._GL2.m_GradCalcAttributeLocation_TexCoord = NVSDK_GLFunctions.glGetAttribLocation(m_d3d._GL2.m_GradCalcProgram, "nvsf_vInTexCoord"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_GradCalcAttributeLocation_Pos = NVSDK_GLFunctions.glGetAttribLocation(m_d3d._GL2.m_GradCalcProgram, "vInPos"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_GradCalcAttributeLocation_TexCoord = NVSDK_GLFunctions.glGetAttribLocation(m_d3d._GL2.m_GradCalcProgram, "vInTexCoord"); CHECK_GL_ERRORS;
// Creating foam generation program
if(m_d3d._GL2.m_FoamGenProgram != 0) NVSDK_GLFunctions.glDeleteProgram(m_d3d._GL2.m_FoamGenProgram); CHECK_GL_ERRORS;
@@ -788,13 +788,13 @@ HRESULT GFSDK_WaveWorks_Simulation::initShaders()
if(m_d3d._GL2.m_FoamGenProgram == 0) return E_FAIL;
// Foam accumulation program binding
- m_d3d._GL2.m_FoamGenUniformLocation_DissipationFactors = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_FoamGenProgram,"nvsf_g_DissipationFactors"); CHECK_GL_ERRORS;
- m_d3d._GL2.m_FoamGenUniformLocation_SourceComponents = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_FoamGenProgram,"nvsf_g_SourceComponents"); CHECK_GL_ERRORS;
- m_d3d._GL2.m_FoamGenUniformLocation_UVOffsets = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_FoamGenProgram,"nvsf_g_UVOffsets"); CHECK_GL_ERRORS;
- m_d3d._GL2.m_FoamGenTextureBindLocation_EnergyMap = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_FoamGenProgram,"nvsf_g_samplerEnergyMap"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_FoamGenUniformLocation_DissipationFactors = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_FoamGenProgram,"g_DissipationFactors"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_FoamGenUniformLocation_SourceComponents = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_FoamGenProgram,"g_SourceComponents"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_FoamGenUniformLocation_UVOffsets = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_FoamGenProgram,"g_UVOffsets"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_FoamGenTextureBindLocation_EnergyMap = NVSDK_GLFunctions.glGetUniformLocation(m_d3d._GL2.m_FoamGenProgram,"g_samplerEnergyMap"); CHECK_GL_ERRORS;
m_d3d._GL2.m_FoamGenTextureUnit_EnergyMap = 0;
- m_d3d._GL2.m_FoamGenAttributeLocation_Pos = NVSDK_GLFunctions.glGetAttribLocation(m_d3d._GL2.m_FoamGenProgram, "nvsf_vInPos"); CHECK_GL_ERRORS;
- m_d3d._GL2.m_FoamGenAttributeLocation_TexCoord = NVSDK_GLFunctions.glGetAttribLocation(m_d3d._GL2.m_FoamGenProgram, "nvsf_vInTexCoord"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_FoamGenAttributeLocation_Pos = NVSDK_GLFunctions.glGetAttribLocation(m_d3d._GL2.m_FoamGenProgram, "vInPos"); CHECK_GL_ERRORS;
+ m_d3d._GL2.m_FoamGenAttributeLocation_TexCoord = NVSDK_GLFunctions.glGetAttribLocation(m_d3d._GL2.m_FoamGenProgram, "vInTexCoord"); CHECK_GL_ERRORS;
}
break;
#endif
@@ -1457,10 +1457,10 @@ HRESULT GFSDK_WaveWorks_Simulation::updateGradientMapsD3D11(Graphics_Context* pG
D3D11_CB_Updater<ps_foamgeneration_cbuffer> cbu(pDC_d3d11,m_d3d._11.m_pd3d11FoamGenPixelShaderCB);
cbu.cb().g_SourceComponents = gfsdk_make_float4(0,0,0.0f,1.0f); // getting component W of grad map as source for energy
cbu.cb().g_UVOffsets = gfsdk_make_float4(0,1.0f,0,0); // blurring by Y
- cbu.cb().nvsf_g_DissipationFactors_Accumulation = m_params.cascades[cascade].foam_generation_amount*(float)m_dFoamSimDeltaTime*50.0f;
- cbu.cb().nvsf_g_DissipationFactors_Fadeout = pow(m_params.cascades[cascade].foam_falloff_speed,(float)m_dFoamSimDeltaTime*50.0f);
- cbu.cb().nvsf_g_DissipationFactors_BlurExtents = min(0.5f,m_params.cascades[cascade].foam_dissipation_speed*(float)m_dFoamSimDeltaTime*m_params.cascades[0].fft_period * (1000.0f/m_params.cascades[0].fft_period)/m_params.cascades[cascade].fft_period)/dmap_dim;
- cbu.cb().nvsf_g_FoamGenerationThreshold = m_params.cascades[cascade].foam_generation_threshold;
+ cbu.cb().g_DissipationFactors_Accumulation = m_params.cascades[cascade].foam_generation_amount*(float)m_dFoamSimDeltaTime*50.0f;
+ cbu.cb().g_DissipationFactors_Fadeout = pow(m_params.cascades[cascade].foam_falloff_speed,(float)m_dFoamSimDeltaTime*50.0f);
+ cbu.cb().g_DissipationFactors_BlurExtents = min(0.5f,m_params.cascades[cascade].foam_dissipation_speed*(float)m_dFoamSimDeltaTime*m_params.cascades[0].fft_period * (1000.0f/m_params.cascades[0].fft_period)/m_params.cascades[cascade].fft_period)/dmap_dim;
+ cbu.cb().g_FoamGenerationThreshold = m_params.cascades[cascade].foam_generation_threshold;
}
pDC_d3d11->PSSetConstantBuffers(0, 1, &m_d3d._11.m_pd3d11FoamGenPixelShaderCB);
@@ -1507,10 +1507,10 @@ HRESULT GFSDK_WaveWorks_Simulation::updateGradientMapsD3D11(Graphics_Context* pG
D3D11_CB_Updater<ps_foamgeneration_cbuffer> cbu(pDC_d3d11,m_d3d._11.m_pd3d11FoamGenPixelShaderCB);
cbu.cb().g_SourceComponents = gfsdk_make_float4(1.0f,0,0,0); // getting component R of energy map as source for energy
cbu.cb().g_UVOffsets = gfsdk_make_float4(1.0f,0,0,0); // blurring by X
- cbu.cb().nvsf_g_DissipationFactors_Accumulation = 0.0f;
- cbu.cb().nvsf_g_DissipationFactors_Fadeout = 1.0f;
- cbu.cb().nvsf_g_DissipationFactors_BlurExtents = min(0.5f,m_params.cascades[cascade].foam_dissipation_speed*(float)m_dFoamSimDeltaTime* (1000.0f/m_params.cascades[0].fft_period) * m_params.cascades[0].fft_period/m_params.cascades[cascade].fft_period)/dmap_dim;
- cbu.cb().nvsf_g_FoamGenerationThreshold = m_params.cascades[cascade].foam_generation_threshold;
+ cbu.cb().g_DissipationFactors_Accumulation = 0.0f;
+ cbu.cb().g_DissipationFactors_Fadeout = 1.0f;
+ cbu.cb().g_DissipationFactors_BlurExtents = min(0.5f,m_params.cascades[cascade].foam_dissipation_speed*(float)m_dFoamSimDeltaTime* (1000.0f/m_params.cascades[0].fft_period) * m_params.cascades[0].fft_period/m_params.cascades[cascade].fft_period)/dmap_dim;
+ cbu.cb().g_FoamGenerationThreshold = m_params.cascades[cascade].foam_generation_threshold;
}
pDC_d3d11->PSSetConstantBuffers(0, 1, &m_d3d._11.m_pd3d11FoamGenPixelShaderCB);
@@ -1840,10 +1840,10 @@ HRESULT GFSDK_WaveWorks_Simulation::updateGradientMapsGnm(Graphics_Context* GNM_
ps_foamgeneration_cbuffer* pFGCB = (ps_foamgeneration_cbuffer*)gnmxWrap->allocateFromCommandBuffer(*gfxContext, sizeof(ps_foamgeneration_cbuffer), Gnm::kEmbeddedDataAlignment4);
pFGCB->g_SourceComponents = gfsdk_make_float4(0,0,0.0f,1.0f); // getting component W of grad map as source for energy
pFGCB->g_UVOffsets = gfsdk_make_float4(0,1.0f,0,0); // blurring by Y
- pFGCB->nvsf_g_DissipationFactors_Accumulation = m_params.cascades[cascade].foam_generation_amount*(float)m_dFoamSimDeltaTime*50.0f;
- pFGCB->nvsf_g_DissipationFactors_Fadeout = pow(m_params.cascades[cascade].foam_falloff_speed,(float)m_dFoamSimDeltaTime*50.0f);
- pFGCB->nvsf_g_DissipationFactors_BlurExtents = min(0.5f,m_params.cascades[cascade].foam_dissipation_speed*(float)m_dFoamSimDeltaTime*m_params.cascades[0].fft_period * (1000.0f/m_params.cascades[0].fft_period)/m_params.cascades[cascade].fft_period)/dmap_dim;
- pFGCB->nvsf_g_FoamGenerationThreshold = m_params.cascades[cascade].foam_generation_threshold;
+ pFGCB->g_DissipationFactors_Accumulation = m_params.cascades[cascade].foam_generation_amount*(float)m_dFoamSimDeltaTime*50.0f;
+ pFGCB->g_DissipationFactors_Fadeout = pow(m_params.cascades[cascade].foam_falloff_speed,(float)m_dFoamSimDeltaTime*50.0f);
+ pFGCB->g_DissipationFactors_BlurExtents = min(0.5f,m_params.cascades[cascade].foam_dissipation_speed*(float)m_dFoamSimDeltaTime*m_params.cascades[0].fft_period * (1000.0f/m_params.cascades[0].fft_period)/m_params.cascades[cascade].fft_period)/dmap_dim;
+ pFGCB->g_FoamGenerationThreshold = m_params.cascades[cascade].foam_generation_threshold;
Gnm::Buffer buffer;
buffer.initAsConstantBuffer(pFGCB, sizeof(*pFGCB));
@@ -1891,9 +1891,9 @@ HRESULT GFSDK_WaveWorks_Simulation::updateGradientMapsGnm(Graphics_Context* GNM_
ps_foamgeneration_cbuffer* pFGCB = (ps_foamgeneration_cbuffer*)gnmxWrap->allocateFromCommandBuffer(*gfxContext, sizeof(ps_foamgeneration_cbuffer), Gnm::kEmbeddedDataAlignment4);
pFGCB->g_SourceComponents = gfsdk_make_float4(1.0f,0,0,0); // getting component R of energy map as source for energy
pFGCB->g_UVOffsets = gfsdk_make_float4(1.0f,0,0,0); // blurring by X
- pFGCB->nvsf_g_DissipationFactors_Accumulation = 0.0f;
- pFGCB->nvsf_g_DissipationFactors_Fadeout = 1.0f;
- pFGCB->nvsf_g_DissipationFactors_BlurExtents = min(0.5f,m_params.cascades[cascade].foam_dissipation_speed*(float)m_dFoamSimDeltaTime* (1000.0f/m_params.cascades[0].fft_period) * m_params.cascades[0].fft_period/m_params.cascades[cascade].fft_period)/dmap_dim;
+ pFGCB->g_DissipationFactors_Accumulation = 0.0f;
+ pFGCB->g_DissipationFactors_Fadeout = 1.0f;
+ pFGCB->g_DissipationFactors_BlurExtents = min(0.5f,m_params.cascades[cascade].foam_dissipation_speed*(float)m_dFoamSimDeltaTime* (1000.0f/m_params.cascades[0].fft_period) * m_params.cascades[0].fft_period/m_params.cascades[cascade].fft_period)/dmap_dim;
Gnm::Buffer buffer;
buffer.initAsConstantBuffer(pFGCB, sizeof(*pFGCB));
diff --git a/src/shader/CalcGradient.fx b/src/shader/CalcGradient.fx
index 58ffd3e..f2526a9 100644
--- a/src/shader/CalcGradient.fx
+++ b/src/shader/CalcGradient.fx
@@ -43,41 +43,41 @@
// Global variables
//------------------------------------------------------------------------------------
-BEGIN_CBUFFER(nvsf_globals,0)
-DECLARE_ATTR_CONSTANT(float4,nvsf_g_Scales, 0); // was: float nvsf_g_ChoppyScale, nvsf_g_GradMap2TexelWSScale
-DECLARE_ATTR_CONSTANT(float4,nvsf_g_OneTexel_Left, 1);
-DECLARE_ATTR_CONSTANT(float4,nvsf_g_OneTexel_Right,2);
-DECLARE_ATTR_CONSTANT(float4,nvsf_g_OneTexel_Back, 3);
-DECLARE_ATTR_CONSTANT(float4,nvsf_g_OneTexel_Front,4);
+BEGIN_CBUFFER(globals,0)
+DECLARE_ATTR_CONSTANT(float4,g_Scales, 0); // was: float g_ChoppyScale, g_GradMap2TexelWSScale
+DECLARE_ATTR_CONSTANT(float4,g_OneTexel_Left, 1);
+DECLARE_ATTR_CONSTANT(float4,g_OneTexel_Right,2);
+DECLARE_ATTR_CONSTANT(float4,g_OneTexel_Back, 3);
+DECLARE_ATTR_CONSTANT(float4,g_OneTexel_Front,4);
END_CBUFFER
-DECLARE_ATTR_SAMPLER(nvsf_g_textureDisplacementMap,nvsf_g_samplerDisplacementMap,0);
+DECLARE_ATTR_SAMPLER(g_textureDisplacementMap,g_samplerDisplacementMap,0);
#ifdef GFSDK_WAVEWORKS_GL
-varying float2 nvsf_vInterpTexCoord;
+varying float2 vInterpTexCoord;
#endif
#ifndef GFSDK_WAVEWORKS_OMIT_VS
#ifdef GFSDK_WAVEWORKS_GL
-attribute float4 nvsf_vInPos;
-attribute float2 nvsf_vInTexCoord;
-#define nvsf_vOutPos gl_Position
+attribute float4 vInPos;
+attribute float2 vInTexCoord;
+#define vOutPos gl_Position
void main()
#else
void vs(
- float4 nvsf_vInPos SEMANTIC(POSITION),
- float2 nvsf_vInTexCoord SEMANTIC(TEXCOORD0),
- out float2 nvsf_vInterpTexCoord SEMANTIC(TEXCOORD0),
- out float4 nvsf_vOutPos SEMANTIC(SV_Position)
+ float4 vInPos SEMANTIC(POSITION),
+ float2 vInTexCoord SEMANTIC(TEXCOORD0),
+ out float2 vInterpTexCoord SEMANTIC(TEXCOORD0),
+ out float4 vOutPos SEMANTIC(SV_Position)
)
#endif
{
// No need to do matrix transform.
- nvsf_vOutPos = nvsf_vInPos;
+ vOutPos = vInPos;
// Pass through general texture coordinate.
- nvsf_vInterpTexCoord = nvsf_vInTexCoord;
+ vInterpTexCoord = vInTexCoord;
}
#endif // !GFSDK_WAVEWORKS_OMIT_VS
@@ -86,32 +86,32 @@ void vs(
#ifndef GFSDK_WAVEWORKS_OMIT_PS
#ifdef GFSDK_WAVEWORKS_GL
-#define nvsf_Output gl_FragColor
+#define Output gl_FragColor
void main()
#else
void ps(
- float2 nvsf_vInterpTexCoord SEMANTIC(TEXCOORD0),
- out float4 nvsf_Output SEMANTIC(SV_Target)
+ float2 vInterpTexCoord SEMANTIC(TEXCOORD0),
+ out float4 Output SEMANTIC(SV_Target)
)
#endif
{
// Sample neighbour texels
- float3 nvsf_displace_left = SampleTex2D(nvsf_g_textureDisplacementMap, nvsf_g_samplerDisplacementMap, nvsf_vInterpTexCoord.xy + nvsf_g_OneTexel_Left.xy).rgb;
- float3 nvsf_displace_right = SampleTex2D(nvsf_g_textureDisplacementMap, nvsf_g_samplerDisplacementMap, nvsf_vInterpTexCoord.xy + nvsf_g_OneTexel_Right.xy).rgb;
- float3 nvsf_displace_back = SampleTex2D(nvsf_g_textureDisplacementMap, nvsf_g_samplerDisplacementMap, nvsf_vInterpTexCoord.xy + nvsf_g_OneTexel_Back.xy).rgb;
- float3 nvsf_displace_front = SampleTex2D(nvsf_g_textureDisplacementMap, nvsf_g_samplerDisplacementMap, nvsf_vInterpTexCoord.xy + nvsf_g_OneTexel_Front.xy).rgb;
+ float3 displace_left = SampleTex2D(g_textureDisplacementMap, g_samplerDisplacementMap, vInterpTexCoord.xy + g_OneTexel_Left.xy).rgb;
+ float3 displace_right = SampleTex2D(g_textureDisplacementMap, g_samplerDisplacementMap, vInterpTexCoord.xy + g_OneTexel_Right.xy).rgb;
+ float3 displace_back = SampleTex2D(g_textureDisplacementMap, g_samplerDisplacementMap, vInterpTexCoord.xy + g_OneTexel_Back.xy).rgb;
+ float3 displace_front = SampleTex2D(g_textureDisplacementMap, g_samplerDisplacementMap, vInterpTexCoord.xy + g_OneTexel_Front.xy).rgb;
// -------- Do not store the actual normal value, instead, it preserves two differential values.
- float2 nvsf_gradient = float2(-(nvsf_displace_right.z - nvsf_displace_left.z) / max(0.01,1.0 + nvsf_g_Scales.y*(nvsf_displace_right.x - nvsf_displace_left.x)), -(nvsf_displace_front.z - nvsf_displace_back.z) / max(0.01,1.0+nvsf_g_Scales.y*(nvsf_displace_front.y - nvsf_displace_back.y)));
- //float2 nvsf_gradient = {-(nvsf_displace_right.z - nvsf_displace_left.z), -(nvsf_displace_front.z - nvsf_displace_back.z) };
+ float2 gradient = float2(-(displace_right.z - displace_left.z) / max(0.01,1.0 + g_Scales.y*(displace_right.x - displace_left.x)), -(displace_front.z - displace_back.z) / max(0.01,1.0+g_Scales.y*(displace_front.y - displace_back.y)));
+ //float2 gradient = {-(displace_right.z - displace_left.z), -(displace_front.z - displace_back.z) };
// Calculate Jacobian corelation from the partial differential of displacement field
- float2 nvsf_Dx = (nvsf_displace_right.xy - nvsf_displace_left.xy) * nvsf_g_Scales.x;
- float2 nvsf_Dy = (nvsf_displace_front.xy - nvsf_displace_back.xy) * nvsf_g_Scales.x;
- float nvsf_J = (1.0f + nvsf_Dx.x) * (1.0f + nvsf_Dy.y) - nvsf_Dx.y * nvsf_Dy.x;
+ float2 Dx = (displace_right.xy - displace_left.xy) * g_Scales.x;
+ float2 Dy = (displace_front.xy - displace_back.xy) * g_Scales.x;
+ float J = (1.0f + Dx.x) * (1.0f + Dy.y) - Dx.y * Dy.x;
// Output
- nvsf_Output = float4(nvsf_gradient, nvsf_J, 0);
+ Output = float4(gradient, J, 0);
}
#endif // !GFSDK_WAVEWORKS_OMIT_PS
diff --git a/src/shader/CalcGradient_glsl_ps.h b/src/shader/CalcGradient_glsl_ps.h
new file mode 100644
index 0000000..2ef7ed8
--- /dev/null
+++ b/src/shader/CalcGradient_glsl_ps.h
@@ -0,0 +1,36 @@
+R"glsl(
+//------------------------------------------------------------------------------------
+// Global variables
+//------------------------------------------------------------------------------------
+
+uniform vec4 g_Scales;
+uniform vec4 g_OneTexel_Left;
+uniform vec4 g_OneTexel_Right;
+uniform vec4 g_OneTexel_Back;
+uniform vec4 g_OneTexel_Front;
+
+uniform sampler2D g_samplerDisplacementMap;
+
+varying float2 vInterpTexCoord;
+
+void main()
+{
+ // Sample neighbour texels
+ float3 displace_left = texture(g_samplerDisplacementMap, vInterpTexCoord.xy + g_OneTexel_Left.xy).rgb;
+ float3 displace_right = texture(g_samplerDisplacementMap, vInterpTexCoord.xy + g_OneTexel_Right.xy).rgb;
+ float3 displace_back = texture(g_samplerDisplacementMap, vInterpTexCoord.xy + g_OneTexel_Back.xy).rgb;
+ float3 displace_front = texture(g_samplerDisplacementMap, vInterpTexCoord.xy + g_OneTexel_Front.xy).rgb;
+
+ // -------- Do not store the actual normal value, instead, it preserves two differential values.
+ float2 gradient = float2(-(displace_right.z - displace_left.z) / max(0.01,1.0 + g_Scales.y*(displace_right.x - displace_left.x)), -(displace_front.z - displace_back.z) / max(0.01,1.0+g_Scales.y*(displace_front.y - displace_back.y)));
+ //float2 gradient = {-(displace_right.z - displace_left.z), -(displace_front.z - displace_back.z) };
+
+ // Calculate Jacobian corelation from the partial differential of displacement field
+ float2 Dx = (displace_right.xy - displace_left.xy) * g_Scales.x;
+ float2 Dy = (displace_front.xy - displace_back.xy) * g_Scales.x;
+ float J = (1.0f + Dx.x) * (1.0f + Dy.y) - Dx.y * Dy.x;
+
+ // Output
+ gl_FragColor = float4(gradient, J, 0);
+}
+)glsl";
diff --git a/src/shader/CalcGradient_glsl_vs.h b/src/shader/CalcGradient_glsl_vs.h
new file mode 100644
index 0000000..aa2747a
--- /dev/null
+++ b/src/shader/CalcGradient_glsl_vs.h
@@ -0,0 +1,26 @@
+R"glsl(
+//------------------------------------------------------------------------------------
+// Global variables
+//------------------------------------------------------------------------------------
+
+uniform vec4 g_Scales;
+uniform vec4 g_OneTexel_Left;
+uniform vec4 g_OneTexel_Right;
+uniform vec4 g_OneTexel_Back;
+uniform vec4 g_OneTexel_Front;
+
+uniform sampler2D g_textureDisplacementMap;
+
+varying float2 vInterpTexCoord;
+
+attribute float4 vInPos;
+attribute float2 vInTexCoord;
+void main()
+{
+ // No need to do matrix transform.
+ gl_Position = vInPos;
+
+ // Pass through general texture coordinate.
+ vInterpTexCoord = vInTexCoord;
+}
+)glsl";
diff --git a/src/shader/FoamGeneration.fx b/src/shader/FoamGeneration.fx
index 50a7007..a50e821 100644
--- a/src/shader/FoamGeneration.fx
+++ b/src/shader/FoamGeneration.fx
@@ -43,39 +43,39 @@
// Global variables
//------------------------------------------------------------------------------------
-BEGIN_CBUFFER(nvsf_globals,0)
-DECLARE_ATTR_CONSTANT(float4,nvsf_g_DissipationFactors,0); // x - the blur extents, y - the fadeout multiplier, z - the accumulation multiplier, w - foam generation threshold
-DECLARE_ATTR_CONSTANT(float4,nvsf_g_SourceComponents ,1); // xyzw - weights of energy map components to be sampled
-DECLARE_ATTR_CONSTANT(float4,nvsf_g_UVOffsets ,2); // xy - defines either horizontal offsets either vertical offsets
+BEGIN_CBUFFER(globals,0)
+DECLARE_ATTR_CONSTANT(float4,g_DissipationFactors,0); // x - the blur extents, y - the fadeout multiplier, z - the accumulation multiplier, w - foam generation threshold
+DECLARE_ATTR_CONSTANT(float4,g_SourceComponents ,1); // xyzw - weights of energy map components to be sampled
+DECLARE_ATTR_CONSTANT(float4,g_UVOffsets ,2); // xy - defines either horizontal offsets either vertical offsets
END_CBUFFER
-DECLARE_ATTR_SAMPLER(nvsf_g_textureEnergyMap,nvsf_g_samplerEnergyMap,0);
+DECLARE_ATTR_SAMPLER(g_textureEnergyMap,g_samplerEnergyMap,0);
#ifdef GFSDK_WAVEWORKS_GL
-varying float2 nvsf_vInterpTexCoord;
+varying float2 vInterpTexCoord;
#endif
#ifndef GFSDK_WAVEWORKS_OMIT_VS
#ifdef GFSDK_WAVEWORKS_GL
-attribute float4 nvsf_vInPos;
-attribute float2 nvsf_vInTexCoord;
-#define nvsf_vOutPos gl_Position
+attribute float4 vInPos;
+attribute float2 vInTexCoord;
+#define vOutPos gl_Position
void main()
#else
void vs(
- float4 nvsf_vInPos SEMANTIC(POSITION),
- float2 nvsf_vInTexCoord SEMANTIC(TEXCOORD0),
- out float2 nvsf_vInterpTexCoord SEMANTIC(TEXCOORD0),
- out float4 nvsf_vOutPos SEMANTIC(SV_Position)
+ float4 vInPos SEMANTIC(POSITION),
+ float2 vInTexCoord SEMANTIC(TEXCOORD0),
+ out float2 vInterpTexCoord SEMANTIC(TEXCOORD0),
+ out float4 vOutPos SEMANTIC(SV_Position)
)
#endif
{
// No need to do matrix transform.
- nvsf_vOutPos = nvsf_vInPos;
+ vOutPos = vInPos;
// Pass through general texture coordinate.
- nvsf_vInterpTexCoord = nvsf_vInTexCoord;
+ vInterpTexCoord = vInTexCoord;
}
#endif // !GFSDK_WAVEWORKS_OMIT_VS
@@ -89,33 +89,33 @@ void vs(
#ifndef GFSDK_WAVEWORKS_OMIT_PS
#ifdef GFSDK_WAVEWORKS_GL
-#define nvsf_Output gl_FragColor
+#define Output gl_FragColor
void main()
#else
void ps(
- float2 nvsf_vInterpTexCoord SEMANTIC(TEXCOORD0),
- out float4 nvsf_Output SEMANTIC(SV_Target)
+ float2 vInterpTexCoord SEMANTIC(TEXCOORD0),
+ out float4 Output SEMANTIC(SV_Target)
)
#endif
{
- float2 nvsf_UVoffset = nvsf_g_UVOffsets.xy*nvsf_g_DissipationFactors.x;
+ float2 UVoffset = g_UVOffsets.xy*g_DissipationFactors.x;
// blur with variable size kernel is done by doing 4 bilinear samples,
// each sample is slightly offset from the center point
- float nvsf_foamenergy1 = dot(nvsf_g_SourceComponents, SampleTex2D(nvsf_g_textureEnergyMap, nvsf_g_samplerEnergyMap, nvsf_vInterpTexCoord.xy + nvsf_UVoffset));
- float nvsf_foamenergy2 = dot(nvsf_g_SourceComponents, SampleTex2D(nvsf_g_textureEnergyMap, nvsf_g_samplerEnergyMap, nvsf_vInterpTexCoord.xy - nvsf_UVoffset));
- float nvsf_foamenergy3 = dot(nvsf_g_SourceComponents, SampleTex2D(nvsf_g_textureEnergyMap, nvsf_g_samplerEnergyMap, nvsf_vInterpTexCoord.xy + nvsf_UVoffset*2.0));
- float nvsf_foamenergy4 = dot(nvsf_g_SourceComponents, SampleTex2D(nvsf_g_textureEnergyMap, nvsf_g_samplerEnergyMap, nvsf_vInterpTexCoord.xy - nvsf_UVoffset*2.0));
+ float foamenergy1 = dot(g_SourceComponents, SampleTex2D(g_textureEnergyMap, g_samplerEnergyMap, vInterpTexCoord.xy + UVoffset));
+ float foamenergy2 = dot(g_SourceComponents, SampleTex2D(g_textureEnergyMap, g_samplerEnergyMap, vInterpTexCoord.xy - UVoffset));
+ float foamenergy3 = dot(g_SourceComponents, SampleTex2D(g_textureEnergyMap, g_samplerEnergyMap, vInterpTexCoord.xy + UVoffset*2.0));
+ float foamenergy4 = dot(g_SourceComponents, SampleTex2D(g_textureEnergyMap, g_samplerEnergyMap, vInterpTexCoord.xy - UVoffset*2.0));
- float nvsf_folding = max(0,SampleTex2D(nvsf_g_textureEnergyMap, nvsf_g_samplerEnergyMap, nvsf_vInterpTexCoord.xy).z);
+ float folding = max(0,SampleTex2D(g_textureEnergyMap, g_samplerEnergyMap, vInterpTexCoord.xy).z);
- float nvsf_energy = nvsf_g_DissipationFactors.y*((nvsf_foamenergy1 + nvsf_foamenergy2 + nvsf_foamenergy3 + nvsf_foamenergy4)*0.25 + max(0,(1.0-nvsf_folding-nvsf_g_DissipationFactors.w))*nvsf_g_DissipationFactors.z);
+ float energy = g_DissipationFactors.y*((foamenergy1 + foamenergy2 + foamenergy3 + foamenergy4)*0.25 + max(0,(1.0-folding-g_DissipationFactors.w))*g_DissipationFactors.z);
- nvsf_energy = min(1.0,nvsf_energy);
+ energy = min(1.0,energy);
// Output
- nvsf_Output = float4(nvsf_energy,nvsf_energy,nvsf_energy,nvsf_energy);
+ Output = float4(energy,energy,energy,energy);
}
#endif // !GFSDK_WAVEWORKS_OMIT_PS \ No newline at end of file
diff --git a/src/shader/FoamGeneration_glsl_ps.h b/src/shader/FoamGeneration_glsl_ps.h
new file mode 100644
index 0000000..0ab5eed
--- /dev/null
+++ b/src/shader/FoamGeneration_glsl_ps.h
@@ -0,0 +1,41 @@
+R"glsl(
+//------------------------------------------------------------------------------------
+// Global variables
+//------------------------------------------------------------------------------------
+
+uniform vec4 g_DissipationFactors;
+uniform vec4 g_SourceComponents;
+uniform vec4 g_UVOffsets;
+
+uniform sampler2D g_samplerDisplacementMap;
+
+varying float2 vInterpTexCoord;
+
+// at 1st rendering step, the folding and the accumulated foam values are being read from gradient map (components z and w),
+// blurred by X, summed, faded and written to foam energy map
+
+// at 2nd rendering step, the accumulated foam values are being read from foam energy texture,
+// blurred by Y and written to w component of gradient map
+
+void main()
+{
+
+ float2 UVoffset = g_UVOffsets.xy*g_DissipationFactors.x;
+
+ // blur with variable size kernel is done by doing 4 bilinear samples,
+ // each sample is slightly offset from the center point
+ float foamenergy1 = dot(g_SourceComponents, texture(g_samplerEnergyMap, vInterpTexCoord.xy + UVoffset));
+ float foamenergy2 = dot(g_SourceComponents, texture(g_samplerEnergyMap, vInterpTexCoord.xy - UVoffset));
+ float foamenergy3 = dot(g_SourceComponents, texture(g_samplerEnergyMap, vInterpTexCoord.xy + UVoffset*2.0));
+ float foamenergy4 = dot(g_SourceComponents, texture(g_samplerEnergyMap, vInterpTexCoord.xy - UVoffset*2.0));
+
+ float folding = max(0,texture(g_samplerEnergyMap, vInterpTexCoord.xy).z);
+
+ float energy = g_DissipationFactors.y*((foamenergy1 + foamenergy2 + foamenergy3 + foamenergy4)*0.25 + max(0,(1.0-folding-g_DissipationFactors.w))*g_DissipationFactors.z);
+
+ energy = min(1.0,energy);
+
+ // Output
+ gl_FragColor = float4(energy,energy,energy,energy);
+}
+)glsl";
diff --git a/src/shader/FoamGeneration_glsl_vs.h b/src/shader/FoamGeneration_glsl_vs.h
new file mode 100644
index 0000000..519efb2
--- /dev/null
+++ b/src/shader/FoamGeneration_glsl_vs.h
@@ -0,0 +1,25 @@
+R"glsl(
+//------------------------------------------------------------------------------------
+// Global variables
+//------------------------------------------------------------------------------------
+
+uniform vec4 g_DissipationFactors;
+uniform vec4 g_SourceComponents;
+uniform vec4 g_UVOffsets;
+
+uniform sampler2D g_samplerDisplacementMap;
+
+varying float2 vInterpTexCoord;
+
+attribute float4 vInPos;
+attribute float2 vInTexCoord;
+
+void main()
+{
+ // No need to do matrix transform.
+ gl_Position = vInPos;
+
+ // Pass through general texture coordinate.
+ vInterpTexCoord = vInTexCoord;
+}
+)glsl"; \ No newline at end of file
diff --git a/src/shader/Quadtree_SM4_sig.fx b/src/shader/Quadtree_SM4_sig.fx
index f8d1a9d..c121356 100644
--- a/src/shader/Quadtree_SM4_sig.fx
+++ b/src/shader/Quadtree_SM4_sig.fx
@@ -35,5 +35,5 @@
float4 GFSDK_WAVEWORKS_VERTEX_INPUT_Sig(GFSDK_WAVEWORKS_VERTEX_INPUT In) : SV_Position
{
- return In.nvsf_vPos;
+ return In.vPos;
}
diff --git a/src/shader/Quadtree_SM5_sig.fx b/src/shader/Quadtree_SM5_sig.fx
index c33887e..adefd2a 100644
--- a/src/shader/Quadtree_SM5_sig.fx
+++ b/src/shader/Quadtree_SM5_sig.fx
@@ -41,5 +41,5 @@
float4 GFSDK_WAVEWORKS_VERTEX_INPUT_Sig(GFSDK_WAVEWORKS_VERTEX_INPUT In) : SV_Position
{
- return In.nvsf_vPos;
+ return In.vPos;
}