OpenGL Shader – 1

GLSL을 사용하는 쉐이더 프로그래밍을 알아보자. 쉐이더는 최신 기술이며 3D 게임에서 경이로운 효과를 내는데 사용된다. 이 글을 통해 쉐이더의 세계에 발을 들여놓자.

이 글과 앞으로 진행될 내용을 이해하기 위해서는 OpenGL 프로그래밍에 익숙해야 한다. 또한 쉐이더를 위한 스펙에 대해 알고 싶다면, OpenGL 2.0과 GLSL에 대한 공식문서를 반드시 읽어보길 바란다.

GLSL은 OpenGL 쉐이딩 언어를 의미하며 종종 “glslang”으로 불리며 ARB(Architectural Review Board) OpenGL에 의해 정의된다.

OpenGL과 경쟁하는 Cg, 즉 Nvidia가 나름대로 만든 또 다른 쉐이더 언어와 GLSL을 비교하거나 누가 더 우수한지 따지지는 않겠다. 그 이유는 지금 여기서는 Cg가 아닌 GLSL에 대해서만 살펴볼 것이기 때문이다.

어떤 언어로든 쉐이더를 작성하기 전에, 그래픽 파이프라인에 대한 기본을 이해하는 것이 매우 중요하다. 그래픽 파이프라인은 쉐이더가 무엇을 하는지, 쉐이더의 종류에는 뭐가 있는지와 같은 쉐이더의 핵심을 제공한다. 또한 쉐이더로 할 수 없는것이 무엇인지에 대한 힌트도 제공한다.

파이프라인에 대한 소개 다음에 GLSL을 위한 OpenGL의 설정에 대해서 알아보겠다. OpenGL 어플리케이션에서 쉐이더를 사용하데 필요한 단계에 대해 자세하게 살펴볼 것이다. 최종적으로 OpenGL 어플리케이션이 매우 유연하고 강력한 효과를 낼 수 있는 방법에 대해 살펴볼 것이다.

몇가지 기본적인 개념으로 데이터 타입(data types), 변수(variables), 문장(statements), 함수(function)의 정의에 대해서 알아본다.

이 글은 ARB 확장과 OpenGL 2.0 버전에 대해 다룬다. 후자는 이미 표준이지만 전자는 향후 표준으로 자리잡을 가능성이 있는 것이다. 차이는 작지만 함수의 이름이나 상수 이름에 약간의 차이를 가지고 있다. 이것들을 구분을 돕기위해 코드에 색상을 넣었다. ARB는 회색으로 OpenGL 2.0은 오렌지 색으로 말이다.

이 적용범위는 실수하기 쉽다. 그러니 혹시 이런 표기에 문제가 있다면 언제든지 내게 알려주길 바란다.

이 글은 점진적으로 작성될 것이므로 글과 데모 프로그램에서 문제가 있을 수 있는데, 이것에 대해서 좀 참아주길 바란다. 비록 사소할지라도 문제를 발견하면 알려주길 바란다. 또한 많은 제안을 해주길 바란다. 부디 이 글을 즐겁게 읽어주길 희망하며 첫번째 GLSL, OpenGL Shader의 첫글을 마치도록 하겠다.

“OpenGL Shader – 1”에 대한 7개의 댓글

  1. 잠시 쉴겸 왔다가 잘 읽고 갑니다..

    앞으로 자주 들러서 glsl 참고 해야겠네요..^^~

    그럼 !!수고하세요 >_<)/~~ @

  2. unifom 변수와 varying 변수의 차이점이 뭐죠? 정확히 어떤차이가 있는지 궁금해요. Renderman shading lanaguage를 공부하다 보니 변수 타입 앞에 class를 정해 주기도 하더라구요. 이 두가지 class의 차이가 궁금합니다.^^ 답변 부탁드릴께요.

  3. 어디서 봤다 했더니 번역글이군요! 이렇게 반가울 수가! ㅎㅎ
    한글이라서 더 편하게 읽고 갑니다. 자주 올것 같네요

  4. 출처를 언급했어야 했는데, 첫번째 글은 그러지 못했네요. 이후의 글부터는 출처를 언급했답니다. 이후부터는 실제 내용인지라… 원문과 함께 봐야한다는 생각에서 말이지요. 자주 놀러 오시길~

  5. GLSL공부 이제 시작하려하는데, 모두 영어자료여서 힘들었는데..ㅋ
    이것보도 시작해야겠어요!ㅎ 앞으로 모르는거 많이 물어보겠습니다.ㅎ
    내용도 조금..퍼가도 되겠죠?!ㅎㅎ물로 출처 남기구요~ㅎ

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다