UnityDiffuseLightmap.shader by jimfleming
Unity3D/Shader / 2014. 6. 23. 18:33
Link : https://gist.github.com/jimfleming/5937437#file-unitydiffuselightmap-shader
Shader "Diffuse Lightmap" {Properties {_MainTex ("Texture 1", 2D) = "white" {}}SubShader {Tags { "RenderType" = "Opaque" }Pass {// Disable lighting, we're only using the lightmapLighting OffCGPROGRAM// Must be a vert/frag shader, not a surface shader: the necessary variables// won't be defined yet for surface shaders.#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct v2f {float4 pos : SV_POSITION;float2 uv0 : TEXCOORD0;float2 uv1 : TEXCOORD1;};struct appdata_lightmap {float4 vertex : POSITION;float2 texcoord : TEXCOORD0;float2 texcoord1 : TEXCOORD1;};// These are prepopulated by Unitysampler2D unity_Lightmap;float4 unity_LightmapST;sampler2D _MainTex;float4 _MainTex_ST; // Define this since its expected by TRANSFORM_TEX; it is also pre-populated by Unity.v2f vert(appdata_lightmap i) {v2f o;o.pos = mul(UNITY_MATRIX_MVP, i.vertex);// UnityCG.cginc - Transforms 2D UV by scale/bias property// #define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)o.uv0 = TRANSFORM_TEX(i.texcoord, _MainTex);// Use `unity_LightmapST` NOT `unity_Lightmap_ST`o.uv1 = i.texcoord1.xy * unity_LightmapST.xy + unity_LightmapST.zw;return o;}half4 frag(v2f i) : COLOR {half4 main_color = tex2D(_MainTex, i.uv0);// Decodes lightmaps:// - doubleLDR encoded on GLES// - RGBM encoded with range [0;8] on other platforms using surface shaders// inline fixed3 DecodeLightmap(fixed4 color) {// #if defined(SHADER_API_GLES) && defined(SHADER_API_MOBILE)// return 2.0 * color.rgb;// #else// return (8.0 * color.a) * color.rgb;// #endif// }main_color.rgb *= DecodeLightmap(tex2D(unity_Lightmap, i.uv1));return main_color;}ENDCG}}}
반응형
'Unity3D > Shader' 카테고리의 다른 글
Unity Shader Reference (0) | 2014.06.24 |
---|---|
Rendering Order - Queue tag (0) | 2014.06.24 |
쉐이더 자료 많은 사이트.. (0) | 2014.04.03 |
Toon/Tf2Shader (0) | 2013.07.19 |
Toon/Basic with Alpha (0) | 2013.07.19 |