기하학 쉐이더를 사용하여 렌더러 (TressFX 용)를 확장하려고하므로 모든 것이 제대로 작동하는지 확인하기 위해 babysteps를 사용하고 있습니다. 따라서 삼각형을 위해 작동하는 Simpel Pass-Through Geometry Shader를 만들었지 만 출력을 볼 수 없기 때문에 어떤 이유로 선이나 점 (삼각형을 선과 점으로 변환)에 사용할 수 없습니다. Result linkHLSL : Triangle-2-Points/Lines 기하학 쉐이더 문제
왜 누군가가 선과 점에서 작동하지 않는지 지적 할 수 있다면 기쁠 것입니다.
코드
ASetPrimitiveTopology가정점 셰이더
struct PS_INPUT_HAIR_AA
{
float4 Position : SV_POSITION;
float4 Tangent : Tangent;
float4 p0p1 : TEXCOORD0;
};
PS_INPUT_HAIR_AA VS_RenderHair(uint vertexId : SV_VertexID)
{
PS_INPUT_HAIR_AA Output = (PS_INPUT_HAIR_AA)0;
Calculate position etc...
Output.Position = mul(float4(v, 1), g_mViewProj);
Output.Tangent = float4(t, ratio);
Output.p0p1 = float4(v.xy, g_HairVertexPositions[vertexId+1].xy);
return Output;
}
형상 (일)에 대한 삼각형 쉐이더을 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST 설정된다
기하학
[maxvertexcount(64)] // more than enough
void GS_RenderHairPassThrough(triangle PS_INPUT_HAIR_AA input[3], inout PointStream<PS_INPUT_HAIR_AA> OutputStream)
{
PS_INPUT_HAIR_AA output = (PS_INPUT_HAIR_AA)0;
for(uint i = 0; i < 3; ++i) {
output.Position = input[i].Position;
output.Tangent = input[i].Tangent;
output.p0p1 = input[i].p0p1;
OutputStream.Append(output);
OutputStream.RestartStrip(); // Not sure if I need this
}
}
[maxvertexcount(64)] // more than enough
void GS_RenderHairPassThrough(triangle PS_INPUT_HAIR_AA input[3], inout LineStream<PS_INPUT_HAIR_AA> OutputStream)
{
PS_INPUT_HAIR_AA output = (PS_INPUT_HAIR_AA)0;
for(uint i = 0; i < 3; ++i) {
output.Position = input[i].Position;
output.Tangent = input[i].Tangent;
output.p0p1 = input[i].p0p1;
OutputStream.Append(output);
}
OutputStream.RestartStrip();
}
그러나 점과 선에 대한 쉐이더 (작동하지 않는) 경우 I 하드 코드 포인트의 output.Position은/라인 통과 지오메트리 쉐이더를 내가 얻을 관리 할 수 있습니다 나는 화면에서 볼 수있는 출력.