Shader自学笔记 3.3.1 采样渐变纹理应用于BlinnPhong光照模型
来源:互联网 发布:天龙八部好看发色数据 编辑:程序博客网 时间:2024/06/08 01:59
Shader "Custom/texture/test1" {// 定义纹理属性 Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Main Tex", 2D) = "white" {} _Specular("Specular",Color)=(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 _MainTex;// 纹理缩放平移属性 float4 _MainTex_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=mul(UNITY_MATRIX_MVP,v.vertex); o.worldNormal=UnityObjectToWorldNormal(v.normal); o.worldPos=mul(unity_ObjectToWorld,v.vertex).xyz;// _MainTex_ST xy为缩放,zw为偏移 o.uv=v.texcoord.xy*_MainTex_ST.xy+_MainTex_ST.zw;// 也可以直接用内建函数// o.uv=TRANSFORM_TEX(v.texcoord,_MainTex); return o; } fixed4 frag(v2f i):SV_Target{ fixed3 worldNormal=normalize(i.worldNormal); fixed3 worldLightDir=normalize(UnityWorldSpaceLightDir(i.worldPos));// 使用纹理采样漫反射颜色 fixed halfLambert=0.5*dot(worldNormal,worldLightDir)+0.5; fixed3 diffuseColor=tex2D(_MainTex,fixed2(halfLambert,halfLambert)).rgb*_Color.rgb; fixed3 ambient=UNITY_LIGHTMODEL_AMBIENT.xyz;// fixed3 diffuse=_LightColor0.rgb*diffuseColor;// fixed3 albedo=tex2D(_MainTex,i.uv).rgb*_Color.rgb;// fixed3 ambient=UNITY_LIGHTMODEL_AMBIENT.xyz*albedo;// fixed3 diffuse=_LightColor0.rgb*albedo*max(0,dot(worldNormal,worldLightDir)); fixed3 viewDir=normalize(UnityWorldSpaceViewDir(i.worldPos)); fixed3 halfDir=normalize(worldLightDir+viewDir);// BlinnPhon光照模型 fixed3 specular=_LightColor0.rgb*_Specular.rgb*pow(max(0,dot(worldNormal,halfDir)),_Gloss); return fixed4(ambient+diffuseColor+specular,1.0); } ENDCG } } FallBack "Specular"}
0 0
- Shader自学笔记 3.3.1 采样渐变纹理应用于BlinnPhong光照模型
- Shader自学笔记 3.1.1 采样纹理加入到光照模型中
- Shader自学笔记 2.2.3 BlinnPhong光照模型
- Shader自学笔记 3.3.2 采样遮罩纹理 使高光部分更加柔和
- Shader自学笔记 2.1.3 半兰伯特光照模型实现
- Shader自学笔记 2.1.1 逐顶点漫反射光照模型实现
- Shader自学笔记 2.2.1 逐顶点高光反射光照模型
- Unity3d中BlinnPhong光照模型
- Unity3D Shader(10)——Fragment Shader(漫反射、phong效果、blinnPhong效果、阴影、halfLambert、渐变纹理)
- Unity Shader学习笔记:渐变纹理
- 渐变纹理模拟光照
- Shader自学笔记 2.1.2 逐像素漫反射光照模型实现
- Shader自学笔记 2.2.2 逐像素高光反射光照模型
- Unity3d中BlinnPhong光照模型注解
- Unity3d中BlinnPhong光照模型注解
- Unity3d中BlinnPhong光照模型注解
- Unity Shader学习笔记:标准光照模型
- Cg入门22:Fragment shader - 2D纹理采样(光照贴图制作和使用)
- Spring(AbstractRoutingDataSource)实现动态数据源切换
- iOS开发 GET、POST请求方法:NSURLSession篇
- RecyclerView彩虹瀑布流实现
- mysql 递归函数写法
- 51nod-1099 任务执行顺序
- Shader自学笔记 3.3.1 采样渐变纹理应用于BlinnPhong光照模型
- nohup
- JAVA 中 Redis与ehcache对比与使用
- 回溯法 求一个子集问题:装载问题、最大团问题
- shiro的简介
- SICP 2.38 研究递归和迭代模型
- SDOI
- ehcache详细解读
- android 加密算法与安全