본문 바로가기
melting shader melting shader for Unity 서피스로 충분해서 노드 분석으로 코드로 재작성. 엠플리파이드 예제 안에 있는 내용을 보기 편하게 재정리하고 살짝 개량함쓸데없는 부분 제거. 2019. 1. 21.
melt shader 기본형 만들기 멜트 기본형 만들기 - 엠플리파이트 셰이더 안에 있는 예제 분석 공부입니다 일단 버텍스 셰이더에서 float meltHeight = _Height - vertexPos.y; 을 추가해서 v.vertex.xyz += float3(0, meltHeight, 0); 을 만듭니다. 이렇게 되면 _Height 값을 조절하면 , 버텍스 포지션 을 뺀 것에 다시 버텍스 포지션을 더했으니 버텍스 포지션은 0가 되고, 모든 버텍스가 _Height 값의 y 값으로 이동하게 됩니다 그 상태에서 여기서 float meltHeight = min(0,_Height - vertexPos.y); 으로 만들어서, 0보다 아래 값만 존재하게 합니다. 즉 + 값은 없는거임 v.vertex.xyz += float3(0, meltHeight.. 2019. 1. 19.
SSS Shader for Unity ¨https://www.alanzucconi.com/2017/08/30/fast-subsurface-scattering-2/ ¨마둠파님의 정리 ¡https://blog.naver.com/mnpshino/221442188568¡https://blog.naver.com/mnpshino/221442196618 ¡https://blog.naver.com/mnpshino/221442210257 2019. 1. 19.
텍스쳐 회전시키기 float2 rotateUV(float2 uv, float degrees) { const float Deg2Rad = (UNITY_PI * 2.0) / 360.0; //1도의 라디안값을 구한다 float rotationRadians = degrees * Deg2Rad; //원하는 각도(디그리)의 라디안 값을 구한다 float s = sin(rotationRadians); float c = cos(rotationRadians); float2x2 rotationMatrix = float2x2(c, -s, s, c);//회전 2차원 행렬을 만든다 uv -= 0.5;//중심축을 이동시켜 가운데로 만들고 uv = mul(rotationMatrix, uv);//회전한 다음에 uv += 0.5;//다시 중심축 이동시.. 2019. 1. 11.
Unity 2018 built-in particle shaders 유니티 2018 내장 파티클 쉐이더_4 "Particles/Standard Unlit" 사실상 가장 제대로 쓸 것 같은 이펙트용 쉐이더입니다 기존 쉐이더와 그나마 가장 비슷하게 쓸 수 있으니까요 역시 Vertex Streams 연결을 해 줘야 합니다. Apply to System을 눌러주세요 아무래도 조명 연산이 없다보니 그냥 스텐다드보다는 좀 더 가볍고, 조절할 수 있는 옵션들은 기존 쉐이더에 비해 늘어났습니다 '새로 생긴 이펙트용 쉐이더' 를 추천하라면 이녀석을 추천하겠네요 근데 이녀석은 좀 재밌어졌달까 귀찮아졌달까... 조합이 더 생겼어요 ColorMode라는게 생겨서 말입니다. 이게 설명이 좀 필요하고 렌더링 모드와 조합이 좀 필요해요사실상 이 둘을 완벽하게 이해하고 써야 제대로 된 결과물이 나오는데, 조합까지 들어가니까 귀찮아 집니다.. 2018. 9. 24.
Unlit Standard Particle shader blending #elif defined(_COLORADDSUBDIFF_ON)#define fragColorMode(i) \ albedo.rgb = albedo.rgb + i.color.rgb * _ColorAddSubDiff.x; \ albedo.rgb = lerp(albedo.rgb, abs(albedo.rgb), _ColorAddSubDiff.y); \ albedo.a *= i.color.a; add모드일때 material.SetVector("_ColorAddSubDiff", new Vector4(1.0f, 0.0f, 0.0f, 0.0f)); Subtractive 모드일때 material.SetVector("_ColorAddSubDiff", new Vector4(-1.0f, 0.0f, 0.0f, 0.0f)); Di.. 2018. 9. 24.
Unity 2018 built-in particle shaders 유니티 2018 내장 파티클 쉐이더_3 "Particles/Standard Surface" 파티클에서 쓸 수 있는 스텐다드 쉐이더입니다. 뭐 실제 써 보니까 굳이 파티클에만 쓸 수 있는건 아니구만요 그렇지만 파티클에서 사용하기 좋은 유용한 기능들이 들어 있어서 파티클에 쓰기 괜찮은 녀석입니다. 뭐 괜찮다고는 하지만 기본적으로 PBR이 돌아가는 스텐다드 쉐이더입니다. 가벼울리는 없지요 그저 파티클에 쓸 필요가 있을때 쓸 수 있는 녀석이라는 거지 가볍다고 한 적은 없습니다 어떨 때 씁니까? 일단 빛을 받아야 할 때 씁니다. 메쉬로 된 파티클이나, 뭔가 노말맵을 쓰고 smoothness를 써서 빛에 반응해야 할 녀석을 만들 때 쓸 수 있습니다. 핏자국 같은 것도 쓸 수 있겠네요 물론 그럼 '그냥 스텐다드 쉐이더를 쓰면 되지 않느냐! ' 라고 하실 .. 2018. 9. 23.
Unity 2018 built-in particle shaders 유니티 2018 내장 파티클 쉐이더_2 "Particles/Alpha Blended Premultiply" 기본적으로 알파 블렌딩 쉐이더입니다. 똑같이 동작하죠 역시 알파가 있어야 하고 겹쳐져도 밝아지거나 어두워지는게 없습니다 .그렇지만 외각의 검은 부분을 없애줍니다.아래 그림처럼 검은 배경에 그린 이펙트 '일 때만' 의미있습니다. 아니라면 나가리. Blend One OneMinusSrcAlpha블렌딩을 쓰기 때문인데요. Additive 의 soft와 같은 구조입니다. 때문에 이런 이미지로 알파 블렌딩 쉐이더를 만들때 이렇게 나오던 것이 이렇게 나오게 됩니다. 단, 검은색 배경 이미지일때만 효과가 있다는 것은 말했고, 그 때문에 검은색이 빠지면서 좀 밝아 보이는건 어쩔 수 없긴 합니다. "Particles/Anim Alpha Blended" .. 2018. 9. 23.
Unity 2018 built-in particle shaders 유니티 2018 내장 파티클 쉐이더_1 한동안 다른 공부좀 하느라고 블로그 업데이트를 전혀 못했었습니다. 다른 공부라면 우후후... 쉿 하여간 유니티 파티클에 파티클 셰이더들이 좀 업데이트 된 것 같은데 이게 또 설명이 없단 말이죠 (일해라 유니티!) 뭐 사실 이펙트 아티스트 분들이 별로 관심 안가진 이유가 당연하게도 '어차피 이펙터들은 쉐이더를 만들어서 쓰니까' 였습니다 맞아요... 쉐이더는 만들어 써야 합니다. 특히 이펙트용 쉐이더는 더더욱 말이죠 일단 유니티는 재밌는게 '아티스트가 쉐이더를 만든다' 라는걸 배제시켜놓고 시작을 했어요그래서 '쓸 법한 쉐이더를 잔뜩 미리 만들어 놓고 골라서 쓰게 한다' 라는 프리셋 정책을 시행하고 있지요 그런데 언리얼은 '그런 거 없다' 는 정책입니다. '쉐이더를 노드로 짤 수 있게 해줄테니 아티스트가 다 .. 2018. 9. 22.
깊이값 가지고 놀기 할 때 마다 잊어버려서 백업용. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Shader "ltest" { SubShader { Tags{ "RenderType" = "Opaque" } CGPROGRAM #pragma surface surf Lambert struct Input { float4 screenPos;//스크린 포지션을 받읍시다 }; sampler2D _CameraDepthTexture; void surf( Input i , inout SurfaceOutput o ){ float4 ScreenPos = float4( i.screenPos.xyz , i.screenPos.w + 0.00000000001 ); //0으로 나누는 사.. 2018. 6. 1.
유니티 파티클 커스텀 데이터 쉐이더 : Unity Particle(Shuriken) Custom Data Shader 버그를 잡고 기능을 수정하였습니다 일단 가장 기본적인 기능을 만들어 올려봅니다. 기존의 슈리켄에서는 메터리얼의 프로퍼티들을 수정할 수가 없었습니다. 그래서 따로 키 애니메이션을 줘야 했고, 그것이 파티클의 타이밍과 맞출 수가 없어서 뭔가 쭉정이처럼 이중으로 작업할 수 밖에 없었죠. 그나마도 제대로 맞지도 않고. 그래서 언리얼에서는 일찌감찌 커스텀 데이터라는 개념이 있었습니다만 유니티는 이번에 드디어 생겼네요 일단 이런게 있고 말풍선을 읽어보면 스크립트나 셰이더에서 읽을 수 있게 커스텀 데이터를 조절한다고 하네요. 쉐이더에서 사용하려면 커스텀 버텍스 스트림을 사용해야 하고요 그래서 만들어 봤습니다. 커스텀 버텍스 스트림 쉐이더입니다 .아래 쉐이더를 다운받으시면 됩니다. 다운받아 메터리얼에 적용하시면 이렇게.. 2017. 12. 3.
파티클 커스텀 버텍스 스트림 : Particle Custom Vertex Streams Particle System vertex streams and Standard Shader supportIf you are comfortable writing your own Shaders, use this addition to the Renderer Module to configure your Particle Systems to pass a wider range of data into your custom Shaders.만약에 커스텀 셰이더 만드는데 익숙하시다면, 이 렌더 모듈을 이용해서 파티클 시스템이 당신의 커스텀 셰이더에 데이터를 넣을 수 있게 해줄겁니당 There are a number of built-in data streams to choose from, such as velocity, si.. 2017. 11. 29.
반응형