05. Colors
Colors GLSL vector 타입에 대해 제대로 아는 것이 중요하다. OOP에 익숙하다면 C처럼 vector 내부의 데이터에 접근할 수 있다는 것을 알 수 있을 것이다. vec3 red = vec3(1.0, 0.0, 0.0); red.x = 1.0; red.y = 0.0; red.z = 0.0; x, y, z 표기법을 이용해 색을 정의하는 것은 혼란스럽고 오해의 소지가 있을 수 있다. 따라서 이 정보에 다른 이름으로 접근할 수 있는 다른 방법이 존재한다. .x, .y, .z의 값은 .r, .g, .b 로 쓸 수 있으며 .s, .t, .p로도 표현 가능하다(보통 텍스쳐의 공간 좌표에 사용된다) 인덱스 위치 [0], [1], [2]를 사용하여 vector의 데이터에 접근할 수도 있다. 다음 코드는 동일..
2021. 12. 31.
03. Uniforms, gl_FragCoord
Uniforms 지금까지 GPU가 많은 수의 병렬 스레드를 관리하는 방법을 살펴보았다. 각 스레드는 전체 이미지의 일부에 색상을 할당하는 역할을 한다. 각 병렬 스레드는 다른 스레드가 무얼 하고 있는지 알 수 없다(blind). 하지만 CPU에서 모든 스레드로 입력값을 전송할 수는 있다. 그래픽카드의 아키텍처 상 이러한 입력은 모든 스레드들에 동일하게 들어가며, 읽기 전용으로 설정된다. 각 스레드는 읽을 수는 있으나 변경할 수 없는 동일한 데이터를 수신한다. 이러한 입력을 uniform이라고 하며 다음과 같은 타입에 대해 대부분 지원한다. float, vec2, vec3, vec4, mat2, mat3, mat4, sampler2D, samplerCube uniform은 보통 디폴트 부동소수점 정밀도를 ..
2021. 12. 30.