목록전체 글 (27)
이것저것
C++에서 BoxComponent나 CapsuleComponent같은 콜리전 충돌여부 함수 // Header UFUNCTION() void OnOverlapBegin(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); // CPP ClassName::ClassName() { m_pBoxComponent->OnComponentBeginOverlap.AddDynamic(this, &ClassName::OnOverlapBegin); } void C..

오늘 포스팅에서는 물 쉐이더와 저번 포스팅에서 활용했던 것들을 사용하여 굴절까지 구현해보려고 한다. 뜬금없지만 물하면 갑자기 수영장이 떠올라서 수영장에서 물을 만들어보려고 한다. 모델은 구글에서 무료라서 가져왔고 물 노말 맵 또한 구글에서 가져왔다. 첫 번째로 할 일은 위 우측 사진처럼 쉐이더로 물을 표현하기 위해서는 물이 있어야 할 곳에 유니티 기본 플랜(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 값을 ..