Minor rename fixes

This commit is contained in:
Wojciech Figat
2022-05-12 13:46:05 +02:00
parent f7955a5c4e
commit abcc319168
6 changed files with 35 additions and 24 deletions

View File

@@ -490,7 +490,7 @@ void MaterialParameter::Bind(BindMeta& meta) const
Platform::MemoryClear(&bindingData, sizeof(bindingData));
for (int32 i = 0; i < 4; i++)
meta.Context->BindSR(_registerIndex + i, bindingData.Cascades[i] ? bindingData.Cascades[i]->ViewVolume() : nullptr);
*((GlobalSignDistanceFieldPass::ConstantsData*)(meta.Constants.Get() + _offset)) = bindingData.GlobalSDF;
*((GlobalSignDistanceFieldPass::ConstantsData*)(meta.Constants.Get() + _offset)) = bindingData.Constants;
break;
}
default:

View File

@@ -549,10 +549,10 @@ bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* co
}
// Init constants
result.GlobalSurfaceAtlas.ViewPos = renderContext.View.Position;
result.GlobalSurfaceAtlas.Resolution = (float)resolution;
result.GlobalSurfaceAtlas.ChunkSize = distance / (float)GLOBAL_SURFACE_ATLAS_CHUNKS_RESOLUTION;
result.GlobalSurfaceAtlas.ObjectsCount = surfaceAtlasData.Objects.Count();
result.Constants.ViewPos = renderContext.View.Position;
result.Constants.Resolution = (float)resolution;
result.Constants.ChunkSize = distance / (float)GLOBAL_SURFACE_ATLAS_CHUNKS_RESOLUTION;
result.Constants.ObjectsCount = surfaceAtlasData.Objects.Count();
// Cull objects into chunks (for faster Atlas sampling)
if (surfaceAtlasData.Objects.Count() != 0)
@@ -629,7 +629,7 @@ bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* co
data.ViewNearPlane = renderContext.View.Near;
data.ViewFarPlane = renderContext.View.Far;
data.CulledObjectsCapacity = objectsBufferCapacity;
data.GlobalSurfaceAtlas = result.GlobalSurfaceAtlas;
data.GlobalSurfaceAtlas = result.Constants;
context->UpdateCB(_cb0, &data);
context->BindCB(0, _cb0);
static_assert(GLOBAL_SURFACE_ATLAS_CHUNKS_RESOLUTION % GLOBAL_SURFACE_ATLAS_CHUNKS_GROUP_SIZE == 0, "Invalid chunks resolution/groups setting.");
@@ -710,8 +710,8 @@ bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* co
context->BindCB(0, _cb0);
Data0 data;
data.ViewWorldPos = renderContext.View.Position;
data.GlobalSDF = bindingDataSDF.GlobalSDF;
data.GlobalSurfaceAtlas = result.GlobalSurfaceAtlas;
data.GlobalSDF = bindingDataSDF.Constants;
data.GlobalSurfaceAtlas = result.Constants;
// Shade object tiles influenced by lights to calculate direct lighting
// TODO: reduce redraw frequency for static lights (StaticFlags::Lightmap)
@@ -825,8 +825,8 @@ void GlobalSurfaceAtlasPass::RenderDebug(RenderContext& renderContext, GPUContex
data.ViewFarPlane = renderContext.View.Far;
for (int32 i = 0; i < 4; i++)
data.ViewFrustumWorldRays[i] = Vector4(renderContext.List->FrustumCornersWs[i + 4], 0);
data.GlobalSDF = bindingDataSDF.GlobalSDF;
data.GlobalSurfaceAtlas = bindingData.GlobalSurfaceAtlas;
data.GlobalSDF = bindingDataSDF.Constants;
data.GlobalSurfaceAtlas = bindingData.Constants;
context->UpdateCB(_cb0, &data);
context->BindCB(0, _cb0);
}
@@ -837,7 +837,7 @@ void GlobalSurfaceAtlasPass::RenderDebug(RenderContext& renderContext, GPUContex
}
context->BindSR(8, bindingData.Chunks ? bindingData.Chunks->View() : nullptr);
context->BindSR(9, bindingData.CulledObjects ? bindingData.CulledObjects->View() : nullptr);
context->BindSR(10, bindingData.Atlas[0]->View());
context->BindSR(10, bindingData.AtlasDepth->View());
context->SetState(_psDebug);
context->SetRenderTarget(output->View());
{
@@ -845,23 +845,23 @@ void GlobalSurfaceAtlasPass::RenderDebug(RenderContext& renderContext, GPUContex
Vector2 outputSizeTwoThird = outputSize * 0.666f;
// Full screen - direct light
context->BindSR(11, bindingData.Atlas[4]->View());
context->BindSR(11, bindingData.AtlasLighting->View());
context->SetViewport(outputSize.X, outputSize.Y);
context->SetScissor(Rectangle(0, 0, outputSizeTwoThird.X, outputSize.Y));
context->DrawFullscreenTriangle();
// Bottom left - diffuse
context->BindSR(11, bindingData.Atlas[1]->View());
context->BindSR(11, bindingData.AtlasGBuffer0->View());
context->SetViewportAndScissors(Viewport(outputSizeTwoThird.X, 0, outputSizeThird.X, outputSizeThird.Y));
context->DrawFullscreenTriangle();
// Bottom middle - normals
context->BindSR(11, bindingData.Atlas[2]->View());
context->BindSR(11, bindingData.AtlasGBuffer1->View());
context->SetViewportAndScissors(Viewport(outputSizeTwoThird.X, outputSizeThird.Y, outputSizeThird.X, outputSizeThird.Y));
context->DrawFullscreenTriangle();
// Bottom right - roughness/metalness/ao
context->BindSR(11, bindingData.Atlas[3]->View());
context->BindSR(11, bindingData.AtlasGBuffer2->View());
context->SetViewportAndScissors(Viewport(outputSizeTwoThird.X, outputSizeTwoThird.Y, outputSizeThird.X, outputSizeThird.Y));
context->DrawFullscreenTriangle();
}

View File

@@ -24,10 +24,21 @@ public:
// Binding data for the GPU.
struct BindingData
{
GPUTexture* Atlas[5];
union
{
struct
{
GPUTexture* AtlasDepth;
GPUTexture* AtlasGBuffer0;
GPUTexture* AtlasGBuffer1;
GPUTexture* AtlasGBuffer2;
GPUTexture* AtlasLighting;
};
GPUTexture* Atlas[5];
};
GPUBuffer* Chunks;
GPUBuffer* CulledObjects;
ConstantsData GlobalSurfaceAtlas;
ConstantsData Constants;
};
private:

View File

@@ -732,12 +732,12 @@ bool GlobalSignDistanceFieldPass::Render(RenderContext& renderContext, GPUContex
const float maxDistance = distance * 2;
const float voxelSize = maxDistance / resolution;
const Vector3 center = cascade.Position;
result.GlobalSDF.CascadePosDistance[cascadeIndex] = Vector4(center, distance);
result.GlobalSDF.CascadeVoxelSize.Raw[cascadeIndex] = voxelSize;
result.Constants.CascadePosDistance[cascadeIndex] = Vector4(center, distance);
result.Constants.CascadeVoxelSize.Raw[cascadeIndex] = voxelSize;
result.Cascades[cascadeIndex] = cascade.Texture;
result.CascadeMips[cascadeIndex] = cascade.Mip;
}
result.GlobalSDF.Resolution = (float)resolution;
result.Constants.Resolution = (float)resolution;
sdfData.Result = result;
return false;
}
@@ -760,7 +760,7 @@ void GlobalSignDistanceFieldPass::RenderDebug(RenderContext& renderContext, GPUC
data.ViewFarPlane = renderContext.View.Far;
for (int32 i = 0; i < 4; i++)
data.ViewFrustumWorldRays[i] = Vector4(renderContext.List->FrustumCornersWs[i + 4], 0);
data.GlobalSDF = bindingData.GlobalSDF;
data.GlobalSDF = bindingData.Constants;
context->UpdateCB(_cb0, &data);
context->BindCB(0, _cb0);
}

View File

@@ -24,7 +24,7 @@ public:
{
GPUTexture* Cascades[4];
GPUTexture* CascadeMips[4];
ConstantsData GlobalSDF;
ConstantsData Constants;
};
private:

View File

@@ -22,7 +22,7 @@ GlobalSurfaceAtlasData GlobalSurfaceAtlas;
LightData Light;
META_CB_END
struct AtlasVertexIput
struct AtlasVertexInput
{
float2 Position : POSITION0;
float2 TileUV : TEXCOORD0;
@@ -41,7 +41,7 @@ META_VS(true, FEATURE_LEVEL_SM5)
META_VS_IN_ELEMENT(POSITION, 0, R16G16_FLOAT, 0, ALIGN, PER_VERTEX, 0, true)
META_VS_IN_ELEMENT(TEXCOORD, 0, R16G16_FLOAT, 0, ALIGN, PER_VERTEX, 0, true)
META_VS_IN_ELEMENT(TEXCOORD, 1, R32_UINT, 0, ALIGN, PER_VERTEX, 0, true)
AtlasVertexOutput VS_Atlas(AtlasVertexIput input)
AtlasVertexOutput VS_Atlas(AtlasVertexInput input)
{
AtlasVertexOutput output;
output.Position = float4(input.Position, 1, 1);