분류 전체보기(94)
-
정점 데이터(appdata) 구조체
입력 조립 단계에 대응하는 appdata 구조체이다. [예시 코드] struct appdata { float4 vertex : POSITION; }; 위의 :POSITION은 셰이더 시맨틱이라고 한다. 이는 멤버의 목적과 관련된 정보를 전달하는 셰이더 데이터 구조체에 붙어있는 문자열이다. appdata의 멤버에 어떤 시맨틱을 추가함으로써 입력 조립 단계로 하여금 사용 가능한 데이터 중 원하는 데이터가 무엇인지 알려준다. 위의 예시코드에서는 정점의 위치만 요청을 한 것이다. 텍스처를 입힐 때 사용하는 UV 정보나 모델이 가지고 있어야 할 정점 색상과 같이 더 요청할 수 있는 데이터가 있다. 이 시맨틱과 데이터 타입은 반드시 일치해야 한다.
2022.07.10 -
언릿 셰이더의 구조
언릿 셰이더에는 정보 전달을 위한 두 가지의 셰이더 함수가 존재한다. 이들의 목표는 그래픽스 파이프라인의 일부분을 스크립트화 하는 것이다. - 정점 데이터는 appdata 구조를 통해 수집하고 이는 정점 함수로 전달된다. - 정점 함수는 v2f(vertex to fragment의 약자) 데이터 구조 멤버들의 내용을 채우고 이를 프레그먼트 함수의 인자로 전달된 다. - 프레그먼트 함수는 최종 색상을 반환하고 이 값은 4가지(RGBA) 값을 갖는 하나의 정점이다.
2022.07.10 -
레스터라이저
레스터라이저는 렌더링 파이프라인에서 중요한 부분이다. 그리고 레스터라이저는 보통은 자주 이야기하지 않는 부분이기도 하다. 굳이 말하자면 이것은 이미 해결된 문제이다. 최종 이미지에서 삼각형이 차지하는 픽셀이 무엇인지 결정한다. 레스터라이저는 또한 삼각형이 차지하는 픽셀 위에 각 정점에 해당하는 다른 값들을 보간한다.
2022.07.10 -
그래픽스 파이프라인의 구조
그래픽스 파이프라인이 어떻게 구현됐으며, 특정 GPU에는 어떤 지는 매우 다양하다. 하지만 일반적인 원리는 하나로 요약 정리할 수 있다. [정점지점] 입력 조립 단계는 씬으로부터 데이터(메시,텍스처,재질)를 수집하고 파이프라인에서 사용할 수 있게끔 정리한다. [정점 셰이더] 정점 처리 단계에서는 정점과 정점의 정보를 이전 단계로부터 전달받아 각각의 정점에 정점 셰이더를 수행한다. [정점 후처리] 정점 후처리 단계에서는 좌표 공간 변환 및 화면을 넘어서지 않게끔 기본형(primitive)들을 절단한다. [기본형 조립] 기본형 조립 단계는 각 기본형마다 정점 처리 단계의 출력 데이터를 수집해 다음 단계로 보낸다. [레스터라이저] 레스터라이저는 프로그래밍 가능한 단계가 아니다. 이 단계에서는 입력 데이터로 삼..
2022.07.10