| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #pragma once
- #include <DX12GraphicsApi.h>
- #include <DX12Shader.h>
- #include <Vec3.h>
- #include <World3D.h>
- struct DX12ShaderLightInfo
- {
- Framework::Vec3<float> dayLightFactor;
- unsigned int padding = 0; // Padding to align to 16 bytes
- Framework::Vec3<float> dayLightDirection;
- unsigned int padding2 = 0; // Padding to align to 16 bytes
- };
- class CustomDX12API : public Framework::DirectX12
- {
- private:
- int* sbtChunkTextureIdBufferOffset;
- int* sbtChunkIndexBufferOffset;
- int* sbtChunkDataBufferOffset;
- int* sbtChunkLightBufferOffset;
- int* sbtSimpleBlocksTextureIdBufferOffset;
- int* sbtSimpleBlocksIndexBufferOffset;
- int* sbtSimpleBlocksVertexDataBufferOffset;
- int* sbtSimpleBlocksIndexOffsetBufferOffset;
- int* sbtSimpleBlocksLightBufferOffset;
- int* sbtDefaultLightBufferOffset;
- int* globalLightBufferOffset;
- Framework::DX12ShaderHitGroup* chunkHitGroup;
- Framework::DX12ShaderHitGroup* simpleBlocksHitGroup;
- Framework::DX12Buffer* lightInfoBuffer;
- DX12ShaderLightInfo lightInfo;
- Framework::DX12Buffer* defaultLightBuffer;
- public:
- CustomDX12API();
- ~CustomDX12API();
- void initializePipeline() override;
- void fillShaderBindingTable(
- Framework::DX12ShaderBindingTable* zShaderBindingTable,
- Framework::Model3D* zModel,
- int objectIndex,
- const Framework::DX12BLAS* zBLAS,
- int& lastHitGroupIndex) override;
- int fillGlobalShaderParams(Framework::Cam3D* zCam,
- Framework::DX12TLAS* zTLAS,
- Framework::DX12Texture* zTarget,
- int startIndex = 0) override;
- void renderWorld(Framework::World3D* zWorld,
- Framework::DX12TLAS* zTLAS,
- Framework::DX12ShaderBindingTable* zSBT,
- int& objectIndex) override;
- };
|