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

重庆高端网站建设/中文域名交易网站

重庆高端网站建设,中文域名交易网站,怎样学做网络推广,打电话沟通做网站话术三、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.whsansanxincailiao.cn/news/30333108.html

相关文章:

  • 武汉网站建设模板如何制作/南京网站seo
  • 小网站大全/上海关键词排名推广
  • 多用户商城系统是什么/seo视频教学网站
  • 仿站酷网站模板/搜索引擎优化技术有哪些
  • 131美女做爰网站/邮件营销
  • 建设什么网站/广西网络推广公司
  • 自己怎么做wap网站/培训加盟
  • google 网站营销/株洲网页设计
  • 三里屯网站建设公司/优化模型有哪些
  • 做网站必须会编程吗/渠道销售怎么找客户
  • 建设网站 安全事项/北京公司排名seo
  • 做的网站怎么发网上/国际军事新闻最新消息今天
  • 商务网站建设中存在的问题/汕头seo排名
  • 网站如何做/百度建站平台官网
  • 打渔网站建设/抖音广告推广怎么收费
  • 做销售网站/百度客户端手机版
  • 无锡市政府网站建设/百度 营销推广怎么做
  • 宜昌建网站/杭州网站优化
  • 青岛网站建设-中国互联/seopeixun com cn
  • 衡水哪儿做网站便宜/谷歌推广培训
  • 个人建站做什么网站比较赚钱/如何免费发布广告
  • 网站上地图是怎样做的/济南网站制作
  • wordpress全站301/seo 什么意思
  • 网站设计的汕头公司/软文广告是什么意思
  • 自适应网站怎么做m站/长沙优化排名
  • 网站免费建设/windows优化大师兑换码
  • 网站建设应用/搜索引擎优化实训报告
  • html5 房地产网站案例/厦门人才网官网登录
  • 珠海建站/营销网站建设服务
  • 个体户做网站去哪里做/seo排名优化的方法