본문 바로가기
Flipbook Shader for Amplify Shader 앰플리파이 쉐이더로 만드는 플립북 일단 이 이미지를 준비함다. 당연히 타일링 되어 있어야 함. 왼쪽 아래가 0,0 인건 알죠. 오른쪽 위가 1,1 인것도 알죠 그럼 먼저 저 중에서 7 이란 글씨만 나오게 하려면 UV에 1/3을 곱해야 할 겁니다. 이케요. 저 Divide는 1/3 입니다. 즉 이제 이 UV는 0,0 에서 0.33333,0.33333 이 되었습니다. 다음은 이동을 시켜야겠네요 일단 가로로만 이동을 시켜보죠 가로로 이동시키려면... UV중 U에다가만 더해줘야겠네요 0.33333씩 더해주면 되겠죠? 제가 제일 싫어하는 노드방식의 귀찮은 점이 나왔네요 컴포넌트로 나눴다가 어펜드로 합쳐주기 으 극혐. 하여간 U 에다가만 0.3333 을 더해주니 (1/3 이 그나마 좀 더 정확하겠지만 뭐...) 8이 나왔습니다. 여기에 이제 0.6.. 2017. 10. 3.
벽 뒤에 가려질때 라인 나오는 셰이더 (Hidden line shader) 이걸 해보죠 ㅋ 일단 세 개가 필요합니다 아래처럼요 그리는 순서를 지정합니다. 순서는 1 -3 -2 순서입니다. 벽부터 그리고 , 회색 캡슐 그리고, 마지막에 빨강 캡슐을 그리게 해 줘요 빨강 캡슐은, 저한테 셰이더 강의 들었던 학생들이라면 몽땅 다 알고 있는 그 외곽선 방식입니다. 뒤집은거요. 하지만 사실은 안 뒤집어도 돼요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 왠지는 나중에 생각해 보세요 지금은 보기 편하게 그냥 뒤집었을 뿐이예요 자 그럼 이렇게 되는게 당연하겠죠? 일단 우리가 먼저 할 일은 Ztest를 이용해서 빨강 공을 '언제나 앞으로 나오게' 만드는 거예요 빨강 애의 Z 값은 가장 멀리 있어서 가장 크거든요? 근데 지금은 '작거나 같을때' 로 되어 있어서 저렇게 보이는 거예요 뭐 다른 것도 되지만, 과감하게 '언제.. 2017. 8. 24.
스탠실 버퍼 사용하기 에또... 그니까 스탠실 버퍼라는게 있어요 보통 하드웨어 버퍼로, 8비트 즉 0~255 를 가지고 있지요. 그냥 포토샵의 그레이스케일 하나 가지고 있다고 생각하면 편해요 . 음 더 쉽게 말할까? 알파 채널을 가지고 있다고 생각해 보세요!! 일단 기본은 까맣게 칠해져 있는거죠 네 뭐 이렇게 말이죠 까매요 숫자로는 0 전부 0이 채워져 있네요 그렇죠 그럼 이제 플렌을 하나 놓을께요 아참 쉬워서 앰플리파이드 셰이더 썼어요이거 코딩도 똑같음 이건 스탠실 버퍼를 이용하게 셋팅했어요 레퍼런스가 3번이고.. 이거랑 컴페리즌이랑 같이 읽어야 해요. 이건 이렇게 읽어야 겠네요 '자 .. 3번이란 숫자가 있는데.. 비교해서 몽땅 다(언제나) 통과! 다 찍어!! ' 즉 3번이란 숫자가 있는데 (어케 쓴다고는 안했음) 이걸 .. 2017. 8. 24.
_LightColor0 란 무엇인가요? Q: 교수님교수님 _LightColor0 라는 변수가 현재 씬에서 존재하는 light중 가장 밝은 라이트의 색상을 가져오는 변수가 맞나요? 그렇게 이해했는데 틀린점이 있나요???????????????????? A: https://forum.unity3d.com/threads/cg-shader-light-color.151535/유니티 렌더링 엔지니어인 Ares의 답변을 보면.... 포워드 렌더링 픽셀라이트 상태에서 0번은 일단 디렉셔널 라이트를 의미하고, 그 다음 4개까지의 픽셀라이트는 역시 같게 돌아가면서 계산되고, 버텍스 라이팅 상태일때에는 밝은 것부터 연산되는데, 이걸 간단하게 말해서 '밝은 것부터 연산된다' 라고 한거임 엄밀히 따지면 픽셀라이팅은 메인 디렉셔널 라이트를 먼저 연산하고, 나머지 픽셀라.. 2017. 4. 13.
lerp 공식 float lerp(float p1, float p2, float d1) { return (1-d1)*p1 + d1*p2; } lerp (A , B, t) 일때 값은 (1-t)*A + t*B와 같다는 것 셰이더 블렌딩에서 SrcAlpha OneMinusSrcAlpha 와 완전 똑같다잉 2017. 3. 26.
Radial blur for Unity //shader Shader "Hidden/radial_blur" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} fSampleDist("fSampleDist", float) = 1 fSampleStrength("fSampleStrength", float) = 1} SubShader { Pass { ZTest Always Cull Off ZWrite Off Fog { Mode off } CGPROGRAM // Upgrade NOTE: excluded shader from Xbox360 and OpenGL ES 2.0 because it uses unsized arrays #pragma exclude_renderers xbox360 gles #pragma.. 2016. 11. 8.
Rotation UV float2 rotateUV(float2 uv, float degrees) { const float Deg2Rad = (UNITY_PI * 2.0) / 360.0; float rotationRadians = degrees * Deg2Rad; float s = sin(rotationRadians); float c = cos(rotationRadians); float2x2 rotationMatrix = float2x2(c, -s, s, c); uv -= 0.5; uv = mul(rotationMatrix, uv); uv += 0.5; return uv; } sincos 이라는 함수도 있던걸로 생각되는데. https://community.unity.com/t5/Shaders/Radial-Blur-Shader-.. 2016. 10. 23.
레이마칭 테스트 레이마칭 테스트 0.01씩 64번 연산으로 만들어 낸게 아래. 위의 것이 좀 더 최적화 시킨 방법. 노말 구하다가 빡쳐서 ;;;; 스탑 2016. 8. 1.
Volumetric Rendering: Surface Shading http://www.alanzucconi.com/2016/07/01/surface-shading/ 볼륨 렌더링 공부하고 싶었는데 훌륭한 튜터리얼. 이 아저씨 튜터리얼은 언제나 마음에 든다 This is the first part of a Unity tutorial dedicated to Volumetric Rendering, raymarching and signed distance fields. These techniques allow us to overcome the biggest limitation of modern 3D engines, which only let us render the outer shell of an object. Volumetric rendering enables the crea.. 2016. 7. 28.
굴절 셰이더 만들기 / Unity Refraction Shader 강의 중 컴퓨터가 이상해서 제대로 강의를 못한 부분 올립니다. 우선 플렌을 하나 만들께요. 플렌 뒤에는... 이것저것 요것이 숨어 있습니다. 지금 안보여서 글치.. 카메라도 저렇게 설치해야 한다는게 이번에는 중요합니다. 카메라가 저렇게 보이도록 설치해야 합니다. 셰이더를 하나 만들고 적용합니다. 만든 셰이더를 열고, 최소한의 것들만 남겨둔채 지웁니다. 이번에는 Lambert shader로 사용했는데요. 사실 Lambert lighting도 쓸모 없지요. 커스텀 라이트로 만들어 라이팅을 날리는 것도 매우 좋습니다. 아무 필요 없어요. 그럼 준비가 끝났으면 굴절을 만들 준비를... 우선 스크린을 캡쳐해야 합니다. 실시간으로요. 랜더 타겟 기능을 쓰는 것도 좋겠지만 쉐이더에도 있으니.. 짜잔. 그랩패스{} 를.. 2016. 7. 26.
유니티 엔진의 노말맵은 노랑색? 흑백? 파랑색? : Unity Normal Map Color 이번에 오버워치에 관련한 문서때문에 노말맵이 왜 노랑이냐는 질문이 들어와서 ... 그걸 간단하게 말할 수도 있지만 사실 제대로 말하려면 노말맵의 기본부터 얘기해야 하는 항목이라서 말이죠 그래서 한번 간단하게 써 보겠습니다. 복잡하게 쓰자니 굉장히 길어질 것 같아서요 ㅎㅎㅎ 일단 노말맵의 기본에 대해 알아보겠습니다. 우리가 아는 노말맵은 이런 모습입니다. 파랑이라고 하죠. 뭐 .. 틀린건 아닙니다만 솔직히 저게 파랑이라고요? 저게? 솔직히 파랑이라고 보기엔 좀 애매한 색 아닙니까? 노말맵이 왜 파랑인지는 아마 제 수업 들은 분들은 다 알테니까 패스하거나 다음 기회에 쓴다 하고 뭐 일단 저게 일반적으로 우리가 아는 노말맵의 파랑 맞습니다. R 은 X를 G는 Y를 B는 Z 를 나타내는거죠 근데 저거.. 그냥 .. 2016. 5. 29.
카메라 방향에 상관없는 Matcap 만들기 Matcap은 화면에 따라 라이팅 방향이 변하지 않지요. 카메라 종속적이니까. 그러니까 화면 각도를 변하게 해도 ... 조명도 따라서 같이 각도가 돌아버린다는게 단점입니다. ...에 근데 왜 그래야 해요? 라는 생각으로 후다닥 대충 만들어본 '월드 종속형 Matcap' 카메라 각도가 변해도 조명 방향은 그대로라는데 주목. 워낙 맷캡이 간단한 공식이었기때문에 이것도 간단해요. 뒷면으로 돌면 조명이 한 번 더 나오긴 하지만 이거 수정하는거 뭐 일도 아니니까... 이걸 완성하면, Matcap이랑 동일한 무게의 공식으로, 조명이 카메라를 따라가지 않는 방법이 될겁니다. 즉 카메라가 빙글빙글 도는 게임에서도 Matcap을 사용할 수 있게 된다는 말이죠! 물론 이전에 쓰던 맷캡을 이용한 페이크 림라이트는 더이상 쓸.. 2016. 3. 26.
반응형