[Unity] 그래픽-2. 실시간 렌더링 주요 개념

KYO
KYO
∙∙조회 9

매핑

(x, y, z) → (u, v, w)

메시 최소 단위(삼각형)의 버텍스를 매핑함.

스프라이트 아틀라스의 (u, v) 는 (0, 0)..(1, 1)이고, right top.

  • 범위를 그 안에서 지정해서 해당하는 texture 범위를 가져오는 방식.
  • 메시 파일(fbx) → Mesh컴포넌트 → mesh.uv로 접근 가능
  • 메시 파일 안에 (x, y, z) → (u, v), normal, index(삼각형 구성 정보)

버텍스 순서는 right top부터 반시계방향이 통례임.

아래 세개 합쳐서 draw

  • ambient - 주변광
  • diffuse, albedo - base color
  • specular - 광택

Normal vector

surface의 법선. 이거 기준으로 빛 반사 계산

  • Directional Light의 dir과 계산 등

Normal Map이 이걸 편집함(법선인데 법선이 아니도록 기울일 수 있음)

계산

  • Normal과 Light가 둔각을 이룰 때에만 활성. 내적해서 각도 계산. 각이 좁을 수록 밝다.
    • normal dot lightDirection < 0 이면 그리는 느낌인 듯.
    • (추가) cull front/back/both 옵션이 이거 바꾸기도 하는 듯함.

Smooth

  • Normal map이 Normal들을 보간함. 메시를 실제로 smooth하는게 아니라 빛 반사만 smooth 가능

Z-buffer / Depth buffer

겹친 픽셀 중 어느 것을 그릴지에 대한 버퍼. 2D 행렬임.

먼 것을 먼저 그리더라도 가까운걸 나중에 그리면 덮어써버릴 테니까 OK임.

  • 각 위치에 해당하는 픽셀의 값이 화면으로부터의 거리를 의미한다면, 거리가 가장 짧은 걸 그리게 되는거.

알파 블렌딩

픽셀은 투명도가 없음.

해당 위치에 그려질 픽셀들의 색상을 덮는 방식으로 투명도 표현

  • 앞 픽셀 * (1 - 투명도) + 뒤 픽셀 * (투명도) == 그려질 픽셀 색깔

셰이더 프로그래밍

각 파이프라인 단계는 독립적. 이전/이후 단계와 분리됨.

셰이더 프로그래밍이란 특정 단계의 명령을 교체하는 것.

주로 정점셰이더(Vertex), 픽셀셰이더(Fragment Shader) 단계에 적용함

  • 래스터라이저 단계는 그래픽 하드웨어 전용 단계로 변경 안됨