Changing descriptor update signature
This commit is contained in:
@@ -128,21 +128,21 @@ void BasePass::beginFrame(const Component::Camera& cam) {
|
||||
skyboxBuffer->pipelineBarrier(Gfx::SE_ACCESS_TRANSFER_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
Gfx::SE_ACCESS_UNIFORM_READ_BIT, Gfx::SE_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||
skyboxDataSet = skyboxDataLayout->allocateDescriptorSet();
|
||||
skyboxDataSet->updateBuffer(0, skyboxBuffer);
|
||||
skyboxDataSet->updateBuffer(0, 0, skyboxBuffer);
|
||||
skyboxDataSet->writeChanges();
|
||||
textureSet = textureLayout->allocateDescriptorSet();
|
||||
textureSet->updateTexture(0, skybox.day);
|
||||
textureSet->updateTexture(1, skybox.night);
|
||||
textureSet->updateSampler(2, skyboxSampler);
|
||||
textureSet->updateTexture(0, 0, skybox.day);
|
||||
textureSet->updateTexture(1, 0, skybox.night);
|
||||
textureSet->updateSampler(2, 0, skyboxSampler);
|
||||
textureSet->writeChanges();
|
||||
}
|
||||
}
|
||||
|
||||
void BasePass::render() {
|
||||
opaqueCulling->updateBuffer(0, oLightIndexList);
|
||||
opaqueCulling->updateTexture(1, oLightGrid);
|
||||
transparentCulling->updateBuffer(0, tLightIndexList);
|
||||
transparentCulling->updateTexture(1, tLightGrid);
|
||||
opaqueCulling->updateBuffer(0, 0, oLightIndexList);
|
||||
opaqueCulling->updateTexture(1, 0, oLightGrid);
|
||||
transparentCulling->updateBuffer(0, 0, tLightIndexList);
|
||||
transparentCulling->updateTexture(1, 0, tLightGrid);
|
||||
opaqueCulling->writeChanges();
|
||||
transparentCulling->writeChanges();
|
||||
|
||||
@@ -157,7 +157,7 @@ void BasePass::render() {
|
||||
// Base Rendering
|
||||
for (VertexData* vertexData : VertexData::getList()) {
|
||||
transparentData.addAll(vertexData->getTransparentData());
|
||||
vertexData->getInstanceDataSet()->updateBuffer(6, cullingBuffer);
|
||||
vertexData->getInstanceDataSet()->updateBuffer(6, 0, cullingBuffer);
|
||||
vertexData->getInstanceDataSet()->writeChanges();
|
||||
permutation.setVertexData(vertexData->getTypeName());
|
||||
const auto& materials = vertexData->getMaterialData();
|
||||
|
||||
@@ -53,7 +53,7 @@ void CachedDepthPass::render() {
|
||||
permutation.setDepthCulling(true);
|
||||
for (VertexData* vertexData : VertexData::getList()) {
|
||||
permutation.setVertexData(vertexData->getTypeName());
|
||||
vertexData->getInstanceDataSet()->updateBuffer(6, cullingBuffer);
|
||||
vertexData->getInstanceDataSet()->updateBuffer(6, 0, cullingBuffer);
|
||||
vertexData->getInstanceDataSet()->writeChanges();
|
||||
|
||||
// Create Pipeline(VertexData)
|
||||
@@ -63,7 +63,7 @@ void CachedDepthPass::render() {
|
||||
// SceneData => per meshtype
|
||||
Gfx::PermutationId id(permutation);
|
||||
|
||||
Gfx::ORenderCommand command = graphics->createRenderCommand("DepthRender");
|
||||
Gfx::ORenderCommand command = graphics->createRenderCommand("CullingRender");
|
||||
command->setViewport(viewport);
|
||||
|
||||
const Gfx::ShaderCollection* collection = graphics->getShaderCompiler()->findShaders(id);
|
||||
|
||||
@@ -75,8 +75,8 @@ void DepthCullingPass::render() {
|
||||
|
||||
depthMipBuffer->rotateBuffer(depthMipBuffer->getNumElements() * sizeof(uint32));
|
||||
Gfx::PDescriptorSet set = depthAttachmentLayout->allocateDescriptorSet();
|
||||
set->updateTexture(0, Gfx::PTexture2D(depthAttachment.getTexture()));
|
||||
set->updateBuffer(1, depthMipBuffer);
|
||||
set->updateTexture(0, 0, depthAttachment.getTexture());
|
||||
set->updateBuffer(1, 0, depthMipBuffer);
|
||||
set->writeChanges();
|
||||
|
||||
timestamps->write(Gfx::SE_PIPELINE_STAGE_TOP_OF_PIPE_BIT, "MipBegin");
|
||||
@@ -125,7 +125,7 @@ void DepthCullingPass::render() {
|
||||
permutation.setDepthCulling(getGlobals().useDepthCulling);
|
||||
for (VertexData* vertexData : VertexData::getList()) {
|
||||
permutation.setVertexData(vertexData->getTypeName());
|
||||
vertexData->getInstanceDataSet()->updateBuffer(6, cullingBuffer);
|
||||
vertexData->getInstanceDataSet()->updateBuffer(6, 0, cullingBuffer);
|
||||
vertexData->getInstanceDataSet()->writeChanges();
|
||||
// Create Pipeline(VertexData)
|
||||
// Descriptors:
|
||||
|
||||
@@ -42,13 +42,13 @@ void LightCullingPass::render() {
|
||||
Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
||||
tLightGrid->pipelineBarrier(Gfx::SE_ACCESS_SHADER_READ_BIT, Gfx::SE_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, Gfx::SE_ACCESS_SHADER_WRITE_BIT,
|
||||
Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
||||
cullingDescriptorSet->updateTexture(0, depthAttachment);
|
||||
cullingDescriptorSet->updateBuffer(1, oLightIndexCounter);
|
||||
cullingDescriptorSet->updateBuffer(2, tLightIndexCounter);
|
||||
cullingDescriptorSet->updateBuffer(3, oLightIndexList);
|
||||
cullingDescriptorSet->updateBuffer(4, tLightIndexList);
|
||||
cullingDescriptorSet->updateTexture(5, Gfx::PTexture2D(oLightGrid));
|
||||
cullingDescriptorSet->updateTexture(6, Gfx::PTexture2D(tLightGrid));
|
||||
cullingDescriptorSet->updateTexture(0, 0, depthAttachment);
|
||||
cullingDescriptorSet->updateBuffer(1, 0, oLightIndexCounter);
|
||||
cullingDescriptorSet->updateBuffer(2, 0, tLightIndexCounter);
|
||||
cullingDescriptorSet->updateBuffer(3, 0, oLightIndexList);
|
||||
cullingDescriptorSet->updateBuffer(4, 0, tLightIndexList);
|
||||
cullingDescriptorSet->updateTexture(5, 0, oLightGrid);
|
||||
cullingDescriptorSet->updateTexture(6, 0, tLightGrid);
|
||||
cullingDescriptorSet->writeChanges();
|
||||
Gfx::OComputeCommand computeCommand = graphics->createComputeCommand("CullingCommand");
|
||||
if (getGlobals().useLightCulling) {
|
||||
@@ -96,8 +96,8 @@ void LightCullingPass::publishOutputs() {
|
||||
dispatchParamsBuffer->pipelineBarrier(Gfx::SE_ACCESS_TRANSFER_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
Gfx::SE_ACCESS_UNIFORM_READ_BIT, Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
||||
dispatchParamsSet = dispatchParamsLayout->allocateDescriptorSet();
|
||||
dispatchParamsSet->updateBuffer(0, dispatchParamsBuffer);
|
||||
dispatchParamsSet->updateBuffer(1, frustumBuffer);
|
||||
dispatchParamsSet->updateBuffer(0, 0, dispatchParamsBuffer);
|
||||
dispatchParamsSet->updateBuffer(1, 0, frustumBuffer);
|
||||
dispatchParamsSet->writeChanges();
|
||||
|
||||
cullingDescriptorLayout = graphics->createDescriptorLayout("pCullingParams");
|
||||
@@ -305,8 +305,8 @@ void LightCullingPass::setupFrustums() {
|
||||
Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
||||
|
||||
Gfx::PDescriptorSet dispatchParamsSet = dispatchParamsLayout->allocateDescriptorSet();
|
||||
dispatchParamsSet->updateBuffer(0, frustumDispatchParamsBuffer);
|
||||
dispatchParamsSet->updateBuffer(1, frustumBuffer);
|
||||
dispatchParamsSet->updateBuffer(0, 0, frustumDispatchParamsBuffer);
|
||||
dispatchParamsSet->updateBuffer(1, 0, frustumBuffer);
|
||||
dispatchParamsSet->writeChanges();
|
||||
|
||||
Gfx::OComputeCommand command = graphics->createComputeCommand("FrustumCommand");
|
||||
|
||||
@@ -103,9 +103,9 @@ void RayTracingPass::render() {
|
||||
.bottomLevelStructures = accelerationStructures,
|
||||
});
|
||||
Gfx::PDescriptorSet desc = paramsLayout->allocateDescriptorSet();
|
||||
desc->updateAccelerationStructure(0, tlas);
|
||||
desc->updateTexture(1, Gfx::PTexture2D(texture));
|
||||
desc->updateBuffer(2, StaticMeshVertexData::getInstance()->getIndexBuffer());
|
||||
desc->updateAccelerationStructure(0, 0, tlas);
|
||||
desc->updateTexture(1, 0, texture);
|
||||
desc->updateBuffer(2, 0, StaticMeshVertexData::getInstance()->getIndexBuffer());
|
||||
desc->writeChanges();
|
||||
|
||||
Gfx::ORenderCommand command = graphics->createRenderCommand("RayTracing");
|
||||
|
||||
@@ -41,7 +41,7 @@ void RenderPass::beginFrame(const Component::Camera& cam) {
|
||||
Gfx::SE_PIPELINE_STAGE_TRANSFER_BIT);
|
||||
viewParamsLayout->reset();
|
||||
viewParamsSet = viewParamsLayout->allocateDescriptorSet();
|
||||
viewParamsSet->updateBuffer(0, viewParamsBuffer);
|
||||
viewParamsSet->updateBuffer(0, 0, viewParamsBuffer);
|
||||
viewParamsSet->writeChanges();
|
||||
}
|
||||
|
||||
|
||||
@@ -86,9 +86,9 @@ void TerrainRenderer::beginFrame() {
|
||||
Gfx::SE_PIPELINE_STAGE_TASK_SHADER_BIT_EXT);
|
||||
|
||||
set = layout->allocateDescriptorSet();
|
||||
set->updateBuffer(0, tilesBuffer);
|
||||
set->updateTexture(1, Gfx::PTexture2D(displacementMap));
|
||||
set->updateSampler(2, sampler);
|
||||
set->updateBuffer(0, 0, tilesBuffer);
|
||||
set->updateTexture(1, 0, Gfx::PTexture2D(displacementMap));
|
||||
set->updateSampler(2, 0, sampler);
|
||||
set->writeChanges();
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ void TextPass::beginFrame(const Component::Camera& cam) {
|
||||
}
|
||||
auto proj = viewport->getProjectionMatrix();
|
||||
projectionBuffer->updateContents(0, sizeof(Matrix4), &proj);
|
||||
generalSet->updateBuffer(1, projectionBuffer);
|
||||
generalSet->updateBuffer(1, 0, projectionBuffer);
|
||||
generalSet->writeChanges();
|
||||
// co_return;
|
||||
}
|
||||
@@ -139,8 +139,8 @@ void TextPass::createRenderPass() {
|
||||
});
|
||||
|
||||
generalSet = generalLayout->allocateDescriptorSet();
|
||||
generalSet->updateBuffer(0, projectionBuffer);
|
||||
generalSet->updateSampler(1, glyphSampler);
|
||||
generalSet->updateBuffer(0, 0, projectionBuffer);
|
||||
generalSet->updateSampler(1, 0, glyphSampler);
|
||||
generalSet->writeChanges();
|
||||
|
||||
pipelineLayout = graphics->createPipelineLayout();
|
||||
@@ -194,7 +194,9 @@ TextPass::FontData& TextPass::getFontData(PFontAsset font) {
|
||||
|
||||
textureArrayLayout->reset();
|
||||
fd.textureArraySet = textureArrayLayout->allocateDescriptorSet();
|
||||
fd.textureArraySet->updateTextureArray(0, textures);
|
||||
for (uint32 i = 0; i < textures.size(); ++i) {
|
||||
fd.textureArraySet->updateTexture(0, i, textures[i]);
|
||||
}
|
||||
fd.textureArraySet->writeChanges();
|
||||
return fontData[font];
|
||||
}
|
||||
|
||||
@@ -14,15 +14,21 @@ UIPass::~UIPass() {}
|
||||
void UIPass::beginFrame(const Component::Camera& cam) {
|
||||
RenderPass::beginFrame(cam);
|
||||
VertexBufferCreateInfo info = {
|
||||
.sourceData = {.size = (uint32)(sizeof(UI::RenderElementStyle) * renderElements.size()), .data = (uint8*)renderElements.data()},
|
||||
.sourceData =
|
||||
{
|
||||
.size = (uint32)(sizeof(UI::RenderElementStyle) * renderElements.size()),
|
||||
.data = (uint8*)renderElements.data(),
|
||||
},
|
||||
.vertexSize = sizeof(UI::RenderElementStyle),
|
||||
.numVertices = (uint32)renderElements.size(),
|
||||
};
|
||||
elementBuffer = graphics->createVertexBuffer(info);
|
||||
uint32 numTextures = static_cast<uint32>(usedTextures.size());
|
||||
numTexturesBuffer->updateContents(0, sizeof(uint32), &numTextures);
|
||||
descriptorSet->updateBuffer(2, numTexturesBuffer);
|
||||
descriptorSet->updateTextureArray(3, usedTextures);
|
||||
descriptorSet->updateBuffer(2, 0, numTexturesBuffer);
|
||||
for (uint32 i = 0; i < usedTextures.size(); ++i) {
|
||||
descriptorSet->updateTexture(3, i, usedTextures[i]);
|
||||
}
|
||||
descriptorSet->writeChanges();
|
||||
// co_return;
|
||||
}
|
||||
@@ -131,8 +137,8 @@ void UIPass::createRenderPass() {
|
||||
numTexturesBuffer = graphics->createUniformBuffer(info);
|
||||
|
||||
descriptorSet = descriptorLayout->allocateDescriptorSet();
|
||||
descriptorSet->updateBuffer(0, uniformBuffer);
|
||||
descriptorSet->updateSampler(1, backgroundSampler);
|
||||
descriptorSet->updateBuffer(0, 0, uniformBuffer);
|
||||
descriptorSet->updateSampler(1, 0, backgroundSampler);
|
||||
descriptorSet->writeChanges();
|
||||
|
||||
pipelineLayout = graphics->createPipelineLayout();
|
||||
|
||||
@@ -21,8 +21,8 @@ void VisibilityPass::render() {
|
||||
Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
||||
visibilityDescriptor->reset();
|
||||
visibilitySet = visibilityDescriptor->allocateDescriptorSet();
|
||||
visibilitySet->updateTexture(0, visibilityAttachment.getTexture());
|
||||
visibilitySet->updateBuffer(1, cullingBuffer);
|
||||
visibilitySet->updateTexture(0, 0, visibilityAttachment.getTexture());
|
||||
visibilitySet->updateBuffer(1, 0, cullingBuffer);
|
||||
visibilitySet->writeChanges();
|
||||
|
||||
query->beginQuery();
|
||||
|
||||
@@ -532,14 +532,14 @@ void WaterRenderer::updateFFTDescriptor() {
|
||||
Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
|
||||
|
||||
computeSet = computeLayout->allocateDescriptorSet();
|
||||
computeSet->updateBuffer(0, paramsBuffer);
|
||||
computeSet->updateTexture(1, Gfx::PTexture2D(spectrumTextures));
|
||||
computeSet->updateTexture(2, Gfx::PTexture2D(initialSpectrumTextures));
|
||||
computeSet->updateTexture(3, Gfx::PTexture2D(displacementTextures));
|
||||
computeSet->updateTexture(4, Gfx::PTexture2D(slopeTextures));
|
||||
computeSet->updateTexture(5, Gfx::PTexture2D(boyancyData));
|
||||
computeSet->updateBuffer(6, spectrumBuffer);
|
||||
computeSet->updateSampler(7, linearRepeatSampler);
|
||||
computeSet->updateBuffer(0, 0, paramsBuffer);
|
||||
computeSet->updateTexture(1, 0, spectrumTextures);
|
||||
computeSet->updateTexture(2, 0, initialSpectrumTextures);
|
||||
computeSet->updateTexture(3, 0, displacementTextures);
|
||||
computeSet->updateTexture(4, 0, slopeTextures);
|
||||
computeSet->updateTexture(5, 0, boyancyData);
|
||||
computeSet->updateBuffer(6, 0, spectrumBuffer);
|
||||
computeSet->updateSampler(7, 0, linearRepeatSampler);
|
||||
computeSet->writeChanges();
|
||||
}
|
||||
|
||||
@@ -549,11 +549,11 @@ void WaterRenderer::updateMaterialDescriptor() {
|
||||
Gfx::SE_ACCESS_UNIFORM_READ_BIT,
|
||||
Gfx::SE_PIPELINE_STAGE_MESH_SHADER_BIT_EXT | Gfx::SE_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||
materialSet = materialLayout->allocateDescriptorSet();
|
||||
materialSet->updateBuffer(0, materialUniforms);
|
||||
materialSet->updateTexture(1, Gfx::PTexture2D(displacementTextures));
|
||||
materialSet->updateTexture(2, Gfx::PTexture2D(slopeTextures));
|
||||
materialSet->updateTexture(3, Gfx::PTextureCube(skyBox));
|
||||
materialSet->updateSampler(4, linearRepeatSampler);
|
||||
materialSet->updateBuffer(5, waterTiles);
|
||||
materialSet->updateBuffer(0, 0, materialUniforms);
|
||||
materialSet->updateTexture(1, 0, displacementTextures);
|
||||
materialSet->updateTexture(2, 0, slopeTextures);
|
||||
materialSet->updateTexture(3, 0, skyBox);
|
||||
materialSet->updateSampler(4, 0, linearRepeatSampler);
|
||||
materialSet->updateBuffer(5, 0, waterTiles);
|
||||
materialSet->writeChanges();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user