유니티 쉐이더는 ShaderLab 이라고 불리는 자체 스크립트 언어을 이용하여, 
일반적인 코딩과 약간 다른 방식으로 작성되며 문법도 약간 다름

이렇게 자체 스크립트로 제작된 이유는 유니티의 특성과 상용자의 편의성 때문 (멀티 플랫품)
쉐이더는 그림자가 있을 때와 없을떄, 라이트맵이 있을 때와 없을 때 등 여러가지 의 수에 따라 제작방법이 달라짐


[ShaderLab을 이용한 제작 방식]

1. ShaderLab으로만 작성하기
- 매우 가볍고 하드웨어 호환성이 좋지만, 기능이 상당히 부족하기 때문에 고급효과를 기대하기 어려움

2. Surface Shader로 작성하기
- ShaderLab 스크립트와 일부분은 CG 쉐이더 코드를 사용하는 방법
- 기본 조명오드와 버텍스 쉐이더의 보잡한 부분은 스크립트를 이용하여 자동으로 처리되고 있고, 픽셀쉐이더 부분만 간편하게 작성할 수도 있어서 편함. 비주얼 쉐이더 에디터와도 상당히 비슷한 개념을 가지고 있어서, 초보자가 공부하기에 좋음
- 최적화에는 다소 무리가 있고, 일정 수준 이상의 고급 기법을 구현하기는 어려움
- 이 책은 서피스 쉐이더로 진행

3. Vertex & Fragment Shader로 작성하기
- 자동으로 처리해주는 부분이 별로 없어 제대로된 CG쉐이더 방식으로 버텍스의 좌표 변환부터 제대로 처리해야 작동함
- 완전히 수동으로 제어 할수 있어서 최적화와 고급 기법을 표현할때 좋음

'Unity > Shader' 카테고리의 다른 글

Function  (0) 2022.01.03
SubShader  (0) 2022.01.03
Properties  (0) 2021.12.24
기본 쉐이더 형태  (0) 2021.12.24
쉐이더 란 / 랜더링 파이프라인  (0) 2021.12.22

[쉐이더란]

3d 컴퓨터 그래픽에서 최종적으로 화면에 출력하는 픽셀의 색을 정해주는 함수


[랜더링 파이프라인]

1. 오브젝트 데이터 받아오기
- 그래픽카드는 버텍스로 이루어진 물체의 데이터 값을 받아옴
- 버텍스는 인덱스 넘버, 포지션, 노말 컬러 등의 정보을 가지고 있음
- 그래픽카드에선 이 버텍스 정보들을 가지고 삼각형 면을 생성 하게 되는데, 오브젝트 기본적인 형태가 갖추어 지게됨
- 이 정보들을 버텍스 쉐이더로 넘김

2. 정점(버텍스) 쉐이더
- 위 데이터을 가지고 쉐이딩 작업이 가동되기 시작함
- 첫번쨰 과정이 정점 쉐이더이며, 좌표 변환을 하게됨. 이때 쉐이더를 제어하는 데이터에 접근하고, 각종 버텍스 연산을 자유롭게 조절할 수 있게됨


- 로컬 좌표계 * 월드 변환 행렬 = 월드 좌표계
- 월드 좌표계 * 뷰 변환 행렬= 카메라 좌표계
- 카메라 좌표계 * 프로젝션 행렬 = 클립 좌표계

- 여기까지 출력을 했다면, 여전히 텍스쳐도 음영도 없는, 폴리곤 덩어리가 생성됨. 아직 픽셀쉐이더를 거치지 않았기 때문에 결과적으로 모니터로 볼수도 없는 단지 3d공간에 존재하는 오브젝트임


3. 래스터라이져
- 현재까지 좌표계가 조정된 버텍스를 이용해서 화면에 오브젝트를 출력할 준비가 되었고, 모니터에 오브젝트을 출력함
- 이 오브젝트가 모니터에서 표현될때 어느 픽셀로 표현 될 것인지를 나타내는 장치를 거치게 되는데,
이를 래스터라이져라 부르며 2D 픽셀로 표현되는 세계로 넘어오게됨
- 3d 오브젝트는 모니터에 보이도록 픽셀이 되었고 이 과정을 래스터화 라고 함
- 모니터에 보이려면 3d 오브젝트을, 2d 이미지로 만들어야하고 함

4. 픽셀쉐이더 / 프래그먼트 쉐이더
- 모니터까지 넘어온 3d 그래픽 데이터는 화면에 픽셀로 찍히게 됨.
- 여기에 픽셀쉐이더가 가동되면서 조명과 텍스처, 그림자 및 특수효과을 연산하게 됨.

                     
                             | GPU
                             | 
정점데이터 =>  |  [[버텍스 쉐이더]]  == 정점위치==> [[래스터라이저]] == 픽셀위치 ==> [[픽셀 셰이더]]
                             |  (정점 좌표변환)                                                                       (픽셀 색상결정)
                             |

 

 

--------------------------------------------

https://vielbooks.com/234

 

유니티 쉐이더 스타트업

왜? 그래픽 아티스트가 쉐이더를 배워야 하는가? 사실 불과 십여 년 전까지만 해도, 쉐이더라는 그 특유의 프로그래밍스러운 제작방식 때문에 쉐이더가 ‘프로그래머의 영역’ 이라고 말하는

vielbooks.com

 

'Unity > Shader' 카테고리의 다른 글

Function  (0) 2022.01.03
SubShader  (0) 2022.01.03
Properties  (0) 2021.12.24
기본 쉐이더 형태  (0) 2021.12.24
유니티 쉐이더의 작성요령  (0) 2021.12.22

게임에서 사용하는 가상 공간의 체계와 물체를 구성하는 사용하는 수학

게임에서 사용하는 공간은 3차원 같지만, 4차원을 이용한다
4차원 공간을 생성하고, 3차원 공간으로 대상을 표현하고, 확장한 1차원 공간으로 이동을 구현함
그래서 게임을 이용한 공간은 4차원 공간을 사용한다


벡터 공간은 공간이라 하지만 어떤 대상의 성질을 표현하는 데이터
- 현실 세계의 공간과 다른 개념이다

현실과 유사한 가상공간을 만들어면 공간의 차원을  늘린다
- 1차원 -> 2차원 -> 3차원

 

2차원 공간의 물체을 구성하는 데에는 2차원만 사용 하지만, 1차원 공간을 추가하고 조종을 한다.


2차원 물체의 표현하고 이동을 구현할라면 총 3차원의 공간이 필요하다
- 2차원 : 물체표현 / 1차원 : 이동 = 총 3차원 

3차원 물체의 표현하고 이동을 구현할라면 총 4차원의 공간이 필요하다
- 3차원 : 물체표현 / 1차원 : 이동 = 총 4차원 


게임은 벡터 공간을
1. 물체을 표현하는 공간(=아핀공간 : 점으로 구성된 공간)
2. 이동을 위한 공간 (=부분공간 : )
으로 분리해서 관리한다


물체을 표현하는 공간 - 점
이동을 위한 공간 - 이동벡터 (물리적 벡터)

수학적벡터 벡터공간의 원소
물리적벡터 크기와 방향을 가진 대상

벡터는 물체을 구성하는 점 & 물체를 이동하는 데 사용하는 이동벡터로 나뉜다

아핀공간에서 점을 만들어 여기에 이동벡터의 크기와 방향을 시켜서 이동한다

 

p1 (아핀공간 물체) 에 v (이동벡터의 힘과 방향)으로 p2 가 됨


반대로 p2에서 p1을 뺴면 이동벡터을 구할 수 있음

점의 뺼셈으로
아핀공간 과 부분공간 서로 다른 공간의 데이터가 교환 될수가 있다

--------------

가상공간 에서의 물체을 배치

게임공간 (= 월드공간)

게임공간은 4차원이지만,
3차원만 사용을 하고, 움직일 일이 없어서 1차원은 기본값으로 사용함
중심이 되는 공간이라 움직이지 않는다

물체의 공간 (= 로컬공간)

물체는 아핀공간의 점들로 구성이 되어있다.

점들을 포괄적으로 관리하기 위해서 3차원이 아닌 4차원으로 구성되어 있다
물체의 점을 담는 공간을 로컬공간이라고 한다
물체는 계속 움직이기 떄문에 남은 1차원을 적극적으로 이용한다



월드에 배치을 할떄, 로컬공간의 점들이 월드공간에 이동하는 게 아닌,
로컬공간의 남은 1차원을 이동을 해서 월드공간에 포개어 배치을 한다 
로컬공간은 항상 물체을 따라다닌다



https://www.youtube.com/watch?v=552b3wzVlzo&list=PLMcHQUYJZc72MRDilqgikWBFo-Fx4l8bF&index=2 

'수학' 카테고리의 다른 글

1. 공간수학  (0) 2021.05.25
게임수학 개요  (0) 2021.05.25
지수,로그 + 지수함수,로그함수  (0) 2019.06.04
사원수 회전을 행렬로  (0) 2019.05.01
사원수  (0) 2019.05.01

[벡터공간]

- 컴퓨터로 만든 가상 세계는 수로 부터 만든 명확한 시스템

- 게임이 사용하는 가상공간

- 수의 체계을 기반으로 쌓인 다차원의 데이터

- 수의 체계을 기반으로 만든 공간 또는 시스템

 

[벡터]

- 벡터 공간의 원소

- 크기와 방향을 가진 대상

[스칼라]

- 체 집합의 원소

- 크기만 있는 물리량

 

[변환 Transform ]

- 가상세계을 원하는 대로 변환을 해야한다.

- 이를 수학에서는 변환 이라고 한다

 

[선형 변환 linear Transformation]

- 빠르고 단순하고, 명료하게

- 선형성을 가진 공간 변환

% 현실 세계의 공간은 하나이나 게임의 가상 공간은 무한대 %

 

[공간변환 체계 = 파이프라인]

공간 변환을 지시 하기 위한 도구가 바로 행렬

 

[행렬]

- 선형변환을 수행하는 도구

- 공간변환 마다 행렬에 대응됨

 

[스스로 행렬을 설계 할 수 있도록 기본 원리를 이해하는 것이 중요]

 

[평면의 방정식]

- 여러개의 평면을 이용해서 영역을 구축 할 수가 있다

- ex) 카메라 절두체(Frust) 육면체

 


1. 수의 체계와 벡터공간

2. 행렬을 이용해서 선형 변환하는 원리을 이해하는 게 중요

 

https://www.youtube.com/watch?v=WnZIgKYfY6w&list=PLMcHQUYJZc72MRDilqgikWBFo-Fx4l8bF&index=1

'수학' 카테고리의 다른 글

2. 물체의 수학 1  (0) 2021.06.02
게임수학 개요  (0) 2021.05.25
지수,로그 + 지수함수,로그함수  (0) 2019.06.04
사원수 회전을 행렬로  (0) 2019.05.01
사원수  (0) 2019.05.01

게임 수학의 분류

1.  공간 수학

 

2. 물체 수학

 

3. 회전 수학

 

 

 

 

https://www.youtube.com/watch?v=WnZIgKYfY6w&list=PLMcHQUYJZc72MRDilqgikWBFo-Fx4l8bF

'수학' 카테고리의 다른 글

2. 물체의 수학 1  (0) 2021.06.02
1. 공간수학  (0) 2021.05.25
지수,로그 + 지수함수,로그함수  (0) 2019.06.04
사원수 회전을 행렬로  (0) 2019.05.01
사원수  (0) 2019.05.01

+ Recent posts