일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 깃허브
- 쉐이더
- 익명 타입
- 사용법
- 오류
- Effective C#
- 리팩토링
- NavMesh
- github
- 유니티 그래픽 최적화
- 프로퍼티
- 튜토리얼
- 유니티 그래픽스 최적화 스타트업
- shader
- 속성
- 파이널 IK
- 쓰는 법
- 에러
- tutorial
- 메모리
- error
- c#
- unity
- 2판
- 애님
- Final IK
- 최적화
- 리깅
- 유니티
- 애니메이션
- Today
- Total
참치김밥은 최고의 한식이다
[유니티] Force Field 쉐이더 만들면서 이해 안갔던 부분 정리 본문
일단 내가 공부하기 위해 참고한 링크이다. 혹시 쉐이더 공부하려고 이 글을 방문했다면, 아래 블로그 추천함
https://m.blog.naver.com/rmavy0989/221945829681
이해 안 갔던 부분 ①
왜 Scene Depth - Screen Position.w 을 하는지?
- Scene Depth (Sampling Mode = Eye)
- 오브젝트가 카메라로부터 얼마나 떨어져 있는지를 [픽셀단위]로 기록해 놓은 수치입니다.
- Screen Position.w (Mode = Raw)
- The 'w' component of the "Screen Position" node in "Raw" mode represents the raw depth value of a pixel on the screen, indicating the depth in screen space.
- 스크린 스페이스에서 픽셀의 Depth를 나타낸다.
이해한 과정
위 그림에서 파란 화살표는 장면 깊이(Scene Depth), 빨간 화살표는 오브젝트 거리(Screen Position.w)
Scene Depth(장면 깊이)도, 스크린 포지션의 w도 둘 다 오브젝트에 대한 Depth를 표현한다고 했는데, 왜 두 값이 가리키는 화살표 모양이 다른가?? 봤더니, 상단 포스팅의 댓글에 답이 있었다.
💡 개념 정리를 위해 구글링 하는중에 추가 설명해드립니다.
씬뎁스 값에서 픽셀 뎁스값을 빼는게 가능한 이유가
씬뎁스(장면 깊이)의 경우 반투명 컬러에 대한 연산을 하지 않습니다.
위에 구체 오프젝트의 서페이스 타입을 불투명으로 하셨을때 검은색으로 나오는 이유도 같은 이유라고 보시면 됩니다.
씬뎁스의 경우, 반투명 컬러, 즉 Transparent로 설정된 Sphere에 대한 연산을 하지 않으므로, 바닥면(Opaque)에 대해서만 연산을 해서 빨간 화살표보다 더 길게 계산되는 것이다.
이해 안 갔던 부분 ②
왜 Screen Position의 ‘w’ 값을 사용하는지??? z값이 아니라??
💡 screen.w은 해당 오브젝트의 장면 깊이값이다.
즉, 해당 픽셀이 얼마나 카메라에서 떨어져있는지를 정규화된 수치로 기록해놓는다고 할 수 있다.
모든 오브젝트는 사용자의 요구에 따라 장면깊이(scenedepth)에 미리 기록되어 사용될 수 있는데
그 과정에서 screen.z가 사용된다고 한다.
즉,
screen.z (정규화된 w깊이갚을 기록하기 위해 사용)
screen.w(이미 정규화된 w값)
우리는 이미 정규화된 scenedepth를 가져오므로
정규화되지 않은 오브젝트의 픽셀z로 계산하는것이 올바르지 않을 것이다.
그래서 w를 사용하는 것이다.
→ 값의 정규화 여부를 일치시키기 위해서!!
'Unity' 카테고리의 다른 글
[개발 지식 + 유니티] Socket.IO 와 BestHTTP 란??? (0) | 2024.02.22 |
---|---|
[유니티] 텍셀과 픽셀의 차이? (0) | 2024.02.20 |
쉐이더 첫 공부할 때 쓴 문서.. (0) | 2024.02.20 |
[유니티] 쉐이더 기초 : 램버트 라이팅 (Lambert Lighting) (0) | 2024.02.20 |
[유니티] URP HLSL 행렬 명칭 (0) | 2024.02.20 |