#include "Common.hlsli" cbuffer VSSceneVars : register(b0) { float4x4 ViewProj; float4 CameraPos; float4 LightColour; } struct PathShaderVertex { float3 Position; uint Colour; }; StructuredBuffer Vertices : register(t0); struct VS_OUTPUT { float4 Position : SV_POSITION; float4 Colour : COLOR0; }; VS_OUTPUT main(uint id : SV_VertexID) { VS_OUTPUT output; float3 pos; float4 col; PathShaderVertex vert = Vertices[id]; pos = vert.Position; col = Unpack4x8UNF(vert.Colour).abgr; float3 opos = pos - CameraPos.xyz; float4 cpos = mul(float4(opos, 1), ViewProj); cpos.z *= 1.01; //bias paths depth slightly to bring it in front of normal geometry... output.Position = cpos; output.Colour.rgb = col.rgb * LightColour.a; //apply intensity output.Colour.a = col.a; return output; }