ShovelingLife
A Game Programmer
ShovelingLife
전체 방문자
오늘
어제
  • 분류 전체보기 (1066) N
    • 그래픽스 (57)
      • 공통 (19)
      • 수학 물리 (22)
      • OpenGL & Vulkan (1)
      • DirectX (14)
    • 게임엔진 (179) N
      • Unreal (69)
      • Unity (99) N
      • Cocos2D-X (3)
      • 개인 플젝 (8)
    • 코딩테스트 (221)
      • 공통 (7)
      • 프로그래머스 (22)
      • 백준 (162)
      • LeetCode (19)
      • HackerRank (2)
      • 코딩테스트 알고리즘 (8)
    • CS (235)
      • 공통 (21)
      • 네트워크 (44)
      • OS & 하드웨어 (55)
      • 자료구조 & 알고리즘 (98)
      • 디자인패턴 (6)
      • UML (4)
      • 데이터베이스 (7)
    • 프로그래밍 언어 (346)
      • C++ (167)
      • C# (88)
      • Java (9)
      • Python (33)
      • SQL (30)
      • JavaScript (8)
      • React (7)
    • 그 외 (9)
      • Math (5)
      • 일상 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Source Code 좌측 상단에 복사 버튼 추가 완료
  • 언리얼 엔진 C++ 빌드시간 단축 꿀팁
  • 게임 업계 코딩테스트 관련
  • 1인칭 시점으로 써내려가는 글들

인기 글

태그

  • 언리얼
  • 프로그래머스
  • 알고리즘
  • c#
  • 함수
  • 그래픽스
  • Unity
  • 파이썬
  • 티스토리챌린지
  • 유니티
  • 백준
  • 문자열
  • string
  • SQL
  • 오블완
  • C
  • 클래스
  • C++
  • 배열
  • 포인터

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ShovelingLife

A Game Programmer

NDC (Clip Space)란 무엇인가?
그래픽스/공통

NDC (Clip Space)란 무엇인가?

2024. 5. 7. 17:58

렌더 파이프 라인에서 Vertex Shader 단계의 마지막에, 지정된 좌표를 받아들이고 이 범위에서 벗어난 모든 좌표는 자르게된다. 이때, Clip 된 좌표들은 모두 폐기되고, 남은 좌표들은 최종적으로 파편화되어 화면에 보이게 되고 눈에 보이는 모든 좌표들이 -1.0과 1.0 범위 안에 지정하는 것은 직관적이지 않기 때문에, 우리가 원하는 화면에 표현하기 위한 공간으로 다시 변환하게 된다. 이때 사용되는 것이 NDC(Noramlize Device Coordinate)이며, 이 공간은 투영(Projection) 행렬에 정의된다.

 

앞서 유도한 투영 행렬이 정의하는 Viewing Box는 절두체(Frustrum)라고 불린다. 이 절두체 내부에 있는 좌표들은 화면에 나타나게 된다. 지정한 범위 내에서 NDC로 변환하는 전체적인 과정을 '투영한다'라고 한다. 3D좌표를 2D에 매핑하기 쉬운 NDC로 투영하기 때문이다.

 

정규좌표(Normalized Device Coodinate)

 

정규 좌표(NDC)는 1을 기준으로 하는 2차원 좌표다. 이 좌표계의 원점은 화면(Device)의 정 중앙에 위치하며, 화면의 우상단 좌표가 (1.0, 1.0), 좌하단 좌표가(-1.0, -1.0)이 된다.

 

정규 좌표를 사용하면 해상도에 따른 화면좌표 계산이 단순화 된다. x좌표를 계산할 때 계산하는 과정을 줄일 수 있으며, 해상도를 제외한 값을 계산해 두면 해상도가 변할 경우에도 쉽게 실제 화면 좌표를 계산할 수 있게 된다.

 

즉, 화면 해상도 차이에 빠르게 적응하기 위한 하나의 도구다.

 

https://lalyns.tistory.com/entry/NDCClip-Space%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

저작자표시 (새창열림)

'그래픽스 > 공통' 카테고리의 다른 글

레스터화기 단계 Rasterization  (0) 2024.05.02
드로우콜 (Draw Call)  (0) 2024.01.22
배칭 (Batching)  (0) 2024.01.22
병목 (Bottleneck)  (0) 2024.01.21
곡선 (Curve) & 스플라인 (Spline)  (0) 2024.01.21
    '그래픽스/공통' 카테고리의 다른 글
    • 레스터화기 단계 Rasterization
    • 드로우콜 (Draw Call)
    • 배칭 (Batching)
    • 병목 (Bottleneck)
    ShovelingLife
    ShovelingLife
    Main skill stack => Unity C# / Unreal C++ Studying Front / BackEnd, Java Python

    티스토리툴바