[Unity]Shader 1

Dog발자·2024년 4월 2일
0

[Unity]Shader

목록 보기
1/3

1. Shader 개념

  1. 컴퓨터 그래픽스에서 사용되는 소프트웨어 명령의 집합
  2. 주로 그래픽 하드웨어의 렌더링 효과를 계산하는 데 사용
  3. 모델링은 별 차이 없으나 Shader에 따라 그래픽의 질이 달라진다.

Rendering(렌더링)
3차원 공간에서 객체를 2차원 화면인 하나의 장면에 바꾸어 표현하는 것을 말한다.2차원에 표시된 물체->3차원 물체처럼 보이게 하는 것이라고 이해하면 된다.

렌더링 파이프라인
3차원 공간의 오브젝트를 2D이미지르 그려내는 일련의 과정을 말하며 기본적인 렌더링 파이프라인 과정 중 레스터라이즈 과정 이전에 오브젝트의 데이터를 받아오고 기본적인 정점 셰이더가 진행되면. 이후 픽셀 셰이더(프레그먼트 셰이더) 순으로 흐림이 흘러가게 된다.

고정 파이프라인의 일부분을 커스터마이징(사용자 임의로 조정) 할 수 있게 해주는 것이 Shader

사용자 : 개발자

2. Shader 역사


게임은 실시간 렌더링을 해야하기 때문에 기술 적용이 좀 더 시간이 걸린다.

고정 파이프라인을 커스텀하기 시작, 제일 처음 적용된 작품은 '토이스토리 1'

3. Shader 용도

1. Geometry Control(모델 가공)

컴퓨터 그래픽스에서 사용되는 용어로, 3차원 공간에 원하는 가상의 오브젝트를 만들 수 있는 프로그램을 짜는 과정에서 다양한 수학 공식과 이론이 동원된다.
이를 바탕으로 컴퓨터 화면에 탄생된 가상의 오브젝트를 만들 수 있게 되었는데 이 가상의 오브젝트를 바로 Geometry라 합니다.

2. Skinning

  • 텍스쳐가 늘어나더라도 찢어지지 않게 해주기 위해 정점마다 가중치를 주는 것
    (애니메이션 도중에 정점의 위치를 바꿔야 하는데 Shader 기법을 사용하여 실시간으로 바꿀 수 있게 정점의 위치를 바꿀 수 있다. => 파이프라인 과정에서 정점의 위치를 바꿔야 한다)

  • Skinner는 애니메이션의 정점을 사용하는 특수 효과 모음입니다. 스키닝된 메쉬를 발광 점으로 사용할 수 있습니다. 특수 교체 셰이더를 사용하여 꼭짓점 위치를 GPU 친화적인 데이터로 변환하여 지출을 줄일 수 있습니다. 이를 처리하기 위한 추가 메모리 및 CPU 시간(대신 GPU 리소스 사용).

자세한 설명: https://github.com/keijiro/Skinner

3. Geomorphing

부드럽게 보간해주는 것을 모핑, CPU에서 계속 계산해서 그래픽 카드로 넘겨주는 것이 아니라 그래픽 카드 내에서 두 개의 모양(LOD) 사이를 보간 해주는 것을 말함.

보간 : 인접한 데이터 점에 적합한 함수 (일반적으로 다향식)조각을 맞추어 데이터의 중간 값을 찾는 프로세스
=> 중간값을 찾는것

4. LOD(Level Of Detail)

거리에 따라서 모델의 디테일이 달라짐

5.Global illumination

우리가 쓰는 일반조명은 조명계산해서 밝기를 변화
실제조명은 빛이 산란하고 남은 빛들이 우리 눈에 보임

기존에는 조명의 범위 안에 있는 삼각형과의 내적을 구해서 밝기를 정하는 것
다만 실제 조명은 빛이 부딪치면 산란하게 된 결과물을 우리 눈으로 보게 되는 것
이걸 만들어 내는 것

만드는 두 가지 방법 : 래디오시티, 레이트레이션 RTX 의 R이 레이트레이싱

6. Per Pixel Lighting

UV 2nd Channel을 활용한 픽셀당 라이팅
조명을 픽셀당으로 계산, 기본은 삼각형으로 계산
<조명모델이 3가지>
조명 모델 3개
flat shading, goround shading, pong shading(Per Pixel Lighting)

원래는 삼각형 단위로 계산했음,

7. Normal Mapping, Bump Mapping

(텍스쳐)를 바르는 것<- 색깔을 저장한 것, 노말 값을 저장한 맵을 노말 맵 범프 맵핑과 같은 의미임

조명 계산을 하기 위해서 노말 값들을 저장한 맵을 활용하는 것

Vertex의 Normal값을 저장한 Map을 이용하여 연산을 하는 것이
(Normal Mapping와 Bump Mapping는 사실상 같은 것이다.)

=> Low Polygon와 High Polygon을 만들어서

Low Polygon로 그리는데 조명계산은 High Polygon의 Normal값을 사용한다.

이때 Normal값을 사용하려면 미리 저장해둬야 하는데 그래서 Normal Map을 만든다.

Low Polygon, High Polygon 모델을 두가지 만들고
High Polygon의 Normal 벡터를 활용해서 조명 계산한 것을

Low Polygon 모델에 적용시키는 것

8. parallex mapping


레이 트레이싱의 개념을 사용하여 가상으로 변위된 텍스처를 만들어내는 렌더링 기법이다

시차 차이를 이용해서 밑에서 바라보면 튀어나온 곳을 픽셀을 띄운다.
유니티가 계산해서 튀어나온 것 처럼 보이게 하는 것

9. Reflection & Refraction

반사, 투명

환경 맵핑 ->반사가 된 것 처럼 보이게 만들어 줌

Bidirectional Reflectance Distribution Function(BRDF)

양방향 반사도 분포 함수

  • Spherical Harmonics

구 사방에 있는 빛 정보를수집

ㄴ 글로벌 일루미네이션 하기 위한 알고리즘들 빛이 산란하게 되는 정보들을 수집하는 방법들임

  • Irradiance Enviroment Map

ㄴ 라이트 맵이라고 생각할 수 있다. 조도를 계산하는 것

0개의 댓글