Loading...

Performance Tips when Writing Shaders

float : 32비트, 높은 정밀도 half : 16비트, 중간 정밀도, -6000 ~ 6000 fixed : 11비트, -2.0 ~ 2.0, 그리고 1/256. color 와 벡터 길이 fixed를 쓰셈 그리고 적당히 half를 쓰고 더 높은 정밀도가 필요하면 float를 쓰셈. 참고 링크- Cg Programming/Vector and Matrix Operations- Performance Tips when Writing Shader-

2016. 4. 15. 00:10

TRANSFORM_TEX

UnityCG.cginc 폴더에 보면 이런게 있다 // Transforms 2D UV by scale/bias property#define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw) 코드에서는 UnityCG.cginc를 include 해서 아래와 같이 사용한다.o.uv = TRANSFORM_TEX(v.uv, _MainTex); 그런데 이게 어떤 기능일까?아래 참고 매뉴얼을 보면 이러한 설명이 되어 있다. 특별한 텍스처 프로퍼티들shader/material 프로퍼티로 설정한 각 텍스처에서, 유니티는 추가정보를 벡터 프로퍼티로 덧붙인다. Texture tiling & offset머티리얼은 종종 기울기와 오프셋 필드를 머티리얼의 텍스처를 위..

Unity Tags

RenderType 관련 태그 ex) Tags { "RenderType"="Opaque"} link : http://docs.unity3d.com/Documentation/Components/SL-ShaderReplacement.html LightMode 관련 태그 ex) Tags { "LightMode" = "Vertex"} link : http://docs.unity3d.com/Documentation/Components/SL-PassTags.html 유니티에 설정되어져 있는 built in tags에 커스텀 tag를 추가하여 Material.GetTag 함수로 사용할 수 있다. SubShader { Tags { ... MyTag"="tagType1" } .....위와 같은 식으로 셰이더 파일에서 설..

Built in shader variables

유니티에서는 셰이더 프로그래밍을 위해 몇개의 전역 셰이더 변수를 빌트 인 하여 제공하고 있다.현재 오브젝트의 변환 행렬이나 라이트 파라미터들, 현재시간 등 과 같은 것들이다.이 변수들을 셰이더 프로그램에서 사용할 때는 다른 변수들 처럼 선언해 줄 피룡가 없다.이들은 이미 UnityShaderVariables.cginc include 파일에 자동으로 포함되어 있다. 변환float4x4 행렬 typeNameValueUNITY_MATRIX_MVP현재 모델 * 뷰 * 투영 행렬 (model*view*projection)UNITY_MATRIX_MV현재 모델 * 뷰 행렬.UNITY_MATRIX_V현재 뷰 행렬.UNITY_MATRIX_P현재 투영 행렬UNITY_MATRIX_VP현재 뷰 행렬 * 투영 행렬UNITY_M..