UnityShader初级篇——实现逐像素漫反射光照模型
来源:互联网 发布:淘宝发论文被骗 编辑:程序博客网 时间:2024/05/22 03:27
1.UnityShader初级篇——实现逐像素漫反射光照模型
// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'Shader "Unity Shaders Book/Chapter 6/Diffuse Pixel-Level"{Properties{ //定义属性,控制材质的漫反射颜色_Diffuse ("Diffuse", Color)=(1,1,1,1)}SubShader{Pass{ //指明该Pass的光照模式 Tags{"LightMode"="ForwardBase"} CGPROGRAM//告诉Unity我们定义的定点着色器和片远着色器的名字#pragma vertex vert#pragma fragment frag// 包含引用内置文件#include "Lighting.cginc"//引用属性,定义一个与该属性类型相匹配的变量fixed4 _Diffuse;//定义顶点着色器的输入和输出结构体struct a2v{float4 vertex : POSITION;float3 normal : NORMAL;//存储模型法线信息};struct v2f{float4 pos : SV_POSITION;float3 worldNormal : TEXCOORD0;};//在顶点着色器中只需将模法线传递给片元着色器v2f vert (a2v v){v2f o;//将顶点坐标从模型坐标转换为裁剪坐标o.pos = UnityObjectToClipPos(v.vertex);//将模型法线转换到世界坐标,并传递给片元着色器o.worldNormal = mul(v.normal,(float3x3)_World2Object);return o;}//在片元着色器中计算漫反射光照模型fixed4 frag (v2f i) : SV_Target{ //获取环境光 fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz; //获取世界空间下的法线并归一化 fixed3 worldNormal = normalize(i.worldNormal); //获取世界空间下的光照方向 fixed3 worldLightDir = normalize(_WorldSpaceLightPos0.xyz); //计算漫反射光照模型 fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * saturate(dot(worldNormal, worldLightDir)); fixed3 color = ambient + diffuse; return fixed4(color,1.0);}ENDCG}}Fallback "Diffuse"}
逐像素漫反射光照比逐顶点漫反射光照的效果更加平滑。
阅读全文
0 0
- UnityShader初级篇——实现逐像素漫反射光照模型
- UnityShader初级篇——实现逐顶点漫反射光照模型
- UnityShader初级篇——实现逐像素高光反射光照模型
- UnityShader初级篇——实现逐顶点高光反射光照模型
- UnityShader初级篇——使用半兰伯特光照模型
- UnityShader初级篇——BlinnPhong光照模型
- UnityShader从入门到放弃(五)漫反射—逐片元光照
- Shader自学笔记 2.1.2 逐像素漫反射光照模型实现
- UnityShader从入门到放弃(四)漫反射—逐顶点光照
- unity shader漫反射中逐像素的光照模型
- UnityShader入门精要学习笔记(五):Unity中实现漫反射光照模型
- 【DirectX11】第八篇 光照模型——漫反射
- HLSL实现漫反射光照模型
- HLSL实现漫反射光照模型
- 基本光照模型实现-漫反射
- 漫反射-逐像素光照(半兰伯特)
- 【UnityShader入门精要】Unityshader中的漫反射(逐像素漫反射diffuse)
- 《unityshader 入门精要》漫反射光照与高光反射光照模型学习笔记
- 第五周——项目二—建立链栈算法库
- apache 负载均衡
- 初学Spring有没有适合的书?
- css实现背景透明文字不透明
- redise数据结构之之字符串和链表
- UnityShader初级篇——实现逐像素漫反射光照模型
- 【转】gcc for Windows 开发环境介绍
- (四)ElasticSearch索引创建
- 数据结构之vector&list
- iOS UI事件传递与响应者链
- ROS--urdf在rviz之中的显示(补充)
- built-in function 错误的解决
- 初学python遇到的问题大全
- MacOS连接树莓派3(Raspberry Pi 3)