ocean updates

This commit is contained in:
Turanszki Janos
2017-11-12 14:05:02 +00:00
parent c120530bb8
commit b5836181ae
9 changed files with 13 additions and 67 deletions
+2
View File
@@ -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)
@@ -33,7 +33,6 @@
<None Include="objectHF.hlsli" />
<None Include="objectInputLayoutHF.hlsli" />
<None Include="oceanSurfaceHF.hlsli" />
<None Include="oceanWaveGenHF.hlsli" />
<None Include="packHF.hlsli" />
<None Include="postProcessHF.hlsli" />
<None Include="quad.hlsli" />
@@ -452,9 +451,6 @@
<FxCompile Include="objectVS_voxelizer.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="oceanQuadVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="oceanSimulatorCS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">5.0</ShaderModel>
@@ -115,9 +115,6 @@
<None Include="hairparticleHF.hlsli">
<Filter>HF</Filter>
</None>
<None Include="oceanWaveGenHF.hlsli">
<Filter>HF</Filter>
</None>
<None Include="oceanSurfaceHF.hlsli">
<Filter>HF</Filter>
</None>
@@ -663,9 +660,6 @@
<FxCompile Include="oceanSimulatorCS.hlsl">
<Filter>CS</Filter>
</FxCompile>
<FxCompile Include="oceanQuadVS.hlsl">
<Filter>VS</Filter>
</FxCompile>
<FxCompile Include="oceanSurfaceVS.hlsl">
<Filter>VS</Filter>
</FxCompile>
-11
View File
@@ -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;
}
+2 -14
View File
@@ -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;
@@ -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;
@@ -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
-21
View File
@@ -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_
+4 -7
View File
@@ -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);