Bind gaussian splat chunk metadata in prepare pass
This commit is contained in:
@@ -20,6 +20,25 @@ Shader "Builtin Gaussian Splat Utilities"
|
||||
float coefficients[45];
|
||||
};
|
||||
|
||||
struct GaussianSplatChunkData
|
||||
{
|
||||
uint colR;
|
||||
uint colG;
|
||||
uint colB;
|
||||
uint colA;
|
||||
float2 posX;
|
||||
float2 posY;
|
||||
float2 posZ;
|
||||
uint sclX;
|
||||
uint sclY;
|
||||
uint sclZ;
|
||||
uint shR;
|
||||
uint shG;
|
||||
uint shB;
|
||||
};
|
||||
|
||||
static const uint GAUSSIAN_SPLAT_CHUNK_SIZE = 256u;
|
||||
|
||||
static const float SH_C1 = 0.4886025;
|
||||
static const float SH_C2[] = { 1.0925484, -1.0925484, 0.3153916, -1.0925484, 0.5462742 };
|
||||
static const float SH_C3[] = { -0.5900436, 2.8906114, -0.4570458, 0.3731763, -0.4570458, 1.4453057, -0.5900436 };
|
||||
@@ -211,6 +230,7 @@ Shader "Builtin Gaussian Splat Utilities"
|
||||
StructuredBuffer<GaussianSplatOtherData> GaussianSplatOther;
|
||||
StructuredBuffer<float4> GaussianSplatColor;
|
||||
StructuredBuffer<GaussianSplatSHData> GaussianSplatSH;
|
||||
StructuredBuffer<GaussianSplatChunkData> GaussianSplatChunks;
|
||||
RWStructuredBuffer<uint> GaussianSplatSortDistances;
|
||||
RWStructuredBuffer<uint> GaussianSplatOrderBuffer;
|
||||
RWStructuredBuffer<GaussianSplatViewData> GaussianSplatViewDataBuffer;
|
||||
@@ -240,7 +260,16 @@ Shader "Builtin Gaussian Splat Utilities"
|
||||
const GaussianSplatOtherData otherData = GaussianSplatOther[index];
|
||||
const float4 colorOpacity = GaussianSplatColor[index];
|
||||
const GaussianSplatSHData shData = GaussianSplatSH[index];
|
||||
const GaussianSplatChunkData chunkData = GaussianSplatChunks[index / GAUSSIAN_SPLAT_CHUNK_SIZE];
|
||||
const uint shOrder = min((uint)gSplatParams.z, 3u);
|
||||
if (chunkData.posX.x > chunkData.posX.y ||
|
||||
chunkData.posY.x > chunkData.posY.y ||
|
||||
chunkData.posZ.x > chunkData.posZ.y)
|
||||
{
|
||||
GaussianSplatSortDistances[index] = 0xffffffffu;
|
||||
GaussianSplatViewDataBuffer[index] = viewData;
|
||||
return;
|
||||
}
|
||||
|
||||
const float3 worldCenter = mul(gModelMatrix, float4(localCenter, 1.0)).xyz;
|
||||
const float3 viewCenter = mul(gViewMatrix, float4(worldCenter, 1.0)).xyz;
|
||||
|
||||
Reference in New Issue
Block a user