修改内容: 1. NanoVDBLoader 添加边界框信息读取 (worldBBox[6]) 2. BattleFireDirect 添加 Volume 渲染相关函数: - InitVolumeRootSignature(): 体积渲染的 root signature - CreateVolumePSO(): 线框模式 PSO 3. main.cpp: - 打印 NanoVDB 边界框信息 - 创建立方体网格表示边界框 - 渲染绿色线框立方体 4. 修复 CreateShaderFromFile 支持 #include 5. 修复 volume.hlsl 使用 32 位地址模式 验证结果: - 成功显示 NanoVDB 边界框线框 - 着色器能正确读取 NanoVDB 数据
39 lines
1.7 KiB
C
39 lines
1.7 KiB
C
#pragma once
|
|
#include <d3d12.h>
|
|
#include <dxgi1_4.h>
|
|
#include <d3dcompiler.h>
|
|
#include <DirectXMath.h>
|
|
#include <stdio.h>
|
|
|
|
D3D12_RESOURCE_BARRIER InitResourceBarrier(
|
|
ID3D12Resource* inResource, D3D12_RESOURCE_STATES inPrevState,
|
|
D3D12_RESOURCE_STATES inNextState);
|
|
ID3D12RootSignature* InitRootSignature();
|
|
ID3D12RootSignature* InitVolumeRootSignature();
|
|
void CreateShaderFromFile(
|
|
LPCTSTR inShaderFilePath,
|
|
const char* inMainFunctionName,
|
|
const char* inTarget,//"vs_5_0","ps_5_0","vs_4_0"
|
|
D3D12_SHADER_BYTECODE* inShader);
|
|
ID3D12Resource* CreateConstantBufferObject(int inDataLen);
|
|
void UpdateConstantBuffer(ID3D12Resource* inCB, void* inData, int inDataLen);
|
|
ID3D12Resource* CreateBufferObject(ID3D12GraphicsCommandList* inCommandList,
|
|
void* inData, int inDataLen, D3D12_RESOURCE_STATES inFinalResourceState);
|
|
ID3D12PipelineState* CreatePSO(ID3D12RootSignature* inID3D12RootSignature,
|
|
D3D12_SHADER_BYTECODE inVertexShader, D3D12_SHADER_BYTECODE inPixelShader,
|
|
D3D12_SHADER_BYTECODE inGSShader);
|
|
ID3D12PipelineState* CreateVolumePSO(ID3D12RootSignature* inID3D12RootSignature,
|
|
D3D12_SHADER_BYTECODE inVertexShader, D3D12_SHADER_BYTECODE inPixelShader);
|
|
bool InitD3D12(HWND inHWND, int inWidth, int inHeight);
|
|
ID3D12GraphicsCommandList* GetCommandList();
|
|
ID3D12CommandAllocator* GetCommandAllocator();
|
|
void WaitForCompletionOfCommandList();
|
|
void EndCommandList();
|
|
void BeginRenderToSwapChain(ID3D12GraphicsCommandList* inCommandList);
|
|
void EndRenderToSwapChain(ID3D12GraphicsCommandList* inCommandList);
|
|
void SwapD3D12Buffers();
|
|
ID3D12Resource* CreateTexture2D(ID3D12GraphicsCommandList* inCommandList,
|
|
const void*inPixelData,int inDataSizeInBytes,int inWidth,int inHeight,
|
|
DXGI_FORMAT inFormat);
|
|
ID3D12Device* GetD3DDevice();
|