목록[유니티] Unity3D (11)
이것저것
오늘 포스팅에서는 물 쉐이더와 저번 포스팅에서 활용했던 것들을 사용하여 굴절까지 구현해보려고 한다. 뜬금없지만 물하면 갑자기 수영장이 떠올라서 수영장에서 물을 만들어보려고 한다. 모델은 구글에서 무료라서 가져왔고 물 노말 맵 또한 구글에서 가져왔다. 첫 번째로 할 일은 위 우측 사진처럼 쉐이더로 물을 표현하기 위해서는 물이 있어야 할 곳에 유니티 기본 플랜(Plane)을 설치해준다. 유니티로 뭔가를 배치를 많이해보지 않아서 몰랐는데 표면이랑 정점으로 해서 스내핑이 된다. 원하는 부분에 V키를 누르고 오브젝트를 움직이면 스내핑 된다. ( 자세한 내용은 유니티 사이트 : https://docs.unity3d.com/kr/530/Manual/PositioningGameObjects.html ) 물 쉐이더를 만..
Reflection 반사를 구현하기 위해서는 여러 방법들이 있다. 큐브 맵을 쓴다거나 포스트 프로세싱을 쓴다거나 리플렉션 프로브를 쓴다거나 등등 이 방식들은 모두 실시간 반사가 아닌 그럴듯하게 보이게 흉내 내는 것에 불과하다. 최근 실시간 레이 트레이싱(Ray Tracing)이 가능해지고 현실에 가깝게 흉내 낼 수 있게 되었다. 이미지 픽셀하나하나를 통과하는 광선(Ray)들을 역추적(Tracing)하는 방식이라고 하는데 쉽게 말해서 '계속해서 반사하는 빛을 최대한 현실처럼 똑같이 흉내 내는 것'이라고 생각하면 편하다. 그래도 아직까지는 하드웨어적 한계 때문에 조금 더 시간이 지나야 많이 사용될 듯하다. 어쨌든 이번 포스팅에서는 큐브 맵 리플렉션을 만들어볼 예정이다. CubeMap 소개 큐브 맵은 오브젝트..
이번 포스팅에서는 카툰 셰이더(Cartoon Shader)와 디퓨즈 랩(Diffuse Wrap)을 실습해보고자 한다. Cartoon Shader | Toon Shading, Toon Rendering, Cell Shading 셀 셰이딩은 3D 그래픽을 만화 같은 느낌을 주는 렌더링 방식이다. PR과 NPR 앞 포스팅에서 다루었던 Lambert나 Blinn phong 같은 라이트들은 공통점이 존재한다. '실재 사물의 재질과 비슷하게 만들려고 하는 시도'를 PR(Photo Realistic) 렌더링이라 한다. 반면 실제 사물과 다르게 재밌게 비슷하지 않게 만드는 것이 NPR(Non-Photo Realistic) 렌더링 이라고 하고, 셀셰이딩은 NPR렌더링에 속한다. 2 Pass 셀 셰이딩을 구현하기 위해서는..
저번 포스팅 마지막에서 Rim Light를 이용한 홀로그램을 구현했었다. 이번장에서는 Rim을 기반으로 CustomLight나 Specular 등 여러 가지를 같이 적용시켜서 어떻게 보이는지 확인해보려고 한다. 실습 위주이기 때문에 코드 분석을 해보면서 하면 좋을듯 하다. [저번 포스팅 링크]2019/04/26 - [쉐이더] - 라이팅 2장 시작하기 앞서 Specular 공식에 여러 공식들이 있는데 그중에서도 Phong과 Blinn Phong이 있다. R : Reflection Vector(반사광) V : View Vector(카메라) N : Normal Vector(법선) H : Half Vector(반각) L : Light Vector Phong 빛 방향과 카메라 방향의 정반사율에 대한 0~1 값을 ..
오늘 포스팅에서는 Custom Light와 Half Lambert 그리고 Rim Light에 대해서 다룰 예정이다. 벡터의 내적 연산 벡터는 기본적으로 float3을 가지고 있는데 내적 연산으로 더하면 각도를 숫자로 나타내 float3 A와 B를 dot 하면 float1이 나오게 된다. dot은 코사인 그래프와 연관이 있다. 코사인 값이 0도일 때는 1, 90도일 때는 0 180도 일 때는 -1 인 것을 알 수 있는데, 이것을 알고 있으면 라이트 벡터와 노말 벡터의 연산을 알 수 있게 된다. Lambert 기본 셰이더 코드 셰이더 기초 포스팅 때 기본 코드가 있던 것처럼 라이팅에서도 기본적으로 베이스로 둘 코드를 소개하겠다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18..
이번장에서는 라이팅 이론에 대해서 다룰 예정이며 유니티를 가지고 작성된다. 간단한 용어 정리 Ambient Light 간정광에 의한 난반사 Diffuse Light 직접광에 의한 난반사 Specular Light 정반사 Digital Light의 기본 개념 현실을 '흉내 내는' 3가지의 라이트가 있다. 포인트 라이트 ( Point Light 혹은 Omni Light ) 점(Point) 모양의 광원으로 사방으로 뻗어 나가는 특성이 있기 때문에 둥근 모양의 라이트가 필요한 곳이나 특정 범위에 둥글게 라이트가 필요할 때 많이 사용된다. 디렉셔널 라이트보다 무겁기 때문에 성능에 신경을 쓰면서 작업해야 한다. 스팟 라이트 ( Spot Light ) 특정 부분을 강조하고 싶을 때 사용하면 좋다. 스팟 라이트 역시나..
저번 포스팅에서는 Time 변수와 UV Animation, UV 채널 그리고 불 이펙트 만들어 보기 등을 실습하였다. 이번 포스팅에서 다룰 내용으로는 버텍스 컬러(Vertex Color)를 배우고 실습해 보겠다. ⊙ 버텍스 컬러 (Vertex Color) 버텍스 컬러(Vertex Color)가 무엇? 말 그대로 버텍스에다가 직접 색을 칠하는 것이다. 예를 들어 빨간색과 초록색으로 면에 칠해놓고 각 색 영역에 맵핑들을 넣을 수 있다. 보통은 모델링 프로그램에서 사용하는 것인데, 엔진에서도 사용이 가능하다. 그중에서 엔진으로부터 사용 가능한 정보들이 5가지가 존재하는데 위치, UV, 컬러, 노멀, 탄젠트 이다. 유니티에서 버텍스 컬러(Vertex Color) 유니티에서는 버텍스 컬러 페인팅 기능을 기본적으로..