OpenGL의 맥락에서 "st"는 무엇을 의미합니까?


19

st다른 OpenGL 프래그먼트 셰이더를 볼 때이 용어 가 몇 번 나오는 것을 보았습니다 . 그러나 나는 그것이 무엇을 의미하는지 또는 그것이 무엇을 사용하는지 모릅니다. 예를 들면 다음과 같습니다.

uniform vec2 u_resolution;

vec2 st = gl_FragCoord.xy/u_resolution;

이것이 픽셀 좌표를 640 x 480 대신 0.0-1.0의 표준화 된 좌표로 변환한다는 것을 이해할 수 있습니다 (예 :).

나는 또한 같은 것을 보았습니다 position.st.

무슨 뜻인가요?

답변:


24

텍스처 좌표 구성 요소의 일반적인 이름은 U와 V입니다. 그러나 다음에 사용되는 문자 (3D 텍스처)는 W이므로 위치 의 구성 요소 이름 ( X, Y, Z 및 .

이러한 충돌을 피하기 위해 OpenGL의 규칙은 텍스처 좌표의 구성 요소 이름이 S, T 및 R이라는 것입니다. 따라서 다음과 같은 함수 호출이 있습니다.

glTexParameter(..., GL_TEXTURE_WRAP_S, GL_REPEAT);

여기서 GL_TEXTURE_WRAP_S텍스처 좌표의 S 구성 요소를 래핑하는 것을 말합니다.

불행히도 OpenGL은 GLSL과 스위 즐 마스크 가 등장 하기 훨씬 전에 S, T 및 R 을 선택했습니다. R은 물론 R , G, B 및 A와 충돌합니다. 이러한 충돌을 피하기 위해 GLSL에서 텍스처 좌표 스위 즐 마스크는 S, T, P 및 Q를 사용합니다.

GLSL에서는 XYZW, STPQ 또는 RGBA로 스위 즐 할 수 있습니다. 그들은 모두 정확히 같은 것을 의미합니다. 그래서 position.st정확히 동일하다 position.xy. 그러나 다른 세트의 스위 즐 마스크를 결합 할 수 없습니다. 따라서 position.xt허용되지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.