본문 바로가기
유니티 셰이더 그래프(Unity shadergraph) 에서 버텍스 스트림 셰이더 (vertex stream shader) 가 적용된 이펙트 셰이더 만들기 1 유니티 이펙트 툴인 슈리켄에서 가장 유용한 부분중 하나인 버텍스 스트림 셰이더 만들기입니다. 이론적으로는 뭐 간단한 편인데, 코드로 처리하는건 그 과정까지가 복잡해서리.. 노드가 나왔으니 상대적으로 더 간단해지긴 했습니다만역시 사전 지식 없이는 또 귀찮은 점이 있어서 정리해 봅니다. 버텍스 스트림만 만들면 쓸모없거든요. 이펙트용으로 하려면 나머지도 다 만들어야지... 기존 유니티는 이펙트용 기본 셰이더가 있었습니다만, 노드로 바뀌면서 어중간한 상태가 되어 버렸으니 이제 직접 만들줄도 알아야 한답니다. 나중에 VFX 그래프가 주류가 되면 더욱 더 중요하게 생각될겁니다. 그래서 사실은 낚시입니다 캬캬캬버텍스 스트림 얘기도 하기 전에 기본형부터 만들 줄 알아야 뭐가 되지 않겠심까 캬캬캬 그래서 이번에는 기본형.. 2019. 12. 31.
유니티 셰이더 그래프(Unity shadergraph) Constant 노드 이거 뭐 상수라고 그래서... Vector 1 이라고 씌인거랑 똑같은거 아니야?!? 라면서 꺼내봤는데 아예 고정된 상수값이네요 .. 실제 계산할때 자주 쓰일 것 같은 상수를 미리 만들어 놓은 것입니다. 그래서 정리를 할 필요가 있는듯. Generated Code ExampleThe following example code represents one possible outcome of this node per constant type.PIfloat _Constant_PI = 3.1415926; TAUfloat _Constant_TAU = 6.28318530; PHIfloat _Constant_PHI = 1.618034; Efloat _Constant_E = 2.718282; SQRT2float _Const.. 2019. 12. 29.
유니티 셰이더 그래프(Unity shadergraph) 칼라 덧셈과 곱셈의 이상한 결과물♥ 어제 스터디하다가 이상한 결과 발견 회색 더하기 회색이 흰색이 아냐?!?! 곱하기 (multiply) 는 잘 모르겠으니 그렇다 쳐도 더하기(add) 의 결과물은 사뭇 놀랄 지경. 회색 (0.5) + 회색 (0.5) 가 흰색(1.0) 이 아니니까요. 이거.. 전형적인 감마쪽 문제인데... 설마.. 그냥 내부에서 색상 노드를 만들었는데 저걸 sRGB 영역인걸로 인식하는건가?!?!? 그래서 이렇게 같은 내용을 수치로 만들어 봤더니 ... 흰색이 나옴 ... 히이이익 야 이거 맞나본데?!??! 그래서 '아직 정식 문서화도 안된 깃허브 문서' 를 열어서 확인을 해봤더니 https://github.com/Unity-Technologies/ScriptableRenderPipeline/blob/master/com.un.. 2019. 12. 28.
유니티 셰이더 그래프 ( Unity Shadergraph): 카메라가 가까이 왔을때 부드럽게 사라지기 블로그 주인장에게 커피값을 후원할 수 있습니다! 카메라가 근접하면 사라지는 기능, 은근히 쓸데가 많습니다. 꼭 사라지지 않고 뭔가 카메라가 근접하면 색이 변하건 움직이건 하게 할 수도 있고요. 그렇지만 일단 근접하면 사라지는 기능은 이펙트에서 주로 쓰입니다. 빌보드 플렌이 너무 근접하면 티가 나 버리니까 너무 근접하기 전에 사라지도록 하는 방식이니까요. 응용하면 댑스에서도 쓸 수 있습니다. 간단한 거지만 쓸데가 많으니 뭐 일단... 일단 메터리얼과 셰이더 그래프를 하나 만듭니다. 셰이더 그래프를 메터리얼에 드래그해서 적용시키고, 다시 메터리얼은 오브젝트에 적용시킵니다. 뭐 이건 다 아실테니까. 이렇게 적용해 놓은 상태에서 이제 시작합니다. 일단 빈 곳에서 스페이스바를 눌러서, position 노드를 꺼냅.. 2019. 12. 25.
ShaderGraph 에서 LightDirection 가져오기 ShaderGraph를 만지다보면, lightDirecion 노드가 없다는걸 당황하게 됩니다. Shader 를 조금 배우다 보면 바로 나오는 NdotL을 구현할 수 없다는데 당황하게 되는데요, 뭐.. 요샌 그게 추세이니까 -_- ; 그래서 .. 그냥은 못 쓰고 강제로 꺼내와야 쓸 수 있게 해 놓았습니다. (네가 왜 라이트를 건드리고 그래? 라는 느낌) 사실 여기 있는https://blogs.unity3d.com/kr/2019/07/31/custom-lighting-in-shader-graph-expanding-your-graphs-in-2019/내용인데요, 조금 쉽게 설명해 보겠습니다. 저도 공부할겸. 일단 언릿 그래프를 하나 만듭시다. 라이트 벡터를 받아와 보죠 유틸리티에 있는 커스텀 펑션을 하나 만듭.. 2019. 12. 23.
LWRP(URP) 에서 굴절(Refraction) 만들기 블로그 주인장에게 커피값을 후원할 수 있습니다! LWRP에서의 굴절은 간단한데 좀 피곤합니다 일단 문서 출처는 여기 https://forum.unity.com/threads/the-scriptable-render-pipeline-how-to-support-grabpass.521473/#post-4024678 이걸 해주기 위해서 먼저 선행되어야 할 일이 있습니다. 레거시 파이프라인에서는 _Grabpass 로 사용하던 것인데, LWRP에서는 파이프라인 셋팅에서 Opaque Texture 를 켜줘야 합니다. 이게 아무래도 그랩패스 역할을 해주는듯. 그리고나서 블랙보드에서 텍스쳐를 하나 받아오게 해주는데, 레퍼런스를 _CameraOpaqueTexture 로 해줘야 합니다. 최근에 추가된 기능인 것 같은데, HD.. 2019. 10. 28.
유니티 내장 셰이더 함수들 https://docs.unity3d.com/kr/current/Manual/SL-BuiltinFunctions.html 빌트인 셰이더 헬퍼 함수 - Unity 매뉴얼 Unity에는 셰이더를 더 간편하고 쉽게 작성하는 데 유용한 빌트인 유틸리티 기능이 있습니다. docs.unity3d.com 에 있는 내용에 대한 해석입니다. 저기에 내용이 다 있지만 좀 더 쉽게 쓰는거랄까. 왜냐면 내가 보기 편하게 하려고 메뉴얼 쓰는 알바를 저에게! UnityCG.cginc의 버텍스 트랜스폼 함수 유니티 안에는 UnityCG.cginc 라고 하는, 셰이더를 위한 내장함수들이 존재합니다. 버텍스&프레그먼트 셰이더(이하 프레그먼트 셰이더) 에서 #include "UnityCG.cginc" 라고 선언하면 쓸 수 있는 명령어죠.. 2019. 9. 13.
Camera Depth Texture : 카메라 뎁스 텍스쳐 포워드 렌더링에서 카메라 뎁스 텍스쳐가 필요한 경우가 있습니다. 디퍼드 렌더링 상태에서는 뎁스 텍스쳐가 걍 있으니까... 근데 포워드 렌더링 상태일때는 없죠 그럴때는 뎁스 텍스쳐를 생성시켜야 합니다 출처 https://lindenreid.wordpress.com/2017/12/15/simple-water-shader-in-unity/ using UnityEngine; [ExecuteInEditMode] public class DepthTexture : MonoBehaviour { private Camera cam; void Start () { cam = GetComponent(); cam.depthTextureMode = DepthTextureMode.Depth; } }이 스크립트를 카메라에 적용해 줍니.. 2019. 2. 1.
셰이더로 동그라미 그리기 말그대로 동그라미 그리기. 여러가지 상황에서 써먹을 수 있는 녀석들이라 정리해 두는 것이 유용하다 입체로도 응용할 수 있어서, 마둠파님의 InnerAo나 여러 볼류메트릭 기법등에서도 유용한 공식이니 정리해 두면 좋을듯. 첫 번째 방법 float dist = distance(IN.uv_MainTex, float2(0.5, 0.5)); UV의 각 수치를 0.5,0.5에서 얼마나 멀리 떨어졌는지를 계산한다. 이걸 Pow 처리하거나 이래저래 처리하면 요래조래 쓸 수 있다 o.Emission = pow(1-dist,7); 두 번째 방법 float dist2 = pow(cos(abs(IN.uv_MainTex.x * 2-1)) * cos(abs(IN.uv_MainTex.y * 2 - 1)),10); 이건 좀 복잡하니.. 2019. 1. 28.
Fake Interior Shader 페이크 인테리어 셰이더 블로그 주인장에게 커피값을 후원할 수 있습니다! 가짜로 실내를 만들때 쓰는 셰이더. 언리얼에서는 로보리콜에서 예제를 볼 수 있고, 스파이더맨 PS4 게임에서도 볼 수 있는 건물 표현 방식입니다. 그 외에도 오버워치라던가 여러 군데에서 씀. 실내에 직접 모델링을 할 수도 있지만 아무래도 그게 좀 많아지면 이게 훨씬 더 가벼운 방법 참고할 수 있는 부분은 심시티나 스파이더맨에서도 사용함 http://www.andrewwillmott.com/talks/from-aaa-to-indie 유니티 포럼에서 이 내용에 대해 토의 https://forum.unity.com/threads/interior-mapping.424676/#post-2751518 알란주코니의 모음 https://www.alanzucconi.com.. 2019. 1. 27.
AABB(Axis Aligned Bounding Box) 방식의 레이 충돌공식 AABB(Axis Aligned Bounding Box) 방식의 레이 충돌공식 정리우선 시작하기 전에 하이브리드 선생님에게 감사의 인사를 드리는 바입니다 일단 TOP 에서 본다고 칩시다. 위에서 보는 겁니다 Plane을 보는 카메라를 위에서 바라본다고 생각해 보죠 그러니까. 이렇게 보고 있는 거예요 저기에 우리가 그리고 싶은건 입체입니다. 일종의 '박스' 를 그리는 거지요. '방' 을 만들고 싶다고 해도 좋아요 3D로 최종을 만들어야 겠지만 뭐 일단 2D로 해도 충분히 나중에 3D로 볼 수 있으니 일단 2D로 봅시다 그래서 결국 우리가 원하는 것은, 아래처럼 P 점의 위치가 R 점으로 이동하길 원합니다. 이런식으로 우리가 보는 점이 계속 방의 안쪽 점으로 이동시켜지면 결국 방이 그려지는 것이니까요 자 그.. 2019. 1. 24.
고양이 입체 영상을 만들자! Parallax shader 일단 결과물부터 * 찬조출연. 앵듀네 크리미 일단 이걸 이해하려면 패럴렉스 셰이더부터 이해해야 하는데요 기본 공식은 이거고 http://egloos.zum.com/chulin28ho/v/3749030 언리얼에서는 Bump offset이라는 노드로 존재하고 있습니다. http://api.unrealengine.com/KOR/Engine/Rendering/Materials/HowTo/BumpOffset/ 유니티의 엠플리파이트 셰이더에서는 패럴렉스 옵셋 parallax offset 이라는 이름으로 존재하고 있고요 캐네디언이 된 풍풍풍이의 글도 좋구요 https://m.blog.naver.com/PostView.nhn?blogId=sorkelf&logNo=40125344612&proxyReferer=https%.. 2019. 1. 22.
반응형