자 쉰 다섯 번째 키워드인 'Unity Material과 SharedMaterial의 차이'를 알아 보았다.
컴퓨터 그래픽스를 공부하기 위해서 꼭 알아야하는 Direct X에 대해서 알아보았다.
이 파이프라인은 그래픽 데이터를 화면에 그리기 위해 일련의 처리 단계를 거치는 구조이다. 각 단계는 특정 역할을 수행하며, 데이터는 각 단계를 통해 점진적으로 변형되어 최종적으로 화면에 렌더링된다.
기능: 이 단계는 버텍스 데이터를 가져와서 준비합니다. 버텍스 버퍼와 인덱스 버퍼에서 데이터를 읽어온다.
작업:
버텍스 버퍼: 정점(Position, Normal, TexCoord 등)의 배열을 저장한다.
인덱스 버퍼: 정점을 어떻게 결합하여 삼각형을 만들지 정의한다.
정점 속성: 각 정점의 다양한 속성(Position, Normal, Color 등)을 설정한다.
기능: 각 정점에 대해 실행되어 정점 데이터를 변환하고 처리한다.
작업
모델 변환: 모델 좌표를 월드 좌표로 변환한다.
뷰 변환: 월드 좌표를 카메라 뷰 좌표로 변환한다.
프로젝션 변환: 뷰 좌표를 클립 좌표로 변환한다.
기타: 조명 계산, 텍스처 좌표 변환 등.
기능: 테셀레이션 단계를 위해 패치 데이터를 처리한다.
작업
컨트롤 포인트: 테셀레이션에 필요한 컨트롤 포인트를 생성한다.
테셀레이션 파라미터: 테셀레이션 수준(Level of Detail)을 결정한다.
기능: 패치를 더 작은 프리미티브(삼각형, 사각형 등)로 분할한다.
작업
세분화: 헐 셰이더에서 정의한 테셀레이션 수준에 따라 패치를 세분화한다.
기능: 테셀레이터가 생성한 세분화된 패치의 각 정점에 대해 실행된다.
작업
최종 정점 계산: 테셀레이션 후의 정점 위치를 계산한다.
텍스처 좌표: 새로운 정점에 대한 텍스처 좌표를 생성한다.
기능: 프리미티브(예: 삼각형) 단위로 실행되며, 프리미티브를 수정하거나 추가한다.
작업
프리미티브 생성: 새로운 정점을 추가하여 더 복잡한 프리미티브를 생성할 수 있다.
프리미티브 변환: 입력된 프리미티브의 형태를 변경할 수 있다.
기능: 3D 프리미티브를 2D 픽셀로 변환합니다.
작업
뷰포트 변환: 클립 공간 좌표를 화면 좌표로 변환한다.
프러스트럼 클리핑: 화면에 보이지 않는 프리미티브를 제거한다.
백페이스 컬링: 시야에서 벗어난 면을 제거한다.
픽셀 분할: 프리미티브를 픽셀로 분할한다.
기능: 각 픽셀에 대해 실행되며, 최종적인 픽셀 색상을 결정한다.
작업
텍스처 샘플링: 텍스처 데이터를 샘플링하여 색상을 결정한다.
조명 계산: 조명 모델을 사용하여 픽셀의 색상을 계산한다.
혼합: 다중 텍스처 및 조명 효과를 혼합한다.
기능: 최종 픽셀 데이터를 결합하여 화면에 출력한다.
작업
렌더 타겟 결합: 여러 렌더 타겟을 결합하여 최종 이미지를 생성한다.
깊이 테스트: 픽셀의 깊이를 비교하여 가려진 픽셀을 제거한다.
스텐실 테스트: 스텐실 버퍼를 사용하여 픽셀의 렌더링 여부를 결정한다.
블렌딩: 여러 픽셀의 색상을 혼합하여 최종 색상을 결정한다.
컴퓨터 그래픽스는 그냥 무조건 공부를 해야 다양한 엔진을 접근할 때 더욱 심도있게 가능할 것 같다.