※ 이 게시글은 5월 4일 작성 되었습니다. (원본 링크)
지난 강의 보충
반투명 오브젝트 소팅 - 2Pass ZWrite

2번은 Transparnt 2Pass 활성화

두 방법 모두 반투명하지만 Z-Buffer에도 존재한다.


2번 방법.
앞에 공은 존재하지 않음. 디폴트 릿 셰이더
URP방식 중 특정 LightMode 태그 셰이더만 패스 추가
벡터곱
7강 내용에서 HLSL 벡터의 곱셈은 이름이 벡터과 비슷하다.
하지만 벡터곱은 cross이며 완전 다른 연산이다.
내적(dot))(V1·V2)도 아니다.
8강, 셰이더 코드 실습 - UV 스크롤
ShaderLab (2021.2)

유니티의 셰이더 언어이며, HLSL, CG기반으로 작동한다.
Custom Shader
커스텀 쉐이더의 역할을 그대로 모방한 것이 쉐이더그래프이다.
버텍스 셰이더, 프래그먼트 셰이더를 구체적으로 제어할 수 있다.
버텍스셰이더? 프래그먼트 셰이더?
버텍스 셰이더 - 물체 정보에 버텍스 연산을 한다.
프래그먼트 셰이더 - 화면상에 보이는 모든 픽셀들을 계산해 실행한다.
스크립트의 세미콜론

셰이더 코드 내에 세미콜론은 문장 끝에 있는 세미콜론에 대해 알아보자.
따로 규칙이 존재하긴 하지만 일단 너무 복잡하다.
어떤경우는 콜론이 있지만 어떤경우는 또 콜론이 없다.
그래서 그냥 외우면서 적응하는 수 밖에 없다.
하면서 익숙해지는게 제일 현실적인 방법이다.
※ 규칙은 강의자료 참조
주석(Comment)
더블슬래시 // 이후는 말 그대로 메모장이나 다름 없다.(코멘트 or 설명서)
무슨 말을 적든 내용은 실제 적용되지 않는다.
// 이외의 /* */ 같은 형식도 있는데 이것은 여러 줄로 되어 있는 문장일 경우에 주로 사용한다.
셰이더 카테고리

셰이더를 분류하는 기준이 되는 부분이다.
슬래시 /를 이용하여 폴더를 구분한다.
따옴표로 시작과 끝을 구분한다.
프로퍼티 (Properties)

셰이더의 블랙보드 역할을 한다. (키워드 부분 제외)
(재질 인스펙터 창에 보이는 부분)
셰이더 코드에서 _BaseMap 앞에 _를 볼 수 있는데 이는 셰이더 코드에서 쓰는 실제 변수이다.
재질 인스펙터 창에는 _없이 "BaseMap"으로 보인다.

블랙보드와 프로퍼티를 비교한다면 이렇다.
코드로 저렇게 나와 있어서 그렇지, 실제로 많이 보던 블랙보드의 개념과 같다고 보면 된다.
메인컬러, 메인텍스처
[MainColor]는 프로퍼티 속성(Attribute)이다.
이 속성은 필요에 의해 선택적으로 사용하며
_BaseColor 프로퍼티가 ‘메인 컬러’ 라는 사실을 엔진에 알려준다.
프로그래머나 테크니컬 아티스트의 요청이 없으면 [MainColor]는 안 써도 된다.
프로퍼티선언과 HLSL선언
결론적으로 프로퍼티선언과 HLSL선언을 같이 해야 한다.
프로퍼티에서 선언했던 것은 제질 편집기에서 보이는 것이지,
실제 코드안에서 사용될려면 한번 더 선언을 해주어야 한다.
SubShader

여러개의 서브셰이더를 구성할 수 있고, 셰이더에서 사용할 수 있다.
현재 하드웨어에 지원되는것 중 첫 번째 것이 사용된다.
Tags
렌더링 방법과 시기를 지정한다.
햇갈리는 것이, 서브셰이더에도 태그가 있고 패스에도 태그가 있다.
◇ Tag - Queue
렌더링 순서를 정할 수 있게 된다.
어떤 순서로 그려지는지를 명시해 주어야 한다.
상대적인 숫자를 넣을 수도 있고 직접 숫자를 지정해 줄 수도 있다.
◇ Tag - RenderType
일종의 구분짓는 경우, 일반적이지 않는 경우이다.
(사실상 쓰는 경우를 많이 못봄)
자신 프로젝트에 맞게 그룹화 하는 목적으로 주로 쓰인다.
◇ Tag - RenderPipeline

URP 혹은 HDRP를 사용할지 말지 선언하고, 지정하지 않는다면 레거시가 된다.
Pass
Pass는 일반적으로 여러개 존재할 수 있으며 Pass의 갯수만큼 여러번 반복하게 그려진다.
'교내 활동 > 게임그래픽엔진심화' 카테고리의 다른 글
게임그래픽엔진심화 10강 - 함수와 구조체, 시멘틱, 전처리, 네이밍 관례, if분기, 좌표계 (1) | 2022.09.30 |
---|---|
게임그래픽엔진심화 9강 - ShaderLab, 함수와 구조체 (1) | 2022.09.30 |
게임그래픽엔진심화 7강 - [코드로만드는 셰이더2] - 자료형, HLSL의 연산자 (0) | 2022.09.30 |
게임그래픽엔진심화 6강 - Sorting, 렌더큐, [코드로 만드는 셰이더1] - 변수 (1) | 2022.09.30 |
게임그래픽엔진심화 5강 - 셰이더 일반, 반투명, Z-Buffer (1) | 2022.09.30 |