CodeWalker/CodeWalker.Shaders/BoundingSphereVS.hlsl

33 lines
708 B
HLSL
Raw Normal View History

2017-09-21 18:33:05 +08:00
#include "Common.hlsli"
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
float4x4 ViewInv;
float SegmentCount;
float VertexCount;
float Pad1;
float Pad2;
}
cbuffer VSSphereVars : register(b1)
{
float3 Center;
float Radius;
}
float4 main(uint id : SV_VertexID) : SV_POSITION
{
static const float twopi = 6.283185307179586476925286766559;
uint seg = id;
float t = twopi*((float)seg)/SegmentCount;
float ct = cos(t);
float st = sin(t);
float r = Radius;
float3 o = float3(ct*r, st*r, 0);
float3 f = Center.xyz + mul(o, (float3x3)ViewInv);
float4 cpos = mul(float4(f,1), ViewProj);
cpos.z = DepthFunc(cpos.zw);
return cpos;
}