diff --git a/WickedEngine/ShaderInterop_Ocean.h b/WickedEngine/ShaderInterop_Ocean.h
index db8f09a09..079ba974d 100644
--- a/WickedEngine/ShaderInterop_Ocean.h
+++ b/WickedEngine/ShaderInterop_Ocean.h
@@ -2,6 +2,8 @@
#define _SHADERINTEROP_OCEAN_H_
#include "ShaderInterop.h"
+#define OCEAN_COMPUTE_TILESIZE 16
+
// Simulation constants:
CBUFFER(Ocean_Simulation_ImmutableCB, CBSLOT_OTHER_OCEAN_SIMULATION_IMMUTABLE)
diff --git a/WickedEngine/WickedEngine_SHADERS.vcxproj b/WickedEngine/WickedEngine_SHADERS.vcxproj
index 1e26b10ad..fb22c02cf 100644
--- a/WickedEngine/WickedEngine_SHADERS.vcxproj
+++ b/WickedEngine/WickedEngine_SHADERS.vcxproj
@@ -33,7 +33,6 @@
-
@@ -452,9 +451,6 @@
Vertex
-
- Vertex
-
Compute
5.0
diff --git a/WickedEngine/WickedEngine_SHADERS.vcxproj.filters b/WickedEngine/WickedEngine_SHADERS.vcxproj.filters
index 1ba51d6d4..a19b82645 100644
--- a/WickedEngine/WickedEngine_SHADERS.vcxproj.filters
+++ b/WickedEngine/WickedEngine_SHADERS.vcxproj.filters
@@ -115,9 +115,6 @@
HF
-
- HF
-
HF
@@ -663,9 +660,6 @@
CS
-
- VS
-
VS
diff --git a/WickedEngine/oceanQuadVS.hlsl b/WickedEngine/oceanQuadVS.hlsl
deleted file mode 100644
index f71494cf4..000000000
--- a/WickedEngine/oceanQuadVS.hlsl
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "oceanWaveGenHF.hlsli"
-#include "fullScreenTriangleHF.hlsli"
-
-VS_QUAD_OUTPUT main(uint vI : SV_VertexID)
-{
- VS_QUAD_OUTPUT Out;
-
- FullScreenTriangle(vI, Out.Position, Out.TexCoord);
-
- return Out;
-}
diff --git a/WickedEngine/oceanSimulatorCS.hlsl b/WickedEngine/oceanSimulatorCS.hlsl
index e91be6f10..c42e4c508 100644
--- a/WickedEngine/oceanSimulatorCS.hlsl
+++ b/WickedEngine/oceanSimulatorCS.hlsl
@@ -1,25 +1,13 @@
-#include "oceanWaveGenHF.hlsli"
+#include "ShaderInterop_Ocean.h"
#define PI 3.1415926536f
-#define BLOCK_SIZE_X 16
-#define BLOCK_SIZE_Y 16
STRUCTUREDBUFFER(g_InputH0, float2, TEXSLOT_ONDEMAND0);
STRUCTUREDBUFFER(g_InputOmega, float, TEXSLOT_ONDEMAND1);
RWSTRUCTUREDBUFFER(g_OutputHt, float2, 0);
-
-//---------------------------------------- Compute Shaders -----------------------------------------
-
-// Pre-FFT data preparation:
-
-// Notice: In CS5.0, we can output up to 8 RWBuffers but in CS4.x only one output buffer is allowed,
-// that way we have to allocate one big buffer and manage the offsets manually. The restriction is
-// not caused by NVIDIA GPUs and does not present on NVIDIA GPUs when using other computing APIs like
-// CUDA and OpenCL.
-
// H(0) -> H(t)
-[numthreads(BLOCK_SIZE_X, BLOCK_SIZE_Y, 1)]
+[numthreads(OCEAN_COMPUTE_TILESIZE, OCEAN_COMPUTE_TILESIZE, 1)]
void main(uint3 DTid : SV_DispatchThreadID)
{
int in_index = DTid.y * g_InWidth + DTid.x;
diff --git a/WickedEngine/oceanUpdateDisplacementMapCS.hlsl b/WickedEngine/oceanUpdateDisplacementMapCS.hlsl
index e15ef7506..ff5605720 100644
--- a/WickedEngine/oceanUpdateDisplacementMapCS.hlsl
+++ b/WickedEngine/oceanUpdateDisplacementMapCS.hlsl
@@ -1,9 +1,9 @@
-#include "oceanWaveGenHF.hlsli"
+#include "ShaderInterop_Ocean.h"
STRUCTUREDBUFFER(g_InputDxyz, float2, TEXSLOT_ONDEMAND0);
RWTEXTURE2D(output, float4, 0);
-[numthreads(32, 32, 1)]
+[numthreads(OCEAN_COMPUTE_TILESIZE, OCEAN_COMPUTE_TILESIZE, 1)]
void main(uint3 DTid : SV_DispatchThreadID)
{
uint addr = g_OutWidth * DTid.y + DTid.x;
diff --git a/WickedEngine/oceanUpdateGradientFoldingCS.hlsl b/WickedEngine/oceanUpdateGradientFoldingCS.hlsl
index 27bea224b..c0d9b8edf 100644
--- a/WickedEngine/oceanUpdateGradientFoldingCS.hlsl
+++ b/WickedEngine/oceanUpdateGradientFoldingCS.hlsl
@@ -1,9 +1,10 @@
-#include "oceanWaveGenHF.hlsli"
+#include "globals.hlsli"
+#include "ShaderInterop_Ocean.h"
#define xDisplacementMap texture_0
RWTEXTURE2D(output, float4, 0);
-[numthreads(32, 32, 1)]
+[numthreads(OCEAN_COMPUTE_TILESIZE, OCEAN_COMPUTE_TILESIZE, 1)]
void main( uint3 DTid : SV_DispatchThreadID )
{
// Sample neighbour texels
diff --git a/WickedEngine/oceanWaveGenHF.hlsli b/WickedEngine/oceanWaveGenHF.hlsli
deleted file mode 100644
index f6f6825f0..000000000
--- a/WickedEngine/oceanWaveGenHF.hlsli
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _OCEAN_SIMULATOR_HF_
-#define _OCEAN_SIMULATOR_HF_
-#include "globals.hlsli"
-#include "ShaderInterop_Ocean.h"
-
-//---------------------------------------- Vertex Shaders ------------------------------------------
-struct VS_QUAD_OUTPUT
-{
- float4 Position : SV_POSITION; // vertex position
- float2 TexCoord : TEXCOORD0; // vertex texture coords
-};
-
-//----------------------------------------- Pixel Shaders ------------------------------------------
-
-//// Textures and sampling states
-//#define g_samplerDisplacementMap texture_0
-//
-//SAMPLERSTATE(LinearSampler, SSLOT_ONDEMAND0);
-
-
-#endif // _OCEAN_SIMULATOR_HF_
diff --git a/WickedEngine/wiOcean.cpp b/WickedEngine/wiOcean.cpp
index b532554cb..1214c7ab8 100644
--- a/WickedEngine/wiOcean.cpp
+++ b/WickedEngine/wiOcean.cpp
@@ -21,9 +21,6 @@ VertexLayout* wiOcean::g_pMeshLayout = nullptr;
#define HALF_SQRT_2 0.7071068f
#define GRAV_ACCEL 981.0f // The acceleration of gravity, cm/s^2
-#define BLOCK_SIZE_X 16
-#define BLOCK_SIZE_Y 16
-
// Generating gaussian random number with mean 0 and standard deviation 1.
float Gauss()
{
@@ -334,8 +331,8 @@ void wiOcean::UpdateDisplacementMap(float time, GRAPHICSTHREAD threadID)
device->BindConstantBufferCS(m_pPerFrameCB, CB_GETBINDSLOT(Ocean_Simulation_PerFrameCB), threadID);
// Run the CS
- UINT group_count_x = (m_param.dmap_dim + BLOCK_SIZE_X - 1) / BLOCK_SIZE_X;
- UINT group_count_y = (m_param.dmap_dim + BLOCK_SIZE_Y - 1) / BLOCK_SIZE_Y;
+ UINT group_count_x = (m_param.dmap_dim + OCEAN_COMPUTE_TILESIZE - 1) / OCEAN_COMPUTE_TILESIZE;
+ UINT group_count_y = (m_param.dmap_dim + OCEAN_COMPUTE_TILESIZE - 1) / OCEAN_COMPUTE_TILESIZE;
device->Dispatch(group_count_x, group_count_y, 1, threadID);
device->UnBindUnorderedAccessResources(0, 1, threadID);
@@ -357,7 +354,7 @@ void wiOcean::UpdateDisplacementMap(float time, GRAPHICSTHREAD threadID)
device->BindUnorderedAccessResourcesCS(cs_uavs, 0, 1, threadID);
GPUResource* cs_srvs[1] = { m_pBuffer_Float_Dxyz };
device->BindResourcesCS(cs_srvs, TEXSLOT_ONDEMAND0, 1, threadID);
- device->Dispatch(m_param.dmap_dim / 32, m_param.dmap_dim / 32, 1, threadID);
+ device->Dispatch(m_param.dmap_dim / OCEAN_COMPUTE_TILESIZE, m_param.dmap_dim / OCEAN_COMPUTE_TILESIZE, 1, threadID);
// Update gradient map:
@@ -366,7 +363,7 @@ void wiOcean::UpdateDisplacementMap(float time, GRAPHICSTHREAD threadID)
device->BindUnorderedAccessResourcesCS(cs_uavs, 0, 1, threadID);
cs_srvs[0] = m_pDisplacementMap;
device->BindResourcesCS(cs_srvs, TEXSLOT_ONDEMAND0, 1, threadID);
- device->Dispatch(m_param.dmap_dim / 32, m_param.dmap_dim / 32, 1, threadID);
+ device->Dispatch(m_param.dmap_dim / OCEAN_COMPUTE_TILESIZE, m_param.dmap_dim / OCEAN_COMPUTE_TILESIZE, 1, threadID);
// Unbind
device->UnBindUnorderedAccessResources(0, 1, threadID);