mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-11-30 10:52:55 +08:00
33 lines
708 B
HLSL
33 lines
708 B
HLSL
|
#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;
|
||
|
}
|