// BVLE Voxels - Smooth Surface Nets Vertex Shader (Phase 5.1) // Vertex pulling from StructuredBuffer. // Passes primaryMat + chunkIndex for per-pixel blending in PS. #include "voxelCommon.hlsli" struct SmoothVtx { float3 position; // world-space position (chunk origin already added) float3 normal; // face normal uint matPacked; // materialID(8) | secondaryMat(8) | blendWeight(8) | pad(8) uint chunkIndex; // packed: chunkIndex in low 16 bits }; StructuredBuffer smoothVertices : register(t6); struct VSOutput { float4 position : SV_POSITION; float3 worldPos : WORLDPOS; float3 normal : NORMAL; nointerpolation uint primaryMat : PRIMARYMAT; nointerpolation uint chunkIndex : CHUNKINDEX; }; [RootSignature(VOXEL_ROOTSIG)] VSOutput main(uint vertexID : SV_VertexID) { SmoothVtx vtx = smoothVertices[vertexID]; VSOutput output; output.position = mul(viewProjection, float4(vtx.position, 1.0)); output.worldPos = vtx.position; output.normal = vtx.normal; output.primaryMat = vtx.matPacked & 0xFF; output.chunkIndex = vtx.chunkIndex & 0xFFFF; return output; }