博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
优化实现Mobile/Bumped Diffuse
阅读量:5931 次
发布时间:2019-06-19

本文共 2837 字,大约阅读时间需要 9 分钟。

在上一篇帖子的基础上增加一张法线贴图即可:

Shader "James/Scene/Bumped_Diffuse"{    Properties    {        _MainTex ("Base (RGB)", 2D) = "white" {}        _BumpTex("Normal Map", 2D) = "bump" {}        _MainLightColor("主光颜色", Color) = (1,1,1,1)        _MainLightDir("主光方向", Vector) = (1,1,0,0)        _MainLightBrightness ("主光强度", Range(0, 10)) = 1    }        SubShader    {        Tags { "RenderType"="Opaque" "Queue"="Geometry" }        LOD 200                Pass        {            Tags { "LightMode"="ForwardBase" }            Lighting Off                        CGPROGRAM            #pragma fragmentoption ARB_precision_hint_fastest                        #pragma vertex vert            #pragma fragment frag            #pragma multi_compile_fog                        #include "UnityCG.cginc"            float4 _MainLightColor;            float4 _MainLightDir;            float _MainLightBrightness;            uniform sampler2D _MainTex, _BumpTex;            uniform half4 _MainTex_ST, _BumpTex_ST;            struct vertexIN_base            {                float4 vertex : POSITION;                float3 normal : NORMAL;                float4 tangent : TANGENT;                float2 texcoord : TEXCOORD0;            };                        struct v2f_base            {                float4 pos : SV_POSITION;                half2  uv : TEXCOORD0;                half4 tangentWorld : TEXCOORD1;                half4 normalWorld : TEXCOORD2;                half4 binormalWorld : TEXCOORD3;                UNITY_FOG_COORDS(5)            };            v2f_base vert(vertexIN_base v)            {                v2f_base o;                o.pos = UnityObjectToClipPos(v.vertex);                o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);                o.tangentWorld.xyz = normalize(mul(unity_ObjectToWorld, half4(v.tangent.xyz, 0.0)).xyz);                o.normalWorld.xyz = normalize(mul(unity_ObjectToWorld, half4(v.normal, 0.0)).xyz);                o.binormalWorld.xyz = cross(o.normalWorld.xyz, o.tangentWorld.xyz) * v.tangent.w;                UNITY_TRANSFER_FOG(o,o.pos);                return o;             }                        fixed4 frag(v2f_base i) : COLOR            {                float3 bump = UnpackNormal(tex2D(_BumpTex,TRANSFORM_TEX(i.uv, _BumpTex)));                half3x3 local2WorldTranspose = half3x3(i.tangentWorld.xyz, i.binormalWorld.xyz, i.normalWorld.xyz);                half3 worldNormal = normalize(mul(bump, local2WorldTranspose));                float diffuse = max(0, dot(normalize(worldNormal), normalize(_MainLightDir)));                fixed4 mainColor = tex2D(_MainTex, i.uv);                fixed4 clr = mainColor * _MainLightColor * diffuse * _MainLightBrightness;                UNITY_APPLY_FOG(i.fogCoord,clr);                return clr;            }            ENDCG        }    }    FallBack Off}

 

转载地址:http://pmktx.baihongyu.com/

你可能感兴趣的文章
mac os 的brew 使用攻略,解决mac命令行下代理的问题。
查看>>
Java 增强型的for循环 for each (转载)
查看>>
STL--Lambdas(一)
查看>>
鸟哥的私房菜读书笔记——磁盘
查看>>
APPx企业名片小程序优化升级,助力商家品牌宣传与提升!
查看>>
android学习笔记之四TabHost布局
查看>>
jquery的$.extend和$.fn.extend作用及区别
查看>>
VS2008非托管C++调用wcf(WebService)服务
查看>>
opencv+svm
查看>>
IOS 导航栏的设置
查看>>
Group-Office 安装手册(英文版)
查看>>
spring boot 实战:我们的第一款开源软件
查看>>
plist文件的读写
查看>>
趣图:接到产品经理电话的我睡意全无!
查看>>
七点建议助您写出优雅的Java代码
查看>>
「译」开发者如何提升和推销自己
查看>>
Windows8.1
查看>>
java线程的同步与异步
查看>>
.net 数组按奇偶数分割
查看>>
SQL 多表联合查询
查看>>