작업을 하다보면 해가 금방 뜨다보니 밤낮이 완전 바뀌었다...
만들고있는 포트폴리오가 내가 만들어본것 중에는 가장 큰 프로젝트고 이것저것 기능을 많이 넣어놔서 그런가 모르겠지만 버그와 예외사항 처리의 연속이다.
그래도 열심히 하나씩 잡고 있다.
패트롤 로직 수정
아무래도 바로 밖이 물이다보니 빠지면 안되기도 하고 , 생각했던 9명의 병사들의 왔다 갔다거리니 작은맵이 복잡했다.
그래서 1번의 보스에게 가는 다리를 지키는 병사들은 지정된 위치에 서있기 - x축만 이동하고 돌아오기
2번 병사들은 중앙 지역을 랜덤으로 패트롤하게 했고, 나머지 3번지역들도 1번처럼 서있다가 순찰을 하는데 z축도 이동한다.
쉐이더 그래프로 간단한 물 만들어보기
쉐이더에 관심이 많아서 영상 몇개를 보며 공부를 조금 했다.
아직은 어려운게 많아서 간단한거밖에 만들지 못하지만 계속 공부해보고 싶다.
URP 설정
쉐이더 그래프를 사용하기 위해선 URP를 써야한다.
애초에 새로 만들때 URP로 만들어야 한다.
* HDRP는 URP에서 노드가 추가된 버전이라고 한다.
하지만 난 애초에 3D로 만들었기 때문에 패키지 매니저로 들어가서 Universal RP를 다운해주었다.
사용하려면 설정도 해주어야한다.
Create - Rendering - URP Asset을 눌러 URP 에셋을 만들고,
Edit - Project Settings - Graphics에 들어가서 만든 에셋을 추가해준다.
URP가 아닌 매터리얼을 쓰는 오브젝트들은 다 마젠타색깔로 바뀌었을것이다.
Window - Rendering - Render Pipeline Converter에 들어가서
숫자 순서대로 실행 해주면 된다.
난 2021.3.5f1 버전이라서 이렇게 했지만 낮은 버전이라면 다른 방법을 써야한다.
골드메탈님이 상세하게 설명을 해놨으니 영상 보는것을 추천드린다.
쉐이더 그래프 만져보기
이제 Create - Shader를 보면 여러가지가 나오는데 이것은 스크립트로 만드는 방식이다.
쉐이더 그래프로 쉐이더를 만들기 위해서는 위와 같이 들어가야한다.
여러가지로 나뉘어져있는데,
Lit Shader
- 물리기반 현실세계를 나타내는 쉐이더 그래프
Unlit Shader
- 3D에서 빛반응이 없는 쉐이더 그래프
Sprite Lit Shader
- Sprite 빛반응 o 쉐이더 그래프
Sprite Unlit Shader
- Sprite 빛반응x 쉐이더그래프
대충 이정도로 이해하면 될것같다.
쉐이더 그래프를 만들면 왼쪽상단에 파란색 아이콘이 만들어지는데,
매터리얼을 미리 만들어서 쉐이더를 넣어줘도 되고
반대로 쉐이더그래프에서 오른쪽 클릭 후에 매터리얼을 만들면 바로 이 쉐이더 그래프로 만든 쉐이더를 이용하는 매터리얼이 만들어진다.
나는 Lit Shader로 그래프를 하나 만들어주었다.
왼쪽 상단의 그래프 인스펙터에는 노드 세팅과 그래프 세팅이 있다.
노드 세팅은 이 쉐이더에서 만든 노드를 파라미터로 사용할 수 있다.
그래프 세팅은 이 쉐이더 그래프에 대한 전체적인 세팅을 만질 수 있다.
오른쪽에는 이러한 창이 하나 뜨는데,
위의 3개는 렌더링 파이프라인에서 버텍스 쉐이딩 과정, 아래는 픽셀 쉐이딩 과정에서 이루어진다.
상황에 맞춰 노드의 output 값을 연결해 쉐이더를 입힐수있다.
오른쪽 클릭 - Create Node 혹은 스페이스바로 노드를 만들 수 있다.
위의 노드 이름 아래에보면 2칸으로 나누어져 있는데,
왼쪽이 Input , 오른쪽이 OutPut이다.
괄호로 작게 써져있는 글씨들은 input에는 어떤 파라미터값이 들어 올 수 있고
OutPut에는 어떤 값이 나오는지 알 수 있다.
그래서 OutPut - Input을 맞춰서 넣으면 되는데, 상황에 따라 써져있는것과 다르게 허용해주는것도 있다.
대략적으로 아래와 같이 이해하면 된다.
Vector1 -> (1) *벡터3 까지 있다.
Matrix -> (2x2) * 행렬4x4 까지 있다.
Boolean ->(B)
Texture 2D -> (T2)
CubeMap -> (C)
Gradient -> (G)
SamplerState -> (SS)
간단한 실험을 위해 텍스쳐를 입혀보기로 한다.
ambientCG - Public Domain Resources for Physically Based Rendering
cc0 텍스쳐라고 라이센스가 없는 텍스쳐인데 여기서 가죽텍스쳐를 하나 받았다.
샘플 텍스쳐 2D를 넣어서 베이스 컬러에 연결해준다.
(왼쪽 위 Save Asset을 눌러야 적용됨)
확인해보니 텍스쳐가 입혀지긴 했는데 뭔가 구리다.
노말 텍스쳐를 넣고 노말에 입혀준다.
(Type을 노말로 바꾸어 주어야 한다.)
가죽이 뭔가 그럴듯하게 바뀌었다.
간단한 물만들기
Time과 float 노드를 만들고 Multiply 노드의 인풋에 넣어준다.
그리고 그 OutPut을 Voronoi라는 노이즈에 넣어주고 float 값으로 크기를 바꿀수 있게 만들었다.
이렇게 노드를 만들고 오른쪽 클릭 - Convert To - Property를 눌러주면 파라미터 값으로 쓸 수 있는데
이런식으로 그래프 인스펙터에 이름도 설정 가능하고, 값도 설정 가능하다.
Reference에서 이름을 설정해주면 스크립트에서도 참조가 가능하다.
Exposed를 체크해둔다면 씬의 인스펙터창에서 직접 수정이 가능하다.
Voronoi의 OutPut 값을 Power에 넣고 float 값으로 진하게 만들어주었다.
그리고 Power의 아우풋값과 Color의 아웃풋값을 곱해주었다.
이 곱한 아웃풋값을 또 Color와 더해주고 최종적으로 Base Color에 입혀준다.
움직이는 그럴듯한(?) 물이 되었다.
실제 물처럼 굴곡을 줄수도 있는데 포폴에 내 능력 밖의 기술을 베껴서 넣으면 안될것같아서 그거까진 따라서 넣지 않았다.
조금 공부를 했지만 정말 신기하고 써먹을곳이 많은게 쉐이더 같다. 꼭 배워보고싶다..
마치며
일반 3D -> URP로 가는 과정에서 Projector 기능(가짜 그림자)을 지원 하지 않기도 하고,
마지막 시네머신에 Point Light를 사용함에 있어서 많은 오류를 내는바람에 그냥 물을 쓰지 말까 고민도 많이 했다.
또 항상 느끼는거지만 에디터상에서 실행된다고 끝이 아닌것이 씬 이동을 했을때, 빌드를 해서 직접 폰으로 돌려봤을때 나오는 오류가 다 다르기때문에 조심해야 한다.
어제 핸드폰으로 돌려보니 나오는 문제점들이 좀 있어서 오늘은 그것을 완벽하게 수정하고나서 동영상작업에 들어갈 예정이다.
쉐이더는 고라니님이 올려준 영상을 보고 공부를 좀 했다.
어려운점이 많아서 완벽하게 다 이해는 못했지만 처음 프로그래밍을 시작했을때처럼 하다보면 언젠가 잘 쓸 수 있는 날이 오지 않을까싶다.
'개발일지 > Unity 개인 포트폴리오 개발일지' 카테고리의 다른 글
포폴 다듬기, 영상 수정 (2) | 2022.08.06 |
---|---|
포폴 마무리 (0) | 2022.08.05 |
new 포폴 26일차 / 여러가지 작업들, 보스 패턴 수정 (0) | 2022.08.02 |
new 포폴 25일차 / 최적화 (0) | 2022.08.01 |
new 포폴 24일차 / 시네머신 작업 마무리 (0) | 2022.07.31 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!