본문 바로가기

Shader

(9)
Sharpen Filter 만들기 전에 했던 거랑 똑같이 한 중심픽셀에서 주변 픽셀을 비교해서 구현한다! Blur가 특정 픽셀 주변의 픽셀들의 평균을 구해서 현재 픽셀에 적용하는 것이라면, Sharpen은 중심 픽셀과 주변 픽셀의 차이를 강조하는 것! 이를 구현하는데에는 2가지 방법이 있다! 그러나 결국 같은 방법인데 구현 식이 다른 것! 새로운 방법을 알게 됌! 일단 새로운 노드 발견! 항상 (-1,0), (0,1).....이렇게 하나하나 Float2값을 생성해서 쓰다보니 지저분하게 늘어졌는데 'BlurSampleOffsets'를 쓰면 좀 간편해진다!! 노드 이름에서 헷갈리면 안됌. 이것은 Blur 구현할때만 쓰는 것이 아님! 이건 그냥 단순히 곱하기 노드이다! input에 OffsetAmout는 Vector2 값인데 이 input에 ..
커널(Kernal)과 컨볼루션(Convolution) https://bkshin.tistory.com/entry/OpenCV-17-%ED%95%84%ED%84%B0Filter%EC%99%80-%EC%BB%A8%EB%B3%BC%EB%A3%A8%EC%85%98Convolution-%EC%97%B0%EC%82%B0-%ED%8F%89%EA%B7%A0-%EB%B8%94%EB%9F%AC%EB%A7%81-%EA%B0%80%EC%9A%B0%EC%8B%9C%EC%95%88-%EB%B8%94%EB%9F%AC%EB%A7%81-%EB%AF%B8%EB%94%94%EC%96%B8-%EB%B8%94%EB%9F%AC%EB%A7%81-%EB%B0%94%EC%9D%B4%EB%A0%88%ED%84%B0%EB%9F%B4-%ED%95%84%ED%84%B0 OpenCV - 17. 필터(Filte..
툰셰이더 외곽선 만들기 - Depth Edge Detection, Normal Edge Detection 이용 + 라플라시안 필터 Depth Edge Detection과 Normal Edge Detection 두가지 방법을 모두 써서 Outline을 만들어보려고 한다 *Depth Edge Detection : 픽셀 하나를 잡고 이 중심 픽셀과 이 픽셀의 상하좌우에 있는 4개의 픽셀을 이용해서 Depth Variation을 구하는 것이다. 그래서 상하좌우의 픽셀과 중심의 픽셀이 같은 값이면 위의 공식에 따라 Depth Variation이 0이 되겠지만, 오른쪽 그림과 같이 중심 픽셀과 차이가 있게 되면 Variation 값이 생기게 된다. 픽셀의 depth가 클수록 공식에 의한 Variation 값이 커진다. 그리고 이 공식에 의한 Variation 값을 내가 정한 Threshold 값과 비교해서 기준보다 크면, 중심 픽셀 주위에서 ..
Tone Mapping과 Temporal Anti-Aliasing 포스트 프로세스 머티리얼을 만들다보면 Before Tone Mapping, After Tone Mapping 등을 설정해야 할 때가 있다. 이것이 무슨 의미인지 알아보도록 하겠다 *Tone Mapping 톤매핑 : 톤매핑은 HDR 값을 LDR 영역 값으로 돌리도록 해주는 프로세스입니다. *HDR : 보통 씬의 픽셀이 렌더링 될때 , 빛의 최대강도는 1.0에서 짤립니다. HDR 렌더링은 이러한 제한을 제거하고 픽셀에 조명 강도를 1.0 이상으로 저장할 수 있게 합니다. 모니터도 일반적으로 빛의 강도를 0.0~1.0으로만 표현할 수 있고, 이 영역은 보이는 영역으로 다시 리맵핑 되어야 합니다. 이것은 톤 매핑이라는 프로세스를 통해 달성됩니다. (주: 조명 강도가 1.0 이상으로 높게 저장된 조명 값은 톤매핑..
Scene Depth와 Custom Depth *Scene Depth와 Custom Depth란? *참고 : https://eastroot1590.tistory.com/entry/UE4-Advenced-%EB%B2%BD-%EB%92%A4%EC%97%90%EC%9E%88%EB%8A%94-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8-%EA%B7%B8%EB%A6%AC%EA%B8%B0-feat-Custom-Depth UE4 Expert | 벽 뒤에있는 오브젝트 그리기 Custom Depth 위도우 메이커는 궁극기를 쓰면 벽 뒤에있는 적들의 실루엣을 볼 수 있다. 3D 게임에서 벽 뒤에있는 물체를 볼 수 없는 이유는 렌더링을 할 때 카메라와의 거리를 계산해서 더 가까이에 있는 물 eastroot1590.tistory.com -Scene ..
[19 - 알파와 뎁스 버퍼] 01. Z버퍼와 불투명 (Depth Buffer and Opaque) 578p -Z버퍼는 깊이 버퍼, Depth Buffer 등으로도 불린다 게임을 시작할 때, 한 프레임마다 배경, 캐릭터, UI, 이펙트 등이 합쳐서 나오게 된다. 그러면 이중에서 가장 먼저 그려지는 것은 무엇일까? 원론적으로 말하자면, 그리는 순서는 상당히 제멋대로라서 예측하기가 어렵다. 특정한 명령이나 Grouping으로 순서를 조정할 순 있지만(ex. Opaque - Skybox - Translucent - Post Process) 일단 기본적으로는 '계산이 끝난 녀석을 그린다'라는 원칙으로 그려지고 있으니 어떤 것이 먼저 그려질지 알수가 없다. 이 그림도 파랑색 오브젝트가 먼저 그려졌는지 빨간색 오브젝트가 먼저 그려졌는지 알 수 없다는 것이다. 그래서 '순서는 일단 상관없이 그린다'라는 기본 대전제..
Shader 1 *Split : 말 그대로 색 등을 R,G,B,A로 각각 나눠주는 것 *Combine : 말그대로 RGBA(4자리 값)으로 합쳐주는 것 *Linear와 Gamma 146p : 색의 RGB값에 각각 0.5의 float값을 넣은 Vector 3의 값과 그냥 0.5의 color값을 비교해보면 color값을 넣은 회색이 더 어둡다. float값은 Linear, color값은 Gamma이기 때문이다 색을 0~1로(검흰) 표현했을 때 그라데이션되는 것을 생각해볼 수 있다. Linear는 선형의, 수학적인 그라데이션이다. 이게 수학적인 계산 상으로 원래 옳은 그라데이션 값이다. 그러나 이 정석의 그라데이션을 사람이 보면 균형잡힌 그라데이션으로 보이지 않는다. 회색 부분이 너무 0쪽에 몰려있고 흰색의 값이 더 많아보인..
[Shader Graph Basics] Dot Product Node (Episode 7) -Dot Product (내적 연산) : 벡터의 곱셈은 덧셈뺄셈과 달리 내적(Dot)과 외적(Cross) 2종류가 있다. 벡터의 내적은 Dot 연산이라고도 하며, 두 벡터의 각도의 차이를 숫자로 표현한 것이다. 그냥 각도의 차이를 cos 연산해주면 된다. 그러므로 그 결과는 -1~1의 값이 나온다 (필요하면 Saturate로 0~1로 만들어주기). 이 내적 연산은 라이팅이 아니더라도 두 벡터의 방향이 어떤가를 구할 때 쓰는 공식이다. (대마왕의 유니티 셰이더 그래프 351p) -(cos0 = 1, cos90 = 0, cos180 = -1) -Dot Product Math : 또한 내적은 벡터끼리의 곱셈으로도 표현할 수 있다. Dot Product Node를 자세히 Breakdown 해보면 위와 같다. 연..