[Opengl] 클립 공간에서 화면 좌표로의 전환은 언제 발생합니까?


Answers

아니, 클립 공간과 NDC 공간이 같은 것은 아닙니다.

클립 공간은 실제로 NDC에서 한 걸음 떨어져 있으며, 모든 좌표는 Clip.W 로 나누어 NDC를 생성합니다. 결과 NDC 공간에서 [ -1 , 1 ] 범위를 벗어나는 것은 자르기 볼륨 외부에있는 점에 해당합니다. NDC 이전의 좌표 공간을 클립 공간이라고 부르는 이유가 있습니다.)

엄밀히 말하자면, NDC 공간은 반드시 입방체가 아닙니다. NDC 공간은 OpenGL의 큐브이지만 Direct3D에서는 그렇지 않습니다. D3D에서 NDC 공간의 Z 좌표는 0.0 에서 1.0 까지이고 GL은 -1.0 에서 1.0까지 입니다. X와 Y는 GL과 D3D에서 동일하게 동작합니다 (즉, 범위는 -1.0 에서 1.0 사이입니다 ). NDC는 표준 좌표 공간이지만 다른 API에서 다른 표현을 사용합니다.

마지막으로, 화면 공간 (AKA 창 공간)에 대한 NDC 공간은 래스터 화 중에 발생하며 뷰포트와 깊이 범위에 의해 정의됩니다. 단편 위치는 실제로 다른 좌표 공간에서는 의미가 없으며 래스터 화가 생성하는 것입니다 : 단편 .

최신 정보:

OpenGL 4.5에서 소개 된 GL_ARB_clip_control 확장을 사용하면 GL에서 D3D의 NDC 규칙을 채택 할 수 있습니다.

전통적인 OpenGL 동작은 다음과 같습니다.

glClipControl (GL_LOWER_LEFT, GL_NEGATIVE_ONE_TO_ONE);

Direct3D 동작은 다음을 통해 달성 될 수 있습니다.

glClipControl (GL_UPPER_LEFT, GL_ZERO_TO_ONE); // Y-axis is inverted in D3D
Question

저는 렌더링 파이프 라인을 연구하고 클리핑 단계에 도달했을 때 뷰 (눈 또는 카메라) 공간에서 클립 공간 ( 표준화 된 장치 공간 (NDC)이라고도 함) 으로 전달해야 한다는 설명이있었습니다.이 공간 은 큐빅 공간입니다 -1에서 1까지

그러나,이 공간에서 화면 좌표 공간으로의 이동이 일어날 때 나는 이해하지 못한다.

  1. 클리핑 직후와 래스터 화하기 전에?

  2. 래스터 화 후 가위 및 z- 테스트 전에?

  3. 프레임 버퍼에 쓰기 직전에 끝에서?




클립 공간과 NDC (정규화 된 장치 좌표)는 동일하지 않습니다. 그렇지 않으면 서로 다른 이름을 갖지 않습니다.

클립 공간은 투영 행렬에 의한 점 변환 이후에 공간 점이있는 곳이지만 w 정규화하기 전입니다.

NDC 공간은 정규화 이후의 공간 포인트입니다.

http://www.scratchapixel.com/lessons/3d-basic-rendering/perspective-and-orthographic-projection-matrix/projection-matrix-GPU-rendering-pipeline-clipping

Camera space --> 
x projection matrix ---> 
Clip space (before normalisation) --->
Clipping ---> 
Normalisation by w (x/w, y/w, z/w) --->
NDC space (in the range [-1, 1] in x and y)



Apple에 따르면 클립 공간은 NDC와 동일합니다.

https://developer.apple.com/documentation/metal/hello_triangle

인용문:

"버텍스 쉐이더라고도하는 정점 함수의 주된 임무는 들어오는 정점 데이터를 처리하고 각 정점을 뷰포트의 한 위치에 매핑하는 것입니다. 이렇게하면 파이프 라인의 후속 단계에서이 뷰포트 위치를 참조하고 픽셀을 렌더링 할 수 있습니다 버텍스 함수는 임의의 정점 좌표를 클립 영역 좌표라고도하는 정규화 된 장치 좌표로 변환하여이 작업을 수행합니다. "

샘플 코드의 주석에서 인용 한 또 다른 인용문 :

"모든 버텍스 쉐이더의 출력 위치는 클립 공간 (정규화 된 장치 좌표 공간 또는 NDC라고도 함)에 있습니다."

아마도 이것은 튜토리얼이 2D이기 때문일 것입니다. 오해의 소지가 ..