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

网站建设 收费明细深圳做网站公

网站建设 收费明细,深圳做网站公,网站鼠标特效代码,wordpress怎么改电子邮箱一、相关知识介绍 1、光照分析 2、最终实现效果 二、完整光照效果实现 1、环境部分 (1)漫反射部分 通过分离模型上、下、侧三个面,并选择合适的颜色进行模拟 (i)上、下、侧三面环境颜色模拟效果 (2&am…

一、相关知识介绍

1、光照分析

在这里插入图片描述

2、最终实现效果

在这里插入图片描述

二、完整光照效果实现

1、环境部分

(1)漫反射部分

通过分离模型上、下、侧三个面,并选择合适的颜色进行模拟

(i)上、下、侧三面环境颜色模拟效果

在这里插入图片描述

(2)遮挡阴影

上、下、侧三面环境颜色模拟+AO遮罩模拟环境阴影效果
在这里插入图片描述

(3)完整实现代码

Shader "AP01/L07/3ColAmbient" {Properties {_Occlusion  ("环境遮挡图", 2d)      = "white" {}_EnvUpCol   ("朝上环境色", color)   = (1.0, 1.0, 1.0, 1.0)_EnvSideCol ("侧面环境色", color)   = (0.5, 0.5, 0.5, 1.0)_EnvDownCol ("朝下环境色", color)   = (0.0, 0.0, 0.0, 1.0)}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 float3 _EnvUpCol;uniform float3 _EnvSideCol;uniform float3 _EnvDownCol;uniform sampler2D _Occlusion;// 输入结构struct VertexInput {float4 vertex : POSITION;   // 将模型顶点信息输入进来float4 normal : NORMAL;     // 将模型法线信息输入进来float2 uv0 : TEXCOORD0;     // 将模型UV信息输入进来 0通道 共4通道};// 输出结构struct VertexOutput {float4 pos : SV_POSITION;   // 由模型顶点信息换算而来的顶点屏幕位置float3 nDirWS : TEXCOORD0;  // 由模型法线信息换算来的世界空间法线信息float2 uv : TEXCOORD1;      // 追加UV信息用语像素Shader采样贴图};// 输入结构>>>顶点Shader>>>输出结构VertexOutput vert (VertexInput v) {VertexOutput o = (VertexOutput)0;               // 新建一个输出结构o.pos = UnityObjectToClipPos( v.vertex );       // 变换顶点信息 并将其塞给输出结构o.nDirWS = UnityObjectToWorldNormal(v.normal);  // 变换法线信息 并将其塞给输出结构o.uv = v.uv0;                                   // 图森破return o;                                       // 将输出结构 输出}// 输出结构>>>像素float4 frag(VertexOutput i) : COLOR {// 准备向量float3 nDir = i.nDirWS;                         // 获取nDir// 计算各部位遮罩float upMask = max(0.0, nDir.g);                // 获取朝上部分遮罩float downMask = max(0.0, -nDir.g);             // 获取朝下部分遮罩float sideMask = 1.0 - upMask - downMask;       // 获取侧面部分遮罩// 混合环境色float3 envCol = _EnvUpCol * upMask + _EnvSideCol * sideMask + _EnvDownCol * downMask;// 采样Occlusion贴图float occlusion = tex2D(_Occlusion, i.uv);// 计算环境光照float3 envLighting = envCol * occlusion;// 返回最终颜色return float4(envLighting, 1.0);}ENDCG}}FallBack "Diffuse"
}

2、光源部分

(1)漫反射

使用Lambert模型

(2)镜面反射

使用Phong模型

(3)遮挡阴影

使用Unity中内置的投影方法

(i)遮挡投影效果

在这里插入图片描述

(ii)实现代码
Shader "AP01/L07/Shadow" {Properties {}SubShader {Tags {"RenderType"="Opaque"}Pass {Name "FORWARD"Tags {"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"#include "AutoLight.cginc"      // 使用Unity投影必须包含这两个库文件#include "Lighting.cginc"       // 同上#pragma multi_compile_fwdbase_fullshadows#pragma target 3.0// 输入结构struct VertexInput {float4 vertex : POSITION;   // 将模型的顶点信息输入进来};// 输出结构struct VertexOutput {float4 pos : SV_POSITION;   // 由模型顶点信息换算而来的顶点屏幕位置LIGHTING_COORDS(0,1)        // 投影用坐标信息 Unity已封装 不用管细节};// 输入结构>>>顶点Shader>>>输出结构VertexOutput vert (VertexInput v) {VertexOutput o = (VertexOutput)0;           // 新建一个输出结构o.pos = UnityObjectToClipPos( v.vertex );   // 变换顶点信息 并将其塞给输出结构TRANSFER_VERTEX_TO_FRAGMENT(o)              // Unity封装 不用管细节return o;                                   // 将输出结构 输出}// 输出结构>>>像素float4 frag(VertexOutput i) : COLOR {float shadow = LIGHT_ATTENUATION(i);        // 同样Unity封装好的函数 可取出投影return float4(shadow, shadow, shadow, 1.0);}ENDCG}}FallBack "Diffuse"
}

3、完整光照

(1)效果

在这里插入图片描述

(2)实现代码

Shader "AP01/L08/OldSchoolPlus" {Properties {_BaseCol    ("基本色",      Color)          = (0.5, 0.5, 0.5, 1.0)_LightCol   ("光颜色",      Color)          = (1.0, 1.0, 1.0, 1.0)_SpecPow    ("高光次幂",    Range(1, 90))   = 30_Occlusion  ("AO图",        2D)             = "white" {}_EnvInt     ("环境光强度",  Range(0, 1))    = 0.2_EnvUpCol   ("环境天顶颜色", Color)          = (1.0, 1.0, 1.0, 1.0)_EnvSideCol ("环境水平颜色", Color)          = (0.5, 0.5, 0.5, 1.0)_EnvDownCol ("环境地表颜色", Color)          = (0.0, 0.0, 0.0, 0.0)}SubShader {Tags {"RenderType"="Opaque"}Pass {Name "FORWARD"Tags {"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"// 追加投影相关包含文件#include "AutoLight.cginc"#include "Lighting.cginc"#pragma multi_compile_fwdbase_fullshadows#pragma target 3.0// 输入参数uniform float3 _BaseCol;uniform float3 _LightCol;uniform float _SpecPow;uniform sampler2D _Occlusion;uniform float _EnvInt;uniform float3 _EnvUpCol;uniform float3 _EnvSideCol;uniform float3 _EnvDownCol;// 输入结构struct VertexInput {float4 vertex   : POSITION;   // 顶点信息 Get✔float4 normal   : NORMAL;     // 法线信息 Get✔float2 uv0      : TEXCOORD0;  // UV信息 Get✔};// 输出结构struct VertexOutput {float4 pos    : SV_POSITION;  // 裁剪空间(暂理解为屏幕空间吧)顶点位置float2 uv0      : TEXCOORD0;    // UV0float4 posWS    : TEXCOORD1;    // 世界空间顶点位置float3 nDirWS   : TEXCOORD2;    // 世界空间法线方向LIGHTING_COORDS(3,4)            // 投影相关};// 输入结构>>>顶点Shader>>>输出结构VertexOutput vert (VertexInput v) {VertexOutput o = (VertexOutput)0;                   // 新建输出结构o.pos = UnityObjectToClipPos( v.vertex );       // 变换顶点位置 OS>CSo.uv0 = v.uv0;                                  // 传递UVo.posWS = mul(unity_ObjectToWorld, v.vertex);   // 变换顶点位置 OS>WSo.nDirWS = UnityObjectToWorldNormal(v.normal);  // 变换法线方向 OS>WSTRANSFER_VERTEX_TO_FRAGMENT(o)                  // 投影相关return o;                                           // 返回输出结构}// 输出结构>>>像素float4 frag(VertexOutput i) : COLOR {// 准备向量float3 nDir = normalize(i.nDirWS);float3 lDir = _WorldSpaceLightPos0.xyz;float3 vDir = normalize(_WorldSpaceCameraPos.xyz - i.posWS.xyz);float3 rDir = reflect(-lDir, nDir);// 准备点积结果float ndotl = dot(nDir, lDir);float vdotr = dot(vDir, rDir);// 光照模型(直接光照部分)float shadow = LIGHT_ATTENUATION(i);        // 获取投影float lambert = max(0.0, ndotl);float phong = pow(max(0.0, vdotr), _SpecPow);float3 dirLighting = (_BaseCol * lambert + phong) * _LightCol * shadow;// 光照模型(环境光照部分)float upMask = max(0.0, nDir.g);                // 获取朝上部分遮罩float downMask = max(0.0, -nDir.g);             // 获取朝下部分遮罩float sideMask = 1.0 - upMask - downMask;       // 获取侧面部分遮罩// 混合环境色float3 envCol = _EnvUpCol * upMask + _EnvSideCol * sideMask + _EnvDownCol * downMask;float occlusion = tex2D(_Occlusion, i.uv0);         // 采样Occlusion贴图float3 envLighting = envCol * _EnvInt * occlusion;  // 计算环境光照// 返回结果float3 finalRGB = dirLighting + envLighting;return float4(finalRGB, 1.0);}ENDCG}}FallBack "Diffuse"
}

三、综合实践

待完善

http://www.yayakq.cn/news/293026/

相关文章:

  • 做招聘网站怎么赚钱营销型网站建设 ppt
  • 做网站软件dw该网站未在腾讯云备案
  • 自己做网站要买域名吗网站开发技术人员保密协议
  • 网站开发工程师岗位wordpress绝对链接转相对
  • 网站建设预算和流程介绍大连网站制作开发
  • 做制作网站找啥工作WordPress开发微信支付
  • ps素材免费下载素材库搜索引擎营销优化策略有哪些
  • 信阳网站建设的费用可以发广告的平台
  • 简洁个人博客网站模板做电子外贸网站建设
  • 做交易网站存在什么风险泉州专业网站建设费用
  • 如何查询网站已经提交备案政务网站建设经验做法
  • 网站开发工具与环境深圳集团网站建设专业公司
  • cms 官方网站成都哪家公司做网站好
  • ui素材网站网站搭建逻辑结构图
  • 一个人可以做多少网站赣州专业网站推广多少钱
  • 抓取网站后台密码汕头seo外包机构
  • 电脑搭建网站需要空间东莞市专业的网页设计制作报价
  • 租赁网站空间更换怎么做小程序官方示例
  • 电子商务网站建设新手html代码大全表格
  • 网站主页设计费用上海建设房屋网站
  • 潍坊点睛做网站怎么样甘肃网站建设推广服务
  • 大方做网站网站关键词做多了是不是影响权重
  • 搭建好网站生情好域名后怎么做wordpress无刷新评论
  • 抚州网站seo内网网站建设改版方案
  • 全免费建立自己的网站个人简历表格可填写
  • 丰县建设网站手游推广渠道和推广方式
  • windows8 网站建站命令尚义住房和城乡规划建设局网站
  • 做网站能用自己电脑吗wordpress的编辑器插件
  • 义乌市网站制作怎么线上卖东西
  • 最专业微网站首选公司黄冈黄页88网黄冈房产估价