0
원형 스 플랫을 그려야하지만 내 유일한 데이터는 정점 위치입니다. 그래서 C++로 포인트를 그려서 올바른 위치에 나타납니다. 내 포인트 크기는 20 픽셀로 설정되므로 포인트는 원을 만들기 위해 일부 픽셀을 버릴만큼 충분히 큽니다.정점 위치에서 원형 스 플랫 그리기
버텍스 쉐이더에서 버텍스 쉐이더로 버텍스 픽셀 위치를 보내고 프래그먼트 위치와 버텍스 위치 사이의 거리를 계산할 수 있다고 생각했습니다. 원형 표시가 나오지만 대부분은 숨겨집니다. 내가 도대체 뭘 잘못하고있는 겁니까?
CG 정점 셰이더 :
void main(
float4 pvec: POSITION,
uniform float4x4 modelView,
uniform float4x4 modelViewIT,
uniform float4x4 modelViewProj,
uniform float2 wsize,
uniform float near,
uniform float top,
uniform float bottom,
out float4 pout: POSITION,
out float4 color: COLOR,
out float2 vpos: TEXCOORD0
)
{
//position of point correctly projected
pout = mul(modelViewProj, pvec);
vpos = float2((pout.xy * 0.5 + 0.5) * wsize);
color = float4(0.0, 0.0, 1.0, 1.0);
}
CG 단편 쉐이더 :
void main(
float4 col : COLOR,
float2 wpos : WPOS,
float2 vpos: TEXCOORD0,
uniform float2 unproj_scale,
uniform float2 unproj_offset,
uniform float f_near,
uniform float zb_scale,
uniform float zb_offset,
uniform float epsilon,
out float4 colorout : COLOR
)
{
float xDiff = abs(vpos.x - wpos.x);
float yDiff = abs(vpos.y - wpos.y);
if ((xDiff * xDiff + yDiff * yDiff) > 20.0) {
col.r = 1.0;
}
colorout = col;
}
화면 공간에서 위치를 계산할 때 원근감 나누기가 누락되었습니다.) – Joost
정확합니다 .. 감사합니다 :) – Aloys