当前位置: 首页 > wzjs >正文

医院网站建设的目的2345网址导航智能主板

医院网站建设的目的,2345网址导航智能主板,疫情最新数据情况,网站运营外包公司Unity Shader的学习笔记 第八天 开始Unity Shader的学习之Blinn-Phong光照模型 文章目录 Unity Shader的学习笔记前言一、Blinn-Phong光照模型①计算高光反射部分效果展示 二、召唤神龙:使用Unity内置的函数总结 前言 今天我们编写另一种高光反射的实现方法 – Blinn光照模型…

Unity Shader的学习笔记

第八天 开始Unity Shader的学习之Blinn-Phong光照模型


文章目录

  • Unity Shader的学习笔记
  • 前言
  • 一、Blinn-Phong光照模型
      • ①计算高光反射部分
      • 效果展示
  • 二、召唤神龙:使用Unity内置的函数
  • 总结


前言

今天我们编写另一种高光反射的实现方法 – Blinn光照模型.同时了解一些Unity的内置函数.


提示:以下是本篇文章正文内容,下面案例可供参考

一、Blinn-Phong光照模型

Blinn模型没有使用反射方向,而是引入了新的矢量h,它是通过对视角方向v和光照方向l相加后在归一化得到的.公式如下:
Blinn模型的h变量计算方法
Blinn模型计算高光反射的公式如下:
Blinn高光反射的公式
代码如下:

Shader "Unity Shaders Book/Chapter 6/Blinn Phong"{Properties{_Diffuse ("Diffuse", Color) = (1, 1, 1, 1)_Specular ("Specular", Color) = (1, 1, 1, 1)//_Gloss用于控制高光反射属性_Gloss ("Gloss", Range(8.0, 256)) = 20}SubShader{Pass{Tags {"LightMode" = "ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "Lighting.cginc"fixed4 _Diffuse;fixed4 _Specular;float _Gloss;struct a2v{float4 vertex : POSITION;float3 normal : NORMAL;};struct v2f{float4 pos : SV_POSITION;float3 worldNormal : TEXCOORD0;float3 worldPos : TEXCOORD1;};v2f vert(a2v v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);//o.worldNormal = mul(v.normal, (float3x3)unity_WorldToObject);  下面的代码和上面的是一个作用o.worldNormal = UnityObjectToWorldNormal(v.normal);o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;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 worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldPos));fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * saturate(dot(worldNormal, worldLightDir));fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - i.worldPos.xyz);fixed3 halfDir = normalize(viewDir + worldLightDir);fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(saturate(dot(i.worldNormal, halfDir)), _Gloss);return fixed4(ambient + diffuse + specular, 1.0);}ENDCG}}Fallback "Specular"
}

①计算高光反射部分

首先我们还是计算出视角方向,然后再对视角方向和光照方向相加之后再归一化得到的,最后再计算高光部分即可.

效果展示

Blinn-Phong模型演示
可以从效果图看出来,Blinn-Phong光照模型的高光反射部分看起来更大,更亮一点,在实际渲染中,绝大多数我们都会选择Blinn-Phong光照模型,但是这两种光照模型都是经验模型,换句话说,我们不应该认为Bliin_phong模型是对"正确的"Phong模型的近似,实际上,Blinn-Phong模型更符合实验结果.

二、召唤神龙:使用Unity内置的函数

我们在之前的Shader代码中,很多东西都是我们手动计算的,例如视角方向,光源方向等(虽然我们使用的_WorldSpaceLightPos0.xyz得到的光源方向只适合平行光,如果有更复杂的光源信息,这种方法就是错误的了),但是手动计算的过程比较麻烦,Unity提供一些内置函数来帮助我们计算这些信息.

函数名描述
float3 WorldSpaceViewDir(float4 v)输入一个模型空间中的顶点位置,返回世界空间中从该点到摄像机的观察方向,内部实现使用了UnityWorldSpaceViewDir函数
float3 UnityWorldSpaceViewDir(float4 v)输入一个世界空间中的顶点位置,返回世界空间中从该点到摄像机的观察方向
float3 ObjectSpaceViewDir(float4 v)输入一个模型空间中的顶点位置,返回模型空间中从该点到摄像机的观察方向
float3 WorldSpaceLightDir (float4 v)仅可用于前向渲染中,输入一个模型空间中的顶点位置,返回世界空间中从该点到光源的光照方向,内部使用了UnityWorldSpaceLightDir 函数,没有被归一化
UnityWorldSpaceLightDir (float4 v)仅可用于前向渲染中,输入一个世界空间中的顶点位置,返回世界空间中从该点到光源的光照方向,没有被归一化
float3 ObjSpaceLightDir(float4 v)仅可用于前向渲染中,输入一个模型空间中的顶点位置,返回模型空间中从该点到光源的光照方向,没有被归一化
float3 UnityObjectToWorldNormal(float3 norm)把法线方向从模型空间转换到世界空间中
float3 UnityObjectToWorldDir(float3 dir)把方向矢量从模型空间变换到世界空间中
float3 UnityWorldToObjectDir(float3 dir)把方向矢量从世界空间变换到模型空间中

类似于UnityXXXX的几个函数都是Unity5中新添加的内置函数,这些帮助函数使得我们不需要跟各种变换矩阵,内置变量打交道,也不需要考虑使用了哪种光源这种问题,而仅仅调用一个函数就可以得到需要的信息.
上面的9个帮助函数中,我们已经掌握了五个器内部实现,都在我们之前的代码中找到,但是需要注意的是,这些函数没有保证得到的方向矢量都是单位矢量,因此我们使用之前都需要将他们归一化.


总结

今天的内容就这么多,我们也可以进行一些尝试,将之前的计算使用这些函数代替一下.

http://www.dtcms.com/wzjs/306613.html

相关文章:

  • 深圳建设网站公司除了百度指数还有哪些指数
  • 怎样建立自己网站视频惠州网站建设方案推广
  • 阳江网站建设推广app开发工具
  • 嘉祥网站建设怎么做市场营销和推广
  • 网站虚拟主机里的内容强制删除免费制作链接
  • 旅游酒店网站建设背景分析四川seo哪里有
  • 乌鲁木齐网官网上海seo培训
  • me域名的网站百度广告投放技巧
  • 怎么给网站做跳转google app
  • 石家庄网站制作武汉品牌公关具体要做些什么
  • 江门建设造价信息网站整站快速排名
  • 学设计的网站太原高级seo主管
  • 创意网站建设设计南京seo外包
  • 做微商去哪个网站推广浏览器网站进入口
  • 网站开发系统设计seo外链建设方法
  • 招聘网页模板谷歌seo服务公司
  • 有哪些可以接单做任务的网站qq群推广引流免费网站
  • 用php 如何做网站目前搜索引擎排名
  • 贵阳花果园r区网站建设seo优化方式包括
  • 华人博学网站建设价格百seo排名优化
  • 做网站的毕业答辩ppt实例西安网络推广seo0515
  • ps做网站首页效果特效网站关键词优化软件
  • 钟表玻璃东莞网站建设网站设计公司模板
  • 怎么做和美团一样的网站seo专家是什么意思
  • Python电影网站开发seo是哪里
  • 惠州建设银行行号查询网站18款禁用软件黄app免费
  • 如何申请域名做网站知乎google移动服务应用优化
  • 做ppt模仿网站淘宝指数查询
  • 普通电脑怎么做网站服务器吗口碑营销是什么
  • 网络设计课程中对网页设计的报告搜索引擎外部优化有哪些渠道