UnityShader初级篇——渐变纹理
来源:互联网 发布:反转二叉树 js 编辑:程序博客网 时间:2024/06/05 03:28
1.使用渐变纹理来控制漫反射光照的结果
Shader"Unity Shaders Book/Chapter 7/Ramp Texture"{Properties{_Color ("Color Tint", Color) = (1,1,1,1)//"White是内置纹理名字,即全白纹理,{}是初始值"_RampTex("Ramp Text", 2D) = "white" {}_Specular ("Specular", Color) = (1,1,1,1)_Gloss ("Gloss", Range(8.0, 256)) = 20 }SubShader{Pass{ Tags{"LightMode" = "ForwardBase"} CGPROGRAM#pragma vertex vert#pragma fragment frag#include "LIghting.cginc"fixed4 _Color;sampler2D _RampTex;//定义_RampTex的纹理属性变量float4 _RampTex_ST;fixed4 _Specular;float _Gloss;struct a2v{float4 vertex : POSITION;float3 normal : NORMAL;float4 texcoord : TEXCOORD0;};struct v2f{ float4 pos : SV_POSITION; float3 worldNormal : TEXCOORD0; float3 worldPos : TEXCOORD1; float2 uv : TEXCOORD2;};v2f vert (a2v v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.worldNormal = UnityObjectToWorldNormal(v.normal);o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;//使用内置宏TRANSFORM_TEX(顶点纹理坐标,纹理名)计算经过平铺和偏移后的纹理坐标o.uv = TRANSFORM_TEX(v.texcoord, _RampTex);return o;}fixed4 frag (v2f i) : SV_Target{fixed3 worldNormal = normalize(i.worldNormal);fixed3 worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldPos));fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz ;//使用半兰伯特模型构建一个纹理坐标,使用此坐标对渐变纹理进行采样,uv方向都使用半兰博特,最后将渐变纹理与材质纹理相乘fixed halfLambert = 0.5 * dot(worldNormal, worldLightDir) + 0.5;fixed3 diffuseColor = tex2D(_RampTex, fixed2(halfLambert, halfLambert)).rgb * _Color.rgb;fixed3 diffuse = _LightColor0.rgb * diffuseColor;fixed3 viewDir = normalize(UnityWorldSpaceViewDir(i.worldPos));fixed3 halfDir = normalize(worldLightDir + viewDir);fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(saturate(dot(worldNormal,halfDir)), _Gloss);return fixed4(ambient + diffuse + specular,1.0);;}ENDCG}}Fallback"Specular"}
阅读全文
0 0
- UnityShader初级篇——渐变纹理
- UnityShader初级篇——单张纹理
- UnityShader初级篇——遮罩纹理
- UnityShader案例(六)——渐变纹理
- UnityShader初级篇——凹凸映射
- UnityShader初级篇——透明度测试
- UnityShader初级篇——透明度混合
- UnityShader初级篇——使用半兰伯特光照模型
- UnityShader初级篇——BlinnPhong光照模型
- UnityShader案例(四)——单张纹理
- UnityShader案例(五)——法线纹理
- UnityShader案例(七)——遮罩纹理
- UnityShader入门精要学习笔记(九):基础纹理之渐变纹理与遮罩纹理
- UnityShader初级篇——最简单的顶点/片元着色器
- UnityShader初级篇——使用假色彩图像调试代码
- UnityShader初级篇——实现逐顶点漫反射光照模型
- UnityShader初级篇——实现逐像素漫反射光照模型
- UnityShader初级篇——实现逐顶点高光反射光照模型
- 蓝桥杯 算法提高 8-1因式分解
- Git详细使用教程
- 语音识别的前端处理
- leetcode 122.Best Time to Buy and Sell Stock II —— 贪心
- Comparable和Comparator 是什么以及区别
- UnityShader初级篇——渐变纹理
- touchpad hid report descrpt windows sample descript
- python_socket网络套接字
- 1079. 延迟的回文数 (20)
- Scala基础学习之函数定义,流程控制,异常处理
- myeclipse2014创建webservice从0开始,跳过一个个的坑
- AutoCAD .Net 遍历符号表
- MyBatis框架总结
- Java--线程基础知识学习初步记录(1)