서브메뉴
검색
본문
Powered by NAVER OpenAPI
-
유니티 쉐이더 스타트업 (아티스트가 기술을 이해하면 놀라운 일이 생깁니다.)
저자 : 정종필(대마왕)
출판사 : 비엘북스
출판년 : 2017
정가 : , ISBN : 9791186573167
책소개
왜? 그래픽 아티스트가 쉐이더를 배워야 하는가?
사실 불과 십여 년 전까지만 해도, 쉐이더라는 그 특유의 프로그래밍스러운 제작방식 때문에 쉐이더가 ‘프로그래머의 영역’ 이라고 말하는 프로그래머와 아티스트들이 적지 않았던 것도 사실입니다. 하지만 근본적으로 말하면 쉐이더의 시작은 ‘그래픽 아티스트들이 원하는 3D의 질감을 자유롭게 제어하도록 하자’라는 것이 목표였기 때문에, 사실 쉐이더는 그래픽 아티스트의 영역이라고 할 수 있습니다. 그럼에도 불구하고 게임에서 쉐이더가 프로그래머의 영역처럼 여겨졌었던 이유는 당시 실시간 3D 게임에서 처리할 수 있는 쉐이더의 효과가 극히 제한적이다 보니 아티스트가 다루기에는 너무 기술적으로 민감한 영역이 많았었습니다. 그래서 그래픽 아티스트가 어설프게 다루는 것보다 프로그래머가 다루는 것이 훨씬 안정적이고 좋은 결과를 보여줬기 때문이었습니다.
하지만 이제는 시대가 발전하여 게임도 영화에 필적할만한 표현이 가능해졌으며, 어느 정도의 비효율적인 환경에서도 잘 적응하는 하드웨어가 개발되고 있는 시대인 만큼 기술적인 효율성보다는 아티스트의 감성을 보장해주는 시대가 되어가고 있습니다. 멋진 그래픽 쉐이더를 구현하려면 그래픽 아티스트들의 감각이 절대적으로 필요합니다. 그들은 3D 툴의 Material Editor와 같은 쉐이더 에디터를 통해서 오랫동안 비주얼 쉐이더를 연구하며 감각을 키워왔기 때문입니다. 프로그래머가 이해하는 쉐이더와 아티스트가 이해하는 쉐이더는 기본 개념부터 다르지만 결국 두 파트가 함께 공유하며 완성해야 하는 영역입니다. 아트적인 감각과 테크니컬 감각이 잘 조화되면 정말 훌륭한 비주얼이 완성될 것입니다.
목차
Part_01. 쉐이더란 무엇인가
- 쉐이더란 무엇인가
- 왜 쉐이더를 그래픽 아티스트가 배워야 하는가
Part_02. 쉐이더를 익히기 위한 기반 지식들
- 렌더링 파이프라인
- 모니터에 표현되는 색과 빛의 기본원리
Part_03. 코딩의 기본/ 유니티 쉐이더 구성
- 코딩의 기초
- 유니티 쉐이더의 작성 요령
Part_04. 기초적인 서피스 쉐이더를 제작해봅시다.
- 오브젝트에 메터리얼과 쉐이더를 적용해봅시다.
- 쉐이더 코드를 열어서 이름을 바꿔 봅시다.
- 쉐이더 Properties를 제작해봅시다.
- 색상을 출력하고 연산해 봅시다
- 변수 이용해보기
- 외부에서 값을 입력받아 출력해보기
- 좀 더 깔끔하게 지워봅시다!
Part_05. Surface Shader를 이용해 텍스처를 제어해봅시다.
- 텍스쳐 한 장 출력하는 것 외의 부분을 삭제해 봅시다.
- 텍스쳐의 입력과 출력
- 이미지를 흑백으로 만들어 봅시다.
- lerp 함수를 사용해봅시다.
Part_06. UV를 이용하는 법을 배워봅시다.
- UV의 기본개념
- UV를 시각적으로 확인해봅시다.
- UV에 숫자를 더해봅시다.
- _Time으로 UV가 흘러가도록 해봅시다.
- UV를 이용해서 불 이펙트를 만들어봅시다.
- 좀 더 멋진 방법으로 불을 만들어 봅시다
Part_07. 버텍스 컬러를 이용해봅시다.
- 버텍스 컬러를 적용해봅시다.
- 버텍스 컬러를 출력해봅시다.
- 버텍스 컬러를 마스킹 기능으로 사용해봅시다.
Part_08. SurfaceOutputStandard 사용하기
- 스탠다드 쉐이더
- 메탈릭(Metallic), 스무스니스(Smoothness)
- 노멀맵(Normal Map)
- 오클루젼(Occlusion)
- 7장의 배경에 기능을 추가해봅시다.
Part_09. 램버트(Lambert) / 블린 퐁(Blinn Phong)
- 유니티에 내장된 라이팅 구조
- 램버트(Lambert) 라이팅 만들기
- 블린 퐁(Blinn-Phong) 라이팅 만들기
Part_10. 디지털 라이팅 이론
- 디지털 라이트의 분류
- 디지털 라이트의 원리
- 벡터
- 벡터의 특성
- 노멀벡터
- 벡터의 연산
- 벡터 연산을 이용한 디지털 조명 연산
Part_11. 커스텀 라이트 1 _램버트 라이트
- 커스텀 라이트 기본형 만들기
- 램버트(Lambert) 라이트 연산만들기
- 하프램버트(Half Lambert) 라이트 연산만들기
- 램버트(Lambert) 라이트 완성해보기
Part_12. 림 라이트
- 프레넬(Fresnel) 공식을 구현해봅시다.
- 림 라이트를 완성해봅시다.
- 홀로그램을 만들어 봅시다.
Part_13. 커스텀 라이트 2 _블린퐁 스페큘러
- 블린-퐁 반사 이론
- 블린-퐁 스페큘러 만들어 보기
- 글로스 맵으로 스페큘러 강도 조절해보기
- 림 라이트를 커스텀 라이트로 옮겨 보기
- 림 라이트를 이용한 가짜 스페큘러 만들기
Part_14. 커스텀 라이트3 _NPR 렌더링
- NPR 렌더링이란
- 외곽선 만들기 이론
- 2Pass와 면 뒤집기
- 버텍스 쉐이더(Vertex Shader)를 이용한 오브젝트 확장하기
- 끊어지는 음영만들기
- Fresnel을 이용해서 외곽선을 만들어 봅시다.
- Diffuse Warped 기법
- Diffuse Warped 기법을 응용해봅시다.
Part_15. 큐브맵 리플렉션(Cubmap Reflection)
- 큐브맵을 적용해봅시다.
- 노멀맵이 적용된 큐브맵을 적용해봅시다.
- 마스크 맵을 이용해서 반사영역을 조절해봅시다.
Part_16. 알파(Alpha)
- Z-버퍼(Z Buffer)
- 반투명 : 알파 블렌드(Alpha Blend)
- 알파 블렌딩을 만들어봅시다.
- 알파 소팅(Alpha Sorting)의 문제
- 알파 테스팅(Alpha Testing) / 컷아웃(Cutout)
Part_17. 커스텀 제어 알파 블렌딩
- 커스텀 제어 가능한 알파 블렌딩
- 블렌드 펙터 연산
- 유니티 내장 파티클 쉐이더와 비슷하게 만들어 봅시다
Part_18. 응용하기
- 2Pass를 이용한 깨끗한 알파 블렌딩
- 타이밍에 맞게 반짝이는 기능
- 타들어가며 없어지는 기능
- 흔들리는 풀
- 맷캡(Matcap)
- 굴절 만들기
- 물 만들기
- 물에 흔들림을 추가해 봅시다.
- 물에 굴절을 추가해 봅시다.
- 트라이플레너(Triplanar)
Part_19. 부록 및 퍼포먼스 이슈
- 커스텀 라이팅과 구조체
- 추가 옵션 파라메터
- 서피스 쉐이더 인풋 구조
- #pragma target
- 데이터 타입
- 쉐이더 LOD(Shader Level of Detail)
- Tag 설정
- 프로퍼티스( Properties )의 추가 기능
- 그 외 일반적인 추가 옵션들
- 쉐이더 작성시 퍼포먼스 팁
- 기존 쉐이더를 가지고 공부하기