본문 바로가기

셰이더11

유니티 소팅과 셰이더의 연계성..(Unity Sorting Strange..) 바닥 아웃라인 셰이더를 만든후 그 위에 올라갈 오브젝트의 소팅에 문제가 있다는 것을 발견했습니다. 이 때 사용된 렌더큐를 따져보면 바닥 렌더 큐(Pink) - Tags {"Queue"="Transparent+100" "IgnoreProjector"="True" "RenderType"="Transparent"} 오브젝트 렌더 큐(Blue) - Tags {"RenderType"="Opaque"} 큐 순서를 따져보면 Transparnet 가 Opaque보다 소팅이 위에 찍히기에 당연한 결과라 할 수 있습니다. 그래서 오브젝트 렌더 큐를 아래와 같이 변경을 해보았습니다. Tags {"Queue"="Transparent+200" "IgnoreProjector"="True" "RenderType"="Transpar.. 2016. 8. 24.
유니티 셰이더 - Plane에서 아웃라인(outline)을 이쁘게 만들기 위한 고민.. 유니티의 아웃라인 셰이더는 구글에 돌아다니는 레퍼런스가 많아 손쉽게 구현이 가능합니다. 하지만, 자세하게 여러가지를 따지다 보면 불편한 사항이나 제약이 많이 뒤따른다는 것을 쉽게 발견할 수 있습니다. 일반적인 공식으로 알려져있는 아래 수식대로 셰이더를 만들어 아래 오브젝트에 연결해 보면.. v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); fixed3 norm = mul ((fixed3x3)UNITY_MATRIX_MVP, v.normal); fixed2 offset = TransformViewToProjection(norm.xyz); o.pos.xy += offset * o.pos.z * _Outline; o.pos.z += 0.01 * _Outline; o.color.. 2016. 8. 23.
유니티 셰이더 - Surface 셰이더에서 알파가 안빠지는 현상 간단한 서피스 커스텀 셰이더를 만들었는데 알파 값을 0으로 아무리 해도 알파가 안빠지는 현상이 계속됐다. 여러가지 테스트를 해보니 SurfaceOutputCustom 에 Normal 과 Emission 값을 넣어주지 않으면 알파 값이 계속 빠지지 않는 것이다.. #pragme에 keepalpha 문을 넣어주는 것은 당연하고.. 서피스 셰이더 제작후 알파값이 빠지지 않으면 아래의 세 구문을 꼭 넣어주자. Blend One OneMinusDstAlpha #pragma surface surf keepalpha struct SurfaceOutputCustom { fixed3 Albedo; fixed3 Normal; fixed3 Emission; fixed Alpha; }; 2016. 7. 14.
셰이더 일괄 교체 스크립트 제작 프로젝트를 진행하면서 파티클 빌트인 셰이더들이 문제를 일으켜 일괄 변환해 줘야 하는 상황이 발생했습니다. 일일이 바꾸는 번거러움을 덜고자 제작한 스크립트 입니다. 1. 모바일 엔진 셰이더(바뀌어야할 셰이더 선택) 2. 바뀔 셰이더 선택 3. 대상 메터리얼들 선택(폴더 / 파일) 4. 대상 메터리얼중 1번과 동일 셰이더를 찾아 2번으로 바꿔줌~ 일괄 교체~ using UnityEngine; using UnityEditor; using System.Collections; using System.Collections.Generic; using System.IO; public class MaterialControl : EditorWindow { public Shader shader1 = null; public .. 2016. 6. 22.