티스토리 뷰
Shader에서 사용되는 지정자에는 attriubute, uniform, varing 가 있다.
각각의 용도에 대해 알아보자.
다음의 글을 참고하였다(https://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_03)
attribute
애플리케이션(C/C++ 코딩)에서 vertex shader로 vertex information을 넘기는 변수를 지정하는 지정자.
여기서 vertex information란?
각 꼭지점마다 색이 다른 정육면체를 그리고자 한다면,
정육면체의 6개의 점, 각각의 3차원 위치 좌표는 vertex information에 해당.
또한 각 꼭지점에서의 색, RGB 값도 vertex information.
특징 !
vertex shader에서만 사용할 수 있다고 한다.
varying
vertex shader에서 fragment shader로 information을 전달하는 변수를 지정하는 지정자.
특징
1) vertex shader의 output variable에 해당한다.
2) fragment shader의 input varibale에 해당한다.
3) 보간(interpolated)이 적용된다.
보간이 적용된다 : 어떤 의미?
만일 삼각형 각 꼭지점의 색을 각각 100(RGB), 010, 001로 할당한다면,
삼각형 내부의 색은 세 꼭지점을 기준으로 한 무게좌표 값에 따라서 보간된다는 뜻이다.
이를 가시적으로 보여주는 그림은 다음과 같다.
Figure 1. Triangle with 3 vertexes, each vertex have different colors(Red, Green, and Blue)
Figure 1.에서 볼 수 있듯, 삼각형 내부의 색이 그 위치에 따라 보간 되었음을 확인 할 수 있다.
uniform
uniform은 globally(전역으로) 사용되는 정보를 위한 변수를 지정하는 지정자
표현하고자 하는 물체의 버텍스들은 각기 다른 특성을 갖고 있는데, (이러한 각기 다른 특성과는 다르게)
모든 버텍스들에게 동등하게, 전역적으로 적용될 수 있는 것(좌표 변환 like 모델-뷰 변환 행렬, 투상 행렬)을 위한 지정자이다.
변환 행렬 이외에도 적용할 수 있는데 다음의 예를 통해 감을 잡아보자.
Figure1의 삼각형을 보자. 각 꼭지점에서의 색은 (R, G, B, A)로 표현할 수 있다.
여기서 A 불투명도를 나타낸다.
삼각형 위의 위치와 관계없이 모든 위치에서 똑같은 값의 A값을 적용하고 싶다면
A에 해당하는 변수만 uniform으로 지정하면 된다.
그리고 그 변수를 시간에 따라 변화시키면서 불투명도를 조절하면 다음과 같은 에니메이션 효과를 줄 수 있다.
'Programming > OpenGL' 카테고리의 다른 글
[OpenGL] 오픈지엘 데이터 관련 개념 정리(2. Uniform) (0) | 2019.03.07 |
---|---|
[OpenGL] 오픈지엘 데이터 관련 개념 정리(1. VAO, VBO) (0) | 2019.03.06 |
[OpenGL] gluLookAt 함수에 대한 궁금증 (0) | 2019.01.20 |