GLSL

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

GLSL(OpenGL Shading Language, OpenGL 셰이딩 언어)는 C 언어를 기초로 한, 상위 레벨 셰이딩 언어이다. GLslang로도 알려져 있다. HLSL과 유사한 이 언어는 어셈블리 언어하드웨어에 의존한 언어를 사용하지 않고, 개발자가 그래픽스 파이프라인을 직접 제어할 수 있도록 OpenGL ARB(Architecture Review Board)가 책정하였다.

GLSL은 프로파일이 있어서 개발자는 Cg로 개발한 코드를 바로 변환할 수도 있다.

특징[편집]

예제[편집]

간단한 GLSL 버텍스 쉐이더[편집]

다음은 고정 기능 파이프 라인과 마찬가지로 입력 정점을 변환한다.

 void main (void)
 {
     gl_Position = ftransform ();
 }

ftransform() 는 GLSL 1.40과 GLSL ES 1.0에서 지원되지 않는다. 대신, 프로그래머는 새로운 OpenGL 3.1 표준에 따라 모델 뷰 행렬과 투영 행렬을 명시적으로 지정할 필요가 있다.

 # version 140
 uniform mat4 projectionMatrix;
 uniform mat4 modelviewMatrix;
 in vec3 position;
 
 void main (void)
 {
     gl_Position = projectionMatrix * modelviewMatrix * vec4 (position, 1.0);
 }

간단한 GLSL 지오메트리 쉐이더[편집]

 layout (triangles) in;
 layout (triangle_strip, max_vertices = 3) out;
 
 in Input
 {
     vec4 Position;
 } VSout [3];
 
 void main (void)
 {
     for (int i = 0; i <3; i + +)
     {
         gl_Position = VSout [i]. Position;
         EmitVertex ();
     }
     EndPrimitive ();
 }

간단한 GLSL 프레그먼트 셰이더[편집]

 void main (void)
 {
     gl_FragColor = vec4 (1.0, 0.0, 0.0, 1.0);
 }

바깥 고리[편집]