Skip to content

Commit

Permalink
Updated code to match the book text
Browse files Browse the repository at this point in the history
  • Loading branch information
corporateshark committed Feb 3, 2025
1 parent 1c15615 commit 161a1d3
Show file tree
Hide file tree
Showing 7 changed files with 20 additions and 17 deletions.
4 changes: 2 additions & 2 deletions Chapter05/07_MeshRenderer/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ struct DrawIndexedIndirectCommand {
uint32_t count;
uint32_t instanceCount;
uint32_t firstIndex;
uint32_t baseVertex;
int32_t baseVertex;
uint32_t baseInstance;
};

Expand Down Expand Up @@ -213,7 +213,7 @@ class VKMesh final
.count = meshData.meshes[i].getLODIndicesCount(0),
.instanceCount = 1,
.firstIndex = meshData.meshes[i].indexOffset,
.baseVertex = meshData.meshes[i].vertexOffset,
.baseVertex = (int32_t)meshData.meshes[i].vertexOffset,
.baseInstance = 0,
};
}
Expand Down
4 changes: 2 additions & 2 deletions Chapter08/VKMesh08.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ struct DrawIndexedIndirectCommand {
uint32_t count;
uint32_t instanceCount;
uint32_t firstIndex;
uint32_t baseVertex;
int32_t baseVertex;
uint32_t baseInstance;
};

Expand Down Expand Up @@ -412,7 +412,7 @@ class VKMesh final
.count = mesh.getLODIndicesCount(lod),
.instanceCount = 1,
.firstIndex = mesh.indexOffset, // + mesh.lodOffset[lod],
.baseVertex = mesh.vertexOffset,
.baseVertex = (int32_t)mesh.vertexOffset,
.baseInstance = ddIndex++,
};
*dd++ = {
Expand Down
7 changes: 4 additions & 3 deletions Chapter11/01_CullingCPU/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,10 @@ int main()
{
DrawIndexedIndirectCommand* cmd = mesh.getDrawIndexedIndirectCommandPtr();
for (auto& p : scene.meshForNode) {
const BoundingBox box = meshData.boxes[p.second].getTransformed(scene.globalTransform[p.first]);
cmd->instanceCount = isBoxInFrustum(frustumPlanes, frustumCorners, box) ? 1 : 0;
numVisibleMeshes += (cmd++)->instanceCount;
const BoundingBox box = meshData.boxes[p.second].getTransformed(scene.globalTransform[p.first]);
const uint32_t count = isBoxInFrustum(frustumPlanes, frustumCorners, box) ? 1 : 0;
(cmd++)->instanceCount = count;
numVisibleMeshes += count;
}
ctx->flushMappedMemory(mesh.indirectBuffer_.bufferIndirect_, 0, mesh.numMeshes_ * sizeof(DrawIndexedIndirectCommand));
}
Expand Down
2 changes: 1 addition & 1 deletion Chapter11/02_CullingGPU/src/FrustumCulling.comp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ struct DrawIndexedIndirectCommand {
uint count;
uint instanceCount;
uint firstIndex;
uint baseVertex;
int baseVertex;
uint baseInstance;
};

Expand Down
7 changes: 4 additions & 3 deletions Chapter11/02_CullingGPU/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -164,9 +164,10 @@ int main()

DrawIndexedIndirectCommand* cmd = mesh.getDrawIndexedIndirectCommandPtr();
for (auto& p : scene.meshForNode) {
const BoundingBox box = reorderedBoxes[p.first];
cmd->instanceCount = isBoxInFrustum(cullingData.frustumPlanes, cullingData.frustumCorners, box) ? 1 : 0;
numVisibleMeshes += (cmd++)->instanceCount;
const BoundingBox box = reorderedBoxes[p.first];
const uint32_t count = isBoxInFrustum(cullingData.frustumPlanes, cullingData.frustumCorners, box) ? 1 : 0;
(cmd++)->instanceCount = count;
numVisibleMeshes += count;
}
ctx->flushMappedMemory(mesh.indirectBuffer_.bufferIndirect_, 0, mesh.numMeshes_ * sizeof(DrawIndexedIndirectCommand));
} else if (cullingMode == CullingMode_GPU) {
Expand Down
11 changes: 6 additions & 5 deletions Chapter11/06_FinalDemo/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,8 @@ int main()
.debugName = "texLuminance",
}) };

for (uint32_t l = 1; l != LVK_ARRAY_NUM_ELEMENTS(texLumViews); l++) {
texLumViews[l] = ctx->createTextureView(texLumViews[0], { .mipLevel = l, .swizzle = swizzle });
for (uint32_t v = 1; v != LVK_ARRAY_NUM_ELEMENTS(texLumViews); v++) {
texLumViews[v] = ctx->createTextureView(texLumViews[0], { .mipLevel = v, .swizzle = swizzle });
}

const uint16_t brightPixel = glm::packHalf1x16(50.0f);
Expand Down Expand Up @@ -579,9 +579,10 @@ int main()

DrawIndexedIndirectCommand* cmd = meshesOpaque.getDrawIndexedIndirectCommandPtr();
for (size_t i = 0; i != meshesOpaque.drawCommands_.size(); i++) {
const BoundingBox box = reorderedBoxes[mesh.drawData_[cmd->baseInstance].transformId];
cmd->instanceCount = isBoxInFrustum(cullingData.frustumPlanes, cullingData.frustumCorners, box) ? 1 : 0;
numVisibleMeshes += (cmd++)->instanceCount;
const BoundingBox box = reorderedBoxes[mesh.drawData_[cmd->baseInstance].transformId];
const uint32_t count = isBoxInFrustum(cullingData.frustumPlanes, cullingData.frustumCorners, box) ? 1 : 0;
(cmd++)->instanceCount = count;
numVisibleMeshes += count;
}
ctx->flushMappedMemory(meshesOpaque.bufferIndirect_, 0, meshesOpaque.drawCommands_.size() * sizeof(DrawIndexedIndirectCommand));
} else if (cullingMode == CullingMode_GPU) {
Expand Down
2 changes: 1 addition & 1 deletion Chapter11/VKMesh11.h
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ class VKMesh11
.count = mesh.getLODIndicesCount(lod),
.instanceCount = 1,
.firstIndex = mesh.indexOffset, // + mesh.lodOffset[lod],
.baseVertex = mesh.vertexOffset,
.baseVertex = (int32_t)mesh.vertexOffset,
.baseInstance = ddIndex++,
};
*dd++ = {
Expand Down

0 comments on commit 161a1d3

Please sign in to comment.