Shader 标准贴图代码参考笔记
来源:互联网 发布:超级seo 编辑:程序博客网 时间:2024/06/06 01:44
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "wacky/s6 wac" { Properties{ _Diffuse("Diffuse Color",color)=(1,1,1,1) _Specular("Specular",Color) = (1,1,1,1) _Gloss("Gloss",Range(10,200)) = 20 } SubShader{ Pass{ Tags {"LightMode" = "ForwardBase"} CGPROGRAM #include "Lighting.cginc" #pragma vertex vert #pragma fragment frag fixed4 _Diffuse; fixed4 _Specular; half _Gloss; struct a2v{ float4 vertex:POSITION; float3 normal:NORMAL; }; struct v2f{ float4 svPos:SV_POSITION; float3 worldNormal:TEXCOORD0; float4 worldVertex:TEXCOORD1; }; v2f vert(a2v v){ v2f f; f.svPos = UnityObjectToClipPos(v.vertex); //剪裁空间顶点信息 = 求乘(矩阵,模型顶点信息) f.worldNormal = UnityObjectToWorldNormal(v.normal); //世界空间法线信息 = UnityObjectToWorldNormal unity模型转世界空间法线(模型法线) f.worldVertex = mul(unity_ObjectToWorld,v.vertex); //世界空间顶点信息 = 求乘(unity_ObjectToWorld,模型顶点信息) return f; } fixed4 frag(v2f f):SV_Target{ fixed3 normalDir = normalize(f.worldNormal); //法线方向 = 单位化(世界空间法线); fixed3 lightDir = normalize(WorldSpaceLightDir(f.worldVertex)); //光照方向 = 单位化(WorldSpaceLightDir世界空间灯光方向(世界顶点信息)); fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * max(dot(normalDir,lightDir),0); //漫反射 = 第一个光照颜色 * 漫反射颜色 * 取大(dot点积(法线方向,光照方向),0) //dot点积的作用是用来运算反射的角度 fixed3 viewDir = normalize(UnityWorldSpaceViewDir(f.worldVertex)); //相机方向 = 单位化(UnityWorldSpaceViewDir unity世界空间视眼方向(世界空间顶点信息)); fixed3 halfDir = normalize(lightDir + viewDir); //半角方向 = 单位化(光照方向 + 视眼方向) fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(max(dot(normalDir,halfDir),0),_Gloss); //高光反射 = 第一个光照颜色 * 高光颜色 * pow(取大(点积(法线方向,半角方向),0保证纯暗部不反射), 高光范围大小) //pow(x,y) x的y次方 由于x小于1,所以y越大,x越小 fixed3 tempColor = diffuse + specular + UNITY_LIGHTMODEL_AMBIENT.rgb; //物色颜色 = 漫反射 + 高光颜色 + 环境光 (UNITY_LIGHTMODE_AMBIENT) return fixed4(tempColor,1); } ENDCG } } Fallback "Diffuse"}
阅读全文
0 0
- Shader 标准贴图代码参考笔记
- Shader 法线贴图参考代码
- Shader 遮罩纹理贴图参考代码笔记
- Shader 渐变纹理贴图参考代码
- Shader标准光照模型 带高光反射代码参考笔记
- Shader 透明度测试参考代码笔记
- XSL标准模式参考代码
- Unity Shader 学习笔记(十二) 创建程序纹理贴图
- shader参考
- 聚光灯+法线贴图 shader
- 聚光灯+法线贴图 shader
- untiy3d 混合贴图shader
- shader 光照贴图
- shader 双面贴图
- unity shader 贴图流动
- Unity Shader学习笔记:标准光照模型
- Python标准库参考笔记-pprint
- Untiy Shader - 纹理贴图滚动
- 深度学习笔记——理论与推导之Structured Learning【Markov Logic Network】(十一)
- linux网络编程-UDP实现文件的传输
- 【转载】Android Studio NDK 开发与调试(生成 .so 文件)
- qduoj water problem(线段树)
- The container 'Maven Dependencies' references non existing library '
- Shader 标准贴图代码参考笔记
- gcc pthread_create()方法使用
- (poj 3667) Hotel(区间更新)
- java8的新特性
- C语言排序算法的演示
- linux 删除文件 磁盘空间未释放
- Laravel设置器修改器
- 使用wordpress创建多站点
- SQL SERVER不能修改表的解决方法(增加字段、修改字段名)