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

北京市残疾人网上服务平台引擎优化

北京市残疾人网上服务平台,引擎优化,交做网贷的网站,工作室logo设计三、Lesson3 1、关键名称 向量 • nDir:法线方向,点乘操作时简称n; • lDir:光照方向,点乘操作时简称l; • vDir:观察方向,点乘操作时简称v; • rDir:光反…

三、Lesson3

1、关键名称

向量
• nDir:法线方向,点乘操作时简称n; 
• lDir:光照方向,点乘操作时简称l;
• vDir:观察方向,点乘操作时简称v;
• rDir:光反射方向,点乘操作时简称r;
• hDir:半角方向(Halfway),lDir和vDir的中间角方向,点乘操作时简称h
空间
• OS:ObjectSpace 物体空间,本地空间;
• WS:WorldSpace世界空间;
• VS:ViewSpace 观察空间;
• CS:HomogenousClipSpace 齐次剪裁空间;
• TS:TangentSpace 切线空间;
• TXS:TextureSpace 纹理空间;

2、漫反射与镜面反射

(1)漫反射

特点:向四面八方均匀反射,反射亮度与观察者看的方向无关
主要模型:兰伯特、半兰伯特
涉及向量:nDir、lDir

(2)镜面反射

特点:反射具有明显方向性,观察者的视角决定了反射光线的有无、明暗
主要模型:Phong、Blinn-Phong
涉及向量:nDir、lDir、vDir、rDir、hDir

3、Phong

(1)效果展示

在这里插入图片描述

(2)计算方式

Phong=rDir(光反射方向) dot vDir(观察方向)
rDir=Reflect(-lDir,nDir)

(3)实现代码

Shader "AP01/Phong" {Properties {_MainCol ("颜色", color) = (1.0, 1.0, 1.0, 1.0)_SpecularPow ("高光次幂", range(1, 90)) = 30}SubShader {Tags {"RenderType"="Opaque"}Pass {Name "FORWARD"Tags {"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"#pragma multi_compile_fwdbase_fullshadows#pragma target 3.0// 输入参数// 修饰字(满足小朋友太多的问好, 想保发量的大家看热闹)// uniform  共享于vert,frag// attibute 仅用于vert// varying  用于vert,frag传数据uniform float3 _MainCol;     // RGB够了 float3uniform float _SpecularPow;  // 标量 float// 输入结构struct VertexInput {float4 vertex : POSITION;   // 顶点信息 Get✔float4 normal : NORMAL;     // 法线信息 Get✔};// 输出结构struct VertexOutput {float4 posCS : SV_POSITION;     // 裁剪空间(暂理解为屏幕空间吧)顶点位置float4 posWS : TEXCOORD0;       // 世界空间顶点位置float3 nDirWS : TEXCOORD1;      // 世界空间法线方向};// 输入结构>>>顶点Shader>>>输出结构VertexOutput vert (VertexInput v) {VertexOutput o = (VertexOutput)0;                   // 新建输出结构o.posCS = UnityObjectToClipPos( v.vertex );     // 变换顶点位置 OS>CSo.posWS = mul(unity_ObjectToWorld, v.vertex);   // 变换顶点位置 OS>WSo.nDirWS = UnityObjectToWorldNormal(v.normal);  // 变换法线方向 OS>WSreturn o;                                           // 返回输出结构}// 输出结构>>>像素float4 frag(VertexOutput i) : COLOR {// 准备向量float3 nDir = normalize(i.nDirWS);float3 lDir = _WorldSpaceLightPos0.xyz;float3 vDir = normalize(_WorldSpaceCameraPos.xyz - i.posWS.xyz);float3 hDir = normalize(vDir + lDir);// 准备点积结果float ndotl = dot(nDir, lDir);float ndoth = dot(nDir, hDir);// 光照模型float lambert = max(0.0, ndotl);float phong = dot(reflect(-lDir,nDir),vDir);// 返回结果return phong ;}ENDCG}}FallBack "Diffuse"
}

4、Blinn-Phong

(1)效果展示

在这里插入图片描述

(2)计算方式

Blinn-Phong=nDir dot hDir
hDir:lDir和vDir的中间角方向

(3)实现代码

Shader "AP01/BlinnPhong" {Properties {_MainCol ("颜色", color) = (1.0, 1.0, 1.0, 1.0)_SpecularPow ("高光次幂", range(1, 90)) = 30}SubShader {Tags {"RenderType"="Opaque"}Pass {Name "FORWARD"Tags {"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"#pragma multi_compile_fwdbase_fullshadows#pragma target 3.0// 输入参数// 修饰字(满足小朋友太多的问好, 想保发量的大家看热闹)// uniform  共享于vert,frag// attibute 仅用于vert// varying  用于vert,frag传数据uniform float3 _MainCol;     // RGB够了 float3uniform float _SpecularPow;  // 标量 float// 输入结构struct VertexInput {float4 vertex : POSITION;   // 顶点信息 Get✔float4 normal : NORMAL;     // 法线信息 Get✔};// 输出结构struct VertexOutput {float4 posCS : SV_POSITION;     // 裁剪空间(暂理解为屏幕空间吧)顶点位置float4 posWS : TEXCOORD0;       // 世界空间顶点位置float3 nDirWS : TEXCOORD1;      // 世界空间法线方向};// 输入结构>>>顶点Shader>>>输出结构VertexOutput vert (VertexInput v) {VertexOutput o = (VertexOutput)0;                   // 新建输出结构o.posCS = UnityObjectToClipPos( v.vertex );     // 变换顶点位置 OS>CSo.posWS = mul(unity_ObjectToWorld, v.vertex);   // 变换顶点位置 OS>WSo.nDirWS = UnityObjectToWorldNormal(v.normal);  // 变换法线方向 OS>WSreturn o;                                           // 返回输出结构}// 输出结构>>>像素float4 frag(VertexOutput i) : COLOR {// 准备向量float3 nDir = normalize(i.nDirWS);float3 lDir = _WorldSpaceLightPos0.xyz;float3 vDir = normalize(_WorldSpaceCameraPos.xyz - i.posWS.xyz);float3 hDir = normalize(vDir + lDir);// 准备点积结果float ndotl = dot(nDir, lDir);float ndoth = dot(nDir, hDir);// 光照模型float lambert = max(0.0, ndotl);float phong = dot(reflect(-lDir,nDir),vDir);float blinnPhong = pow(max(0.0, ndoth), _SpecularPow);// 返回结果return blinnPhong;}ENDCG}}FallBack "Diffuse"
}

5、实践

(1)漫反射+镜面反射+固有色

(i)效果

在这里插入图片描述

(ii)实现代码
Shader "AP01/OldSchool" {Properties {_MainCol ("颜色", color) = (1.0, 1.0, 1.0, 1.0)_SpecularPow ("高光次幂", range(1, 90)) = 30}SubShader {Tags {"RenderType"="Opaque"}Pass {Name "FORWARD"Tags {"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"#pragma multi_compile_fwdbase_fullshadows#pragma target 3.0// 输入参数// 修饰字(满足小朋友太多的问好, 想保发量的大家看热闹)// uniform  共享于vert,frag// attibute 仅用于vert// varying  用于vert,frag传数据uniform float3 _MainCol;     // RGB够了 float3uniform float _SpecularPow;  // 标量 float// 输入结构struct VertexInput {float4 vertex : POSITION;   // 顶点信息 Get✔float4 normal : NORMAL;     // 法线信息 Get✔};// 输出结构struct VertexOutput {float4 posCS : SV_POSITION;     // 裁剪空间(暂理解为屏幕空间吧)顶点位置float4 posWS : TEXCOORD0;       // 世界空间顶点位置float3 nDirWS : TEXCOORD1;      // 世界空间法线方向};// 输入结构>>>顶点Shader>>>输出结构VertexOutput vert (VertexInput v) {VertexOutput o = (VertexOutput)0;                   // 新建输出结构o.posCS = UnityObjectToClipPos( v.vertex );     // 变换顶点位置 OS>CSo.posWS = mul(unity_ObjectToWorld, v.vertex);   // 变换顶点位置 OS>WSo.nDirWS = UnityObjectToWorldNormal(v.normal);  // 变换法线方向 OS>WSreturn o;                                           // 返回输出结构}// 输出结构>>>像素float4 frag(VertexOutput i) : COLOR {// 准备向量float3 nDir = normalize(i.nDirWS);float3 lDir = _WorldSpaceLightPos0.xyz;float3 vDir = normalize(_WorldSpaceCameraPos.xyz - i.posWS.xyz);float3 hDir = normalize(vDir + lDir);// 准备点积结果float ndotl = dot(nDir, lDir);float ndoth = dot(nDir, hDir);// 光照模型float lambert = max(0.0, ndotl);float phong = dot(reflect(-lDir,nDir),vDir);float blinnPhong = pow(max(0.0, ndoth), _SpecularPow);float3 finalRGB = _MainCol * lambert + blinnPhong;// 返回结果return float4(finalRGB, 1.0);}ENDCG}}FallBack "Diffuse"
}

(2)结合噪声图,实现类似不锈钢效果

(i)效果

在这里插入图片描述

(ii)实现方式

在这里插入图片描述

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

相关文章:

  • 如何做钓鱼网站做好网络推广
  • 烟台网站建设公司报价网站seo具体怎么做
  • 手机购物网站建设珠海seo排名收费
  • 做电商排名网站镇江百度推广
  • 阿里巴巴网站备案公司搭建网站
  • 网站建设方案word网站cms
  • 代理做网站合适吗营销型网站建设团队
  • 一个公司可以做两个网站推广吗哪里有seo排名优化
  • 四川网站建设设计公司哪家好焦作关键词优化排名
  • 株洲做网站多少钱合肥推广外包公司
  • 网上在线做家教网站夸克搜索引擎入口
  • 怎样做水族馆网站信息流广告投放平台
  • 六安网站开发seo优化设计
  • 网站备案信息真实性核验单 个人谷歌seo外链平台
  • 西安学校网站建设哪家好服务营销案例100例
  • 网站开发毕业实训总结淘宝摄影培训推荐
  • 做网站第一北京自动网络营销推广
  • 网站建设风险分析全网推广成功再收费
  • wordpress文章访问量网站排名优化公司
  • 陕西营销型网站建设百度网页版链接地址
  • 单品网站怎么建设新浪nba最新消息
  • 外挂网站怎么做网站优化的主要内容
  • 招标网平台野狼seo团队
  • wordpress b2c 建站网络营销外包推广价格
  • 移动端网站怎么做的有品质的网站推广公司
  • 12345汽车网址大全seo门户网站建设方案
  • 太原网站开发哪家好成都seo的方法
  • 自己做网站自己做SEO无锡网站服务公司
  • 做网站app 需要多少钱国际新闻头条今日要闻
  • 中国海员建设工会全国委员会网站seo专员是什么职位