Water rendering doesnt work yet
This commit is contained in:
@@ -32,8 +32,8 @@ bool isBoxVisible(AABB bounding)
|
||||
{
|
||||
mipOffset += mipDimensions.x * mipDimensions.y;
|
||||
mipDimensions = uint2(mipDimensions.x + 1, mipDimensions.y + 1) / 2;
|
||||
screenCornerMin /= 2;
|
||||
screenCornerMax /= 2;
|
||||
screenCornerMin = uint2(screenCornerMin.x + 1, screenCornerMin.y + 1) / 2;
|
||||
screenCornerMax = uint2(screenCornerMax.x, screenCornerMax.y) / 2;
|
||||
}
|
||||
|
||||
// now we sample 4 texels from the depth at the calculated mip level, this should give us the screen extent of the meshlet
|
||||
@@ -80,7 +80,8 @@ void taskMain(
|
||||
viewFrustum.sides[1] = computePlane(origin, corners[1], corners[3]);
|
||||
viewFrustum.sides[2] = computePlane(origin, corners[0], corners[1]);
|
||||
viewFrustum.sides[3] = computePlane(origin, corners[3], corners[2]);
|
||||
meshVisible = isBoxVisible(mesh.bounding);
|
||||
//meshVisible = isBoxVisible(mesh.bounding);
|
||||
meshVisible = true;
|
||||
}
|
||||
GroupMemoryBarrierWithGroupSync();
|
||||
if(!meshVisible)
|
||||
|
||||
@@ -23,6 +23,11 @@ struct MaterialParams
|
||||
float foamSubtract2;
|
||||
float foamSubtract3;
|
||||
|
||||
float tile1;
|
||||
float tile2;
|
||||
float tile3;
|
||||
float tile4;
|
||||
|
||||
float normalStrength;
|
||||
float foamDepthAttenuation;
|
||||
float normalDepthAttenuation;
|
||||
@@ -42,7 +47,13 @@ struct MaterialParams
|
||||
float scatterStrength;
|
||||
float scatterShadowStrength;
|
||||
|
||||
uint contributeDisplacement1;
|
||||
uint contributeDisplacement2;
|
||||
uint contributeDisplacement3;
|
||||
uint contributeDisplacement4;
|
||||
|
||||
float3 foamColor;
|
||||
|
||||
Texture2DArray displacementTextures;
|
||||
Texture2DArray<float2> slopeTextures;
|
||||
TextureCube environmentMap;
|
||||
|
||||
@@ -141,8 +141,8 @@ void CS_InitializeSpectrum(uint3 id : SV_DISPATCHTHREADID) {
|
||||
|
||||
seed += i + uint(hash(seed) * 10);
|
||||
float4 uniformRandSamples = float4(hash(seed), hash(seed * 2), hash(seed * 3), hash(seed * 4));
|
||||
float2 gauss1 = float2(1, 1);UniformToGaussian(uniformRandSamples.x, uniformRandSamples.y);
|
||||
float2 gauss2 = float2(1, 1);UniformToGaussian(uniformRandSamples.z, uniformRandSamples.w);
|
||||
float2 gauss1 = UniformToGaussian(uniformRandSamples.x, uniformRandSamples.y);
|
||||
float2 gauss2 = UniformToGaussian(uniformRandSamples.z, uniformRandSamples.w);
|
||||
|
||||
if (pParams.lowCutoff <= kLength && kLength <= pParams.highCutoff) {
|
||||
float kAngle = atan2(K.y, K.x);
|
||||
|
||||
@@ -46,22 +46,20 @@ void meshMain(
|
||||
float2 base = VERT[i];
|
||||
float2 worldTransformed = params.offset + (params.extent * base);
|
||||
float3 worldPos = float3(worldTransformed.x, params.height, worldTransformed.y);
|
||||
float3 displacement1 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(worldPos.xz, 0)).xyz;
|
||||
float3 displacement2 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(worldPos.xz, 1)).xyz;
|
||||
float3 displacement3 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(worldPos.xz, 2)).xyz;
|
||||
float3 displacement4 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(worldPos.xz, 3)).xyz;
|
||||
float3 displacement1 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(worldPos.xz * pWaterMaterial.tile1, 0)).xyz * pWaterMaterial.contributeDisplacement1;
|
||||
float3 displacement2 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(worldPos.xz * pWaterMaterial.tile2, 1)).xyz * pWaterMaterial.contributeDisplacement2;
|
||||
float3 displacement3 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(worldPos.xz * pWaterMaterial.tile3, 2)).xyz * pWaterMaterial.contributeDisplacement3;
|
||||
float3 displacement4 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(worldPos.xz * pWaterMaterial.tile4, 3)).xyz * pWaterMaterial.contributeDisplacement4;
|
||||
float3 displacement = displacement1 + displacement2 + displacement3 + displacement4;
|
||||
|
||||
float4 clipPos = mul(vp, float4(worldPos, 1));
|
||||
float depth = 1 - clamp(1 / (clipPos.z / clipPos.w), 0, 1);
|
||||
|
||||
displacement = lerp(0, displacement, pow(saturate(depth), pWaterMaterial.displacementDepthAttenuation));
|
||||
|
||||
worldPos += displacement;
|
||||
|
||||
WaterVertex v;
|
||||
v.position_WS = worldPos;
|
||||
v.position_CS = clipPos;// mul(vp, float4(worldPos, 1));
|
||||
v.position_CS = mul(vp, float4(worldPos, 1));
|
||||
v.texCoord = worldPos.xz;
|
||||
v.depth = clipPos.z / clipPos.w;
|
||||
vertices[i] = v;
|
||||
|
||||
@@ -30,20 +30,20 @@ float4 main(WaterVertex vert) : SV_TARGET {
|
||||
float VdotH = clamp(dot(viewDir, halfwayDir), 0, 1);
|
||||
|
||||
|
||||
float4 displacementFoam1 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord, 0));
|
||||
float4 displacementFoam1 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord * pWaterMaterial.tile1, 0));
|
||||
displacementFoam1.a += pWaterMaterial.foamSubtract0;
|
||||
float4 displacementFoam2 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord, 0));
|
||||
float4 displacementFoam2 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord * pWaterMaterial.tile2, 0));
|
||||
displacementFoam2.a += pWaterMaterial.foamSubtract1;
|
||||
float4 displacementFoam3 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord, 0));
|
||||
float4 displacementFoam3 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord * pWaterMaterial.tile3, 0));
|
||||
displacementFoam3.a += pWaterMaterial.foamSubtract2;
|
||||
float4 displacementFoam4 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord, 0));
|
||||
float4 displacementFoam4 = pWaterMaterial.displacementTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord * pWaterMaterial.tile4, 0));
|
||||
displacementFoam4.a += pWaterMaterial.foamSubtract3;
|
||||
float4 displacementFoam = displacementFoam1 + displacementFoam2 + displacementFoam3 + displacementFoam4;
|
||||
|
||||
float2 slopes1 = pWaterMaterial.slopeTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord, 0));
|
||||
float2 slopes2 = pWaterMaterial.slopeTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord, 1));
|
||||
float2 slopes3 = pWaterMaterial.slopeTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord, 2));
|
||||
float2 slopes4 = pWaterMaterial.slopeTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord, 3));
|
||||
float2 slopes1 = pWaterMaterial.slopeTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord * pWaterMaterial.tile1, 0));
|
||||
float2 slopes2 = pWaterMaterial.slopeTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord * pWaterMaterial.tile2, 1));
|
||||
float2 slopes3 = pWaterMaterial.slopeTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord * pWaterMaterial.tile3, 2));
|
||||
float2 slopes4 = pWaterMaterial.slopeTextures.Sample(pWaterMaterial.sampler, float3(vert.texCoord * pWaterMaterial.tile4, 3));
|
||||
float2 slopes = slopes1 + slopes2 + slopes3 + slopes4;
|
||||
|
||||
slopes *= pWaterMaterial.normalStrength;
|
||||
|
||||
Reference in New Issue
Block a user