Unity/Rendering&Shader 18

[SHADER] Shader pass와 ShaderLab pass에 대하여

[SHADER]Shader pass와 ShaderLab pass에 대하여 Shader pass 셰이더 패스는 렌더링 되는 개체의 정점(vertex)나 조각(fragments)/픽셀(pixels)에 대해 특정 계산이 수행되는 렌더링 파이프라인의 단계를 나타낸다. 각 패스에는 고유한 명령 및 데이터 세트가 있을 수 있고, 패스의 조합을 통해 복잡한 렌더링 효과를 얻을 수 있다.셰이더 패스는 보통 다음과 같다. - 입력 어셈블리 : 셰이더 패스가 시작되기 전에 입력 데이터를 어셈블해야 한다.  정점 셰이더의 경우 일반적으로 기하학적 기본요소(예를 들어 삼각형)의 정점을 처리하고 배치로 구성하는 작업이 포함된다. - 버텍스 패스 : 렌더링되는 형상의 각 정점에서 버텍스 셰이더가 실행된다.  버텍스 셰이더는 버텍..

[RENDERING] Screen Pos UV

[RENDERING] Screen Pos UV   Post-Processing 용 Shader를 만들다 보니, 항상 Screen Position을 이용하게 되는데, 셰이더 그래프를 보면 이것 또한 하나의 UV 임을 알 수 있다.    모든 오브젝트는 UV를 이용하여 맵핑을 진행하는데, 우리들이 모니터를 통하여 그래픽을 볼 수 있는 이유 또한 모니터에도 UV가 존재하기 때문이다.  유니티나 언리얼에서도 화면의 UV를 시각화하면 위와 같이 보이게 된다. (물론 유니티와 언리얼은 좌표계가 다르기 때문에, 위의 이미지와 다르게 빨간색이 위쪽에 존재한다.)  화면의 사이즈를 이리저리 변경하면 그에 맞춰서 색 또한 늘어질 뿐이다. 즉, 이것은 화면은 항상 (0, 0) ~ (1, 1)로 존재한다는 것을 뜻한다.  만..

[SHADER] Rain Striked the lens - 1/2

비 내리는 모습 첫 번째   게임에서 비에 대해서 여러 가지 표현방식이 존재한다.  실제로 비가 내리는 듯하게 파티클을 이용하여 월드나 레벨에 뿌려주는 방법, 카메라 렌즈에 비가 내리는 2D 이미지를 흘려주는 방법 등이 존재한다.  그리고 이번에는 Screen의 UV를 이용하여 렌즈에 빗물이 맺혀 있는 효과를 내보고자 한다.비가 내리는 효과의 특징을 찾아보자.  하단에 첨부한 이미지는 비가 오는 날, 창문에 물방울이 맺혀 그 부분이 왜곡되어 보인다.  사실 이 효과는 인간의 눈으로는 확인하는 것이 불가능하지만, 우리는 영상매체나 현실에서 이런 광경들을 자주 접하여 이런 이미지나 현상만 보아도 '아! 비 오는 날이구나' 식으로 인지하게 된다.  화면(스크린) 또한 Texture를 샘플링 할 때와 같이 UV..

[SHADER] 2D Pixel Automatically create outline color

2D Pixel Automatically create outline color 셰이더 제작보다, 아이디어와 아티팩트 해결을 기록하고자 남깁니다. 실루엣을 살려 형태를 명확하게 보이게 하거나, 배경과 캐릭터의 경계를 명확하게 하기 위하여 캐릭터나 배경의 외곽선을 검은색이나 어두운색으로 도트를 찍어 주는 경우가 많다. 단색으로 아웃라인을 만들면 캐릭터마다 일일이 메테리얼을 설정하거나, 프리팹에 스크립트를 붙여 역시나 하나하나 설정해 줘야 한다. 아웃라인의 색을 단색으로 칠하는 것보다 근처 픽셀의 색에 맞춰서 칠해주면 더 예쁘니 이것도 자동으로 해보자. 인간의 귀차니즘은 세상을 발전시킨다! 빨리 엔딩 보러 가보자. 하단의 이미지를 보면 완성된 Shader를 2D sprite에 적용하면 아웃라인이 자동으로 자연..

[SHADER LAB] Shader Model Features

[SHADER LAB] Shader Model Features 찾기 쉽도록 발췌 참조 - https://www.lifewire.com/determine-directx-version-and-shader-model-812997 참조 - MS HLSL Documentation : https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-models 참조 - Unity Documentation : https://docs.unity3d.com/kr/2023.2/Manual/SL-ShaderCompileTargets.html 참조 - Unity Documentation : https://docs.unity3d.com/540/Docum..

[RENDERING][TEST] Rendering layer

[RENDERING][TEST] Rendering layer 특정 오브젝트에 원하는 라이트만 빛이 적용되도록 하기 위하여 보통 오브젝트 layer와 컬링 마스크를 이용하거나 Rendering layer을 사용하는 방법이 있다. 복잡한 게임을 만들 때, 오브젝트 layer를 많이 만들어 내는데, 오브젝트 layer를 무한정 생성할 수 없다(32개가 최대)는 문제점이 있다. 동시에 오브젝트 layer의 경우 프로그래밍을 할 때, 많이 쓰이기 때문에, 프로그램 쪽에서 많이 이용된다. 대표적으로 위의 이유로 Rendering layer를 사용하는 도중 Point light 등 Additional light가 이 Rendering layer에 맞춰서 작동하지 않는 것이었다. 처음에는 버그인 줄 알았고, 유니티의 ..

[SHADER] 재미있는 UV의 세계 // Vector2((x+(y*a)), y) / 하트

[SHADER] 재미있는 UV의 세계 - Vector2((x+(y*a)), y) - UV 하트 만들기 히히 오늘도 재미있는 것을 해보았다. Vector2((x+(y*a)), y) 만약 3D에서 UV의 변경 없이 버텍스 위치만 이동한다면, 자연스럽지 못하고 하단에 포함한 이미지같이 맵핑이 생각한 것과 다르게 찌그러질 때가 대부분이다. 특히나 폴리곤 형태에서 삼각형의 모습으로 찌그러지는 부분이 많은데 이것을 해결하는 것은 사실상 불가능하다. VFX에서 자주 쓰이는 UV 왜곡이 방식이 있는데, 하단에 첨부한 gif의 결과물을 얻을 수 있는 공식이 있다. 바로 벡터 ((x+(y*a)), y) 이다. 하단에 첨부한 그래프에서 볼 수 있듯이, a 값이 증가함에 따라 그래프의 기울기가 증가하게 된다. 즉, 벡터의 위..