光照漫反射(平行光)
来源:互联网 发布:淘宝达人怎么发表状态 编辑:程序博客网 时间:2024/04/30 11:26
Shader "Custom/test1" { SubShader { pass { Tags{"LightMode"="ForwardBase"} CGPROGRAM #pragma vertex vert #pragma fragment frag #include "unitycg.cginc" #include "lighting.cginc" struct v2f{ float4 pos:POSITION; fixed4 col:COLOR; }; v2f vert(appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP,v.vertex); //点积两个向量必须处于同一坐标系空间 //取法线与光照向量点积 //顶点法线v.normal //光源向量_WorldSpaceLightPos0 //光源颜色_LightColor0 include对应的头文件 //最后取值在0-1之间 float3 N = normalize(v.normal); //光照向量转模型 也可以使用顶点模型转世界 float3 L = normalize(_WorldSpaceLightPos0); //这种解决方式会导致物体非等比缩放导致显示错误 //L = mul(_World2Object,float4(L,0)).xyz; //可以使用_World2Object的逆矩阵的转置矩阵相乘 L = mul(float4(L,0),_Object2World).xyz; float ndot =saturate(dot(L,N)); //光照颜色与环境光颜色相加 获得接近真实的颜色 o.col = _LightColor0*ndot+UNITY_LIGHTMODEL_AMBIENT; return o; } fixed4 frag(v2f IN):COLOR { //光照计算放在片段程序中,交接顶点会变得比较平滑 return IN.col; } ENDCG } }}
1.对顶点进行合适的MVP转换
2.向量点积所在的坐标系需要统一
3. 光照计算最好是在片段着色器中
Shader "Custom/test1" { SubShader { pass { Tags{"LightMode"="ForwardBase"} CGPROGRAM #pragma vertex vert #pragma fragment frag #include "unitycg.cginc" #include "lighting.cginc" struct v2f{ float4 pos:POSITION; fixed4 col:COLOR; float3 n:NORMAL; }; v2f vert(appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP,v.vertex); o.n = v.normal; return o; } fixed4 frag(v2f IN):COLOR { //光照计算放在片段程序中,交接顶点会变得比较平滑 //点积两个向量必须处于同一坐标系空间 //取法线与光照向量点积 //顶点法线v.normal //光源向量_WorldSpaceLightPos0 //光源颜色_LightColor0 include对应的头文件 //最后取值在0-1之间 float3 N = normalize(IN.n); //光照向量转模型 也可以使用顶点模型转世界 float3 L = normalize(_WorldSpaceLightPos0); //这种解决方式会导致物体非等比缩放导致显示错误 //L = mul(_World2Object,float4(L,0)).xyz; //可以使用_World2Object的逆矩阵的转置矩阵相乘 L = mul(float4(L,0),_Object2World).xyz; float ndot =saturate(dot(L,N)); //光照颜色与环境光颜色相加 获得接近真实的颜色 IN.col = _LightColor0*ndot+UNITY_LIGHTMODEL_AMBIENT; return IN.col; } ENDCG } }}
0 0
- 光照漫反射(平行光)
- 31 WebGL平行光下的漫反射光的计算
- 漫反射光照
- 《unityshader 入门精要》漫反射光照与高光反射光照模型学习笔记
- Q75:光照模型汇总:环境光、平行光光源、点光源、面积光源
- 第六章:漫反射光照
- 漫反射光照模型
- 漫反射-逐顶点光照
- DirectX11 漫反射光
- DirectX11 平行光
- HLSL实现漫反射光照模型
- Lambert漫反射光照模型归纳
- HLSL实现漫反射光照模型
- 基本光照模型实现-漫反射
- opengl 教程(18) 漫反射光
- Diffuse Lighting(漫反射光)
- irrlicht中设置平行光
- WebGL 平行光和环境光
- ASP.NET中Dictionary如何转换为list
- dbms_metadata包中的get_ddl函数
- Android开发环境搭建(Windows+Eclipse)
- 发送POST请求数据包&解决发过去的中文在后台显示乱码"????"
- Android Studio:Gradle project refresh failed. Connection timed out: connect.
- 光照漫反射(平行光)
- MAC系统显示隐藏文件
- BFS与DFS
- Python的网页下载器:urllib2.urlopen
- 【问题跟踪】KryoException: java.io.IOException: No space left on device
- js当前时间加减一天,和格式化时间格式
- sizeof与strlen的区别:面试回答
- 镜面高光
- django进阶14 自定义manager