Fixing some shader stuff
This commit is contained in:
@@ -26,10 +26,10 @@ float4 fragmentMain(in FragmentParameter params) : SV_Target
|
||||
{
|
||||
result += pLightEnv.directionalLights[i].illuminate(lightingParams, brdf);
|
||||
}
|
||||
for(uint i = 0; i < lightCount; ++i)
|
||||
for(uint i = 0; i < pLightEnv.numPointLights; ++i)
|
||||
{
|
||||
uint lightIndex = pLightCullingData.lightIndexList[startOffset + i];
|
||||
result += pLightEnv.pointLights[lightIndex].illuminate(lightingParams, brdf);
|
||||
//uint lightIndex = pLightCullingData.lightIndexList[startOffset + i];
|
||||
result += pLightEnv.pointLights[i].illuminate(lightingParams, brdf);
|
||||
}
|
||||
return float4(params.vertexColor, 1.0f);
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@ import Common;
|
||||
|
||||
struct DebugVertex
|
||||
{
|
||||
float3 position;
|
||||
float3 color;
|
||||
float3 position : POSITION;
|
||||
float3 color : COLOR0;
|
||||
};
|
||||
|
||||
struct Params
|
||||
|
||||
@@ -65,6 +65,12 @@ struct PrimitiveAttributes
|
||||
uint cull: SV_CullPrimitive;
|
||||
};
|
||||
|
||||
uint unpackPrimitiveIndices(uint index)
|
||||
{
|
||||
uint32_t packed = pScene.primitiveIndices[index / 4];
|
||||
return (packed >> (index % 4)) & 0xff;
|
||||
}
|
||||
|
||||
[numthreads(MESH_GROUP_SIZE, 1, 1)]
|
||||
[outputtopology("triangle")]
|
||||
[shader("mesh")]
|
||||
@@ -84,9 +90,9 @@ void meshMain(
|
||||
{
|
||||
uint p = min(i, m.primitiveCount - 1);
|
||||
{
|
||||
uint local_idx0 = pScene.primitiveIndices[m.primitiveOffset + (p * 3) + 0];
|
||||
uint local_idx1 = pScene.primitiveIndices[m.primitiveOffset + (p * 3) + 1];
|
||||
uint local_idx2 = pScene.primitiveIndices[m.primitiveOffset + (p * 3) + 2];
|
||||
uint local_idx0 = unpackPrimitiveIndices(m.primitiveOffset + (p * 3) + 0);
|
||||
uint local_idx1 = unpackPrimitiveIndices(m.primitiveOffset + (p * 3) + 1);
|
||||
uint local_idx2 = unpackPrimitiveIndices(m.primitiveOffset + (p * 3) + 2);
|
||||
indices[p] = uint3(local_idx0, local_idx1, local_idx2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,12 +14,12 @@ struct MeshletDescription
|
||||
struct MeshData
|
||||
{
|
||||
BoundingSphere bounding;
|
||||
uint32_t numMeshlets;
|
||||
uint32_t meshletOffset;
|
||||
uint32_t firstIndex;
|
||||
uint32_t numIndices;
|
||||
uint32_t indicesOffset;
|
||||
uint32_t pad0[3];
|
||||
uint32_t numMeshlets;
|
||||
uint32_t meshletOffset;
|
||||
uint32_t firstIndex;
|
||||
uint32_t numIndices;
|
||||
uint32_t indicesOffset;
|
||||
uint32_t pad0[3];
|
||||
};
|
||||
|
||||
static const uint MAX_VERTICES = 64;
|
||||
@@ -38,7 +38,8 @@ struct Scene
|
||||
StructuredBuffer<InstanceData> instances;
|
||||
StructuredBuffer<MeshData> meshData;
|
||||
StructuredBuffer<MeshletDescription> meshletInfos;
|
||||
StructuredBuffer<uint8_t> primitiveIndices;
|
||||
// uint8_t is not valid in DXIL
|
||||
StructuredBuffer<uint32_t> primitiveIndices;
|
||||
StructuredBuffer<uint32_t> vertexIndices;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user