summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJason Maskell <Jason Maskell>2016-08-01 12:10:17 +0700
committerJason Maskell <Jason Maskell>2016-08-01 12:10:17 +0700
commit4f696cb8b1ee6fe6056017272ede68e38abb0564 (patch)
treed8cdb963e00bc8ef60d047c2e647eece6eeaa0bb /src
parentDon't need FindDirectX anymore, so deleted it and modified the cmake files. (diff)
downloadwaveworks_archive-4f696cb8b1ee6fe6056017272ede68e38abb0564.tar.xz
waveworks_archive-4f696cb8b1ee6fe6056017272ede68e38abb0564.zip
Removed nvsf_ prefix from all shader variables.
Added manually generated glsl.h files for the OpenGL sample. Breaking DRY but no longer need sed and an external CL call to get glsl. Worth the tradeoff. OpenGL sample now compiles and runs but fails at runtime when loading a texture.
Diffstat (limited to '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;
}