Technical/Shader

Fragment Shader

ParkJinseok 2021. 3. 1. 16:00

    Fragment Shader

    • Vertex Shader와 동일하게 동시에 하나의 Fragment만 처리하며, 주된 역할은 Fragment의 색상을 결정하는 것임.

    • Fragment는 화면의 특정 픽셀을 채우기 위해 필요한 정보를 가리킴.

    • 코드 작성에서 Vertex Shader와의 가장 큰 차이점은 데이터를 저장할 기본 변수가 없어서 직접 변수를 만들어야 함.

    • GPU로 하여금 특정 대상을 그리게 하는 명령을 드로우콜(Draw Call)이라고 함.

    • 특정 Shader를 사용하여 메쉬를 렌더링하려면, 그 메쉬의 DrawCall을 보내기전에 어떤 Shader를 사용하는지 알려줘야 함.
      • 이 과정을 Shader Binding이라고 함.

    Fragment 보간

    • Fragment들은 Vertex 사이에 존재하기때문에 GPU는 어떤 Vertex의 데이터를 어떤 Fragment에 사용할지 결정해야 함.
      • 이 때, GPU는 특정 Vertex를 선택하는 대신 그 Face를 구성하는 모든 Vertex로 부터 데이터를 받아서 그 값을 블렌딩함.
    • 블렌딩은 선형적(Linear)하게 이뤄짐.

    • 블렌딩을 프래그먼트 보간(Fragment Interpolation)이라고 함.

    • Vertex 또는 Fragment마다 다른 값을 넣을 경우엔 보간은 매우 효율적인 방법임.