티스토리 뷰

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으로 지정하면 된다.

그리고 그 변수를 시간에 따라 변화시키면서 불투명도를 조절하면 다음과 같은 에니메이션 효과를 줄 수 있다.








댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함