iOS의 GLSL ES 2.0과 같은 여러 픽셀 쉐이더 사이에서 공유되는 버텍스 쉐이더가 있습니다. VS는 변환 된 위치, 법선 및 한 세트의 2D uv 좌표를 출력합니다. 여기의 빈약이다GLSL ES 픽셀 쉐이더는 사용되지 않는 텍스쳐가 전달 된 경우에만 작동합니다.
void main() {
vec4 xlt_outPos;
vec3 xlt_outNormal;
vec2 xlt_uv0;
xray_bone_vp(vec4(vertex), vec3(normal), vec2(uv), xlt_outPos, xlt_outNormal, xlt_uv0);
gl_Position = vec4(xlt_outPos);
xlv_TEXCOORD6 = vec3(xlt_outNormal);
xlv_TEXCOORD0 = vec2(xlt_uv0);
}
이것은 TEXCOORD0에 자외선을 출력하고, 정상적인 사용을 위해 TEXCOORD6 CG로 쉐이더에 기초한다.
내 문제는 자외선 좌표 걸릴 PS 정상 입력이 제대로 작동 될 때, 그러나 정상적인 만을하는 사람들은 없습니다. 내가 PS 메서드 서명을 uv로 전달하도록 변경했지만 이것을 사용하지 않으면 작동합니다!
잘 정의 된 동작입니까? 그렇다면 셰이더에 불필요한 매개 변수를 전달하거나 VS의 여러 버전을 생성하지 않아도되는 방법이 있습니까?
당신이 VS 출력 구조의 코드와 작업 및 깨진 쉐이더 모두에서 PS 입력 대응을 공유 할 수 없습니다 :
또한는 Cg를 쉐이딩 언어에 대한 자세한 내용은이 기준에서 살펴? 일반적으로 이러한 구조는 동일해야합니다. – brigadir
나는 그것을 가지고 있지만 어딘가에 도달 할 수는 없다. 그러나 나는 "일반적으로이 구조들은 반드시 같아야합니다"라고 생각합니다. 제가 찾고있는 대답은 ... 어떤 종류의 참고 자료와도 답을 쓸 수 있다면 담당자가 당신 것입니다 :) –
좋습니다. 어쨌든, 여러분의 vertex-to-pixel-shader 구조체 선언을 살펴 보는 것이 유용 할 것입니다. – brigadir