쉐이더 예제

두 샤더는 일반적으로 별도의 파일에 있습니다. 이 예제에서는 SimpleFragmentShader.fragmentshader 및 SimpleVertexShader.vertexshader . 확장은 관련이 없으며 .txt 또는 .glsl일 수 있습니다. 가장 간단한 구성에서는 각 정점에 대해 실행되는 정점 샤더라는 두 개의 샤이더와 각 샘플에 대해 실행되는 프래그먼트 샤더라는 두 개의 샤더가 필요합니다. 그리고 우리는 4 배 항문화를 사용하기 때문에, 우리는 각 픽셀에 4 개의 샘플을 가지고 있습니다. GS 유닛은 VS 유닛 이후에 제공됩니다. VS 단위에서는 정점, 법선, 텍스코르드 및 입력 스트림에 있는 다른 모든 것(예: 접선 벡터, 색상)을 변환하기만 하면 됩니다. GS 장치에는 일부 연결 정보가 있습니다(삼각형을 만드는 것, 이 삼각형에 인접한 것). GS 장치는 새로운 형상을 생성하는 데 사용할 수 있습니다. 예를 들어 입력이 삼각형인 경우 몇 개의 삼각형을 넣을 수 있습니다. 입력이 선인 경우 몇 줄을 출력할 수 있습니다. 입력이 포인트인 경우 일부 점을 출력할 수 있습니다.

새 추가 지오메트리를 내림차체를 내림하면 고정 된 함수 정점 및 기본 프로세서의 나머지 부분으로 내려가 래스터화를위한 조각 단계에 도달합니다. 래스터화에 도달하는 순서는 반드시 예측할 수 있는 것은 아니며 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)과 같은 순서 종속 블렌딩을 사용하는 경우 문제가 됩니다. GS에서 텍스처를 샘플링할 수 있으며, 모델뷰 매트릭스를 사용하여 투영 행렬을 사용하여 다른 행렬로 정점을 변환할 수 있습니다….. 당신은 당신이 다른 그늘 단위처럼 원하는 대로 할 수 있습니다. 첫 번째 for 루프는 들어오는 기본 을 변경되지 않고 내보합니다. 모든 정점에 대해 EmitVertex()라고 합니다. 모든 프리미티브에 대해 EndPrimitive(); 이 두 가지는 GS 장치에 대한 특별 지침입니다. 그런 다음 xy 평면 주위에 미러링되는 새 원형을 생성합니다. 예제는 표시되지 않지만 사용자 정의 다양한 를 사용하는 경우, 당신은 그들에게 다양한 vec2 GeomTexCoord0 및 다양한 vec2 FragTexCoord0 같은 이름을해야합니다 정점 면도기에서, 이름이 일치해야하기 때문에, 당신은 그것을 호출해야 vec2 GeomTexCoord0 에서 조각 섀도, 다양한 vec2 FragTexCoord0 조각 섀디에서 모션을 디자인하는 것은 직선이 아니며 결국 애니메이션 도구가 아니기 때문에 약간 지루할 수 있습니다. 다음은 감속/가속 및 타이밍 제어, 도형 그리기 및 이 모든 것을 결합하여 멋진 동작 시퀀스를 만드는 몇 가지 편리한 도구와 예제입니다. 처음 다섯 가지 예제에서는 설계의 구성 요소로 사용할 수 있는 많은 유용한 함수를 소개합니다.

다음 예제에서는 이러한 도구를 결합하여 복잡한 애니메이션을 디자인하는 방법을 보여 줍니다. 샤더는 OPENGL의 일부인 GLSL : GL 셰더 언어라는 언어로 프로그래밍됩니다. C 또는 Java와 달리 GLSL은 런타임에 컴파일되어야 하므로 응용 프로그램을 시작할 때마다 모든 섀도가 다시 컴파일됩니다.