본문 바로가기

전체 글

(22)
[Unity 쉐이더] Reflection 개인 학습 정리용으로 작성된 글입니다. 반사란? 파동이 다른 두 매질의 경계에서 방향을 바꿔 진행하는 물리 현상. (정반사, 난반사, 굴절, 회절 등등) 물체의 종류와 표면의 상태에 따라 빛이 반사되는 정도가 달라지고, 그것을 쉽게 구별하기 위해 정반사, 난반사 등으로 부릅니다. 빛의 반사를 컴퓨터 그래픽으로 구현하는 방법은 다양합니다. 레이 트레이싱의 경우 광추적방식 렌더링 이라고도 부르는데 광원에서 나온 광선이 물체에 반사하는 모습을 역으로 시뮬레이션한다고 합니다. 실시간 렌더링에 연산량도 어마 무시해 게임에서는 더 가벼운 방법으로 빛의 반사를 실제와 비슷해 보이도록 구현했습니다. 오늘은 그중 큐브 맵을 이용한 반사 구현을 해보고자 합니다. 큐브맵 큐브맵은 오브젝트의 반사를 나타낼 때와 주변 환경을 ..
[UnityShader] 벡터, 행렬 https://sunsimu1018.tistory.com/21 [Unity Shader] 좌표계, 벡터 오늘 주제는 공간, 위치, 방향 등등 입니다. 머리가 딱딱해져서 잘 안돌아가네요. 좌표계란? 아래 이미지는 3D 툴을 이용한 적이 있다면 자주 본적 있는 모습입니다. 씬 내에, 어느 공간에 오브젝 sunsimu1018.tistory.com 이어서 벡터에 대해 더 자세하게 배워봅시다. 벡터의 덧셈 (A+B) 시점이 일치하는 벡터는 A벡터와 B벡터를 변으로 하는 평행사변형을 그리면 생기는 꼭짓점과 시점을 연결하면 A+B값이 나오게 됩니다. 또는 B벡터의 종점에 A벡터의 시점을 이을 경우 마찬가지로 A+B값이 나옵니다. 벡터의 뺄셈 (A-B) 벡터의 -는 방향이 역으로 뒤집히게 됩니다. 좌표로 보면 1에서 ..
[Unity Shader] 좌표계, 벡터 오늘 주제는 공간, 위치, 방향 등등 입니다. 머리가 딱딱해져서 잘 안돌아가네요. 좌표계란? 아래 이미지는 3D 툴을 이용한 적이 있다면 자주 본적 있는 모습입니다. 씬 내에, 어느 공간에 오브젝트를 배치하기 위해서는 공간 정보가 필요하고, 공간 정보의 기준을 잡아주는 것이 좌표계입니다. 3차원 공간의 정보를 나타낼 때는 x, y, z 3개의 축을 사용해 공간 상의 위치 정보를 가져옵니다. 위치도 RGB색상처럼 float3(0,0,0)의 숫자 정보. 좌표 공간의 종류는 로컬 스페이스> 월드 스페이스> 뷰 스페이스> 클립 스페이스> 씬 스페이스 로 이루어져있습니다. 유니티에 오브젝트를 배치할 시 월드 좌표계를 기준으로 합니다. 새로운 오브젝트를 추가하겠습니다. 공 오브젝트를 박스 오브젝트의 자식으로 상속된..
[Unity] Z-buffer, Shader Lab Z-buffer란? 엔진 내에서 3차원 이미지를 렌더링 할 때 픽셀의 깊이 정보가 테스트 후 업데이트 되어 버퍼에 저장 됩니다. 그런 정보를 아래의 사진처럼 전체 화면 해상도에 오브젝트 마다 픽셀로 저장되어 같은 위치에 여러 물체가 있을 시 깊이 값에 따라 해당 오브젝트를 그릴지 말지 결정하는 역할을 하게 됩니다. 이 과정이 없다면 각 오브젝트의 앞, 뒤를 구별하지 못해 가림 처리를 할 수 없게 됩니다. Alpha blend DirextX에서 가까운 거리는 0 먼 거리는 1로 나타냅니다. ZWrite를 끌 경우 Z-buffer 대상에서 제외 되면서 가림처리를 하지 않게 되는데 alpha Blend의 add, Multiply를 적용하면 자동으로 ZWrite가 꺼지게 됩니다. 왜냐하면 반투명 이미지의 경우 ..
커스텀라이트(3) 림라이트, 스페큘러 내용 정리 림라이트 응용 스페큘러 이론 우선 램버트 라이트, 저번에 진행한 림라이트까지 준비합니다. 림라이트는 뷰 벡터(viewDir)와 월드 노말(worldNormal)또는 오브젝트의 탄젠트 노말의 dot연산으로 구할 수 있습니다. +탄젠트 노말을 사용하고 있을 때 월드 노말을 동시에 사용하는 것은 지양합니다. 연산한 림라이트를 Emission이 아닌 Alpha에 적용해 봅시다. 반투명 오브젝트의 경우 Z-Buffer(오브젝트의 뒤에 있다고 판단한 픽셀을 그리지 않음)로 인해 다른 오브젝트와 겹쳤을 시 렌더링하는데 오류가 생깁니다. 위의 현상을 방지하기 위해 아래와 같이 알파값을 출력합니다. ZWrite off - Z-Buffer를 사용하지 않게 됩니다. 애니메이션 추가 타임 값을 추가함으로써 오브젝트..
[Unity] 키워드, 색상 연산2 저번에는 다양한 색상 연산에 대해 알아보았습니다. 프로퍼티 상세 정리 저번에는 다양한 색상 연산에 대해 알아보았습니다. 프로퍼티 상세 정리 sunsimu1018.tistory.com/14 [Unity] Shader Graph 기초 / UI 내용 정리 쉐이더 구성 -블랙보드 -그래프 인스펙터 -메인 프리뷰 색상, 색상 연산 기타 등등 쉐이더 그래프를 구경해봅시다. 이전 쉐이더는 코딩으로 제작하였으나 Unity 2018.1 이후버전 부터 HD sunsimu1018.tistory.com 키워드, SPR Batcher 정적 분기(static branch)를 만듭니다. 기존의 쉐이더에서 분기를 생성해 파생된 수 만큼 Variant가 생성되고, 분기는 별개의 쉐이더로 인식하기 때문에 연산량은 배로 늘어납니다. 키워..
[Unity 쉐이더] Custom Light2 - Normal, Rim Light 이어서 커스텀 라이트 sunsimu1018.tistory.com/16?category=919389 [Unity 쉐이더] vector, Custom Light Vector 연산 Dot 연산 커스텀 라이트 (렘버트) 벡터의 덧셈 뺄셈 친절하게 설명해주시는 영상 (앞부분에서 덧셈 참고) www.youtube.com/watch?v=0Ho616gAijQ&t=380s A+B 시점이 일치하는 벡터는 A벡터와 B벡터를.. sunsimu1018.tistory.com 커스텀 라이트를 이어서 하기 전 Lambert, Custom Light를 준비하고 갑시다. Normal 우선 저번에 진행한 라이트에 노말을 추가합니다. 노말 추가는 간단합니다. 기존에 노말을 불러오는 방식과 똑같습니다. NdotL연산 전에만 불러오면 됩니다...
[Unity 쉐이더] vector, Custom Light Vector 연산 Dot 연산 커스텀 라이트 (렘버트) 벡터의 덧셈 뺄셈 친절하게 설명해주시는 영상 (앞부분에서 덧셈 참고) www.youtube.com/watch?v=0Ho616gAijQ&t=380s A+B 시점이 일치하는 벡터는 A벡터와 B벡터를 변으로 하는 평행사변형을 그리면 생기는 꼭짓점과 시점을 연결하면 A+B값이 나오게 됩니다. 또는 B벡터의 종점에 A벡터의 시점을 이을 경우 마찬가지로 A+B값이 나옵니다. A-B 벡터의 -는 방향이 역으로 뒤집히게 됩니다. 좌표로 보면 1에서 -1로 이동한 것과 같죠. 벡터에는 위치값이 상관없기 때문에 위와 아래의 값은 같게 됩니다. 벡터의 내적 Inner Product A · B= cosθ 벡터는 크기와 방향을 가지고 있어 일반적인 곱셈과 다릅니다. 벡터의..