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

《Unity Shader》 6.4.2 逐像素光照

(1)使用6.4.1节中使用的场景。

(2)新建一个材质。在本书资源中,该材质名为DiffusePixelLevelMat。

(3)新建一个Unity Shader。在本书资源中,该Shader名为Chapter6-DiffusePixelLevel。把新的Shader赋给第2步中创建的材质。

我知道为什么没有区别了,因为创建的就是标准光照模型。

(4)把第2步中创建的材质赋给胶囊体。

Chapter6-DiffusePixelLevel的代码和6.4.1小节中的非常相似,因此我们首先把6.4.1节中的代码直接粘贴到Chapter6-DiffusePixelLevel中,并进行如下修改。

(1)修改顶点着色器的输出结构体v2f:

(2)顶点着色器不需要计算光照模型,只需要把世界空间下的法线传递给片元着色器即可:

(3)片元着色器需要计算漫反射光照模型:


Shader "Custom/Chapter6-DiffuseFixelLevel"
{Properties{_Diffuse  ("Diffuse",  Color)  =  (1,  1,  1,  1)}SubShader{Tags {"LightMode"="ForwardBase"}Pass {CGPROGRAM#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;//  Transform  the  vertex  from  object  space  to  projection  spaceo.pos  =  UnityObjectToClipPos(v.vertex);// Transform  the  normal  from  object  space  to  world  spaceo.worldNormal  =  mul(v.normal,  (float3x3)unity_WorldToObject); //用的左乘,使用顶点变换矩阵的逆转置矩阵对法线进行相同的变换 //normalize 向量单位化,使其长度为1return  o;}fixed4  frag(v2f  i)  :  SV_Target  {//  Get  ambient  termfixed3  ambient  =  UNITY_LIGHTMODEL_AMBIENT.xyz;//  Get  the  normal  in  world  spacefixed3  worldNormal  =  normalize(i.worldNormal);//  Get  the  light  direction  in  world  spacefixed3  worldLightDir  =  normalize(_WorldSpaceLightPos0.xyz);//  Compute  diffuse  termfixed3   diffuse   =   _LightColor0.rgb * _Diffuse.rgb * saturate(dot(worldNormal, worldLightDir));fixed3 color  =  ambient  +  diffuse;return  fixed4(color,  1.0);}ENDCG}}Fallback  "Diffuse"
}

http://www.dtcms.com/a/619536.html

相关文章:

  • 北京公司网站制作衡水 网站开发
  • 东莞做网站首选企业铭缙云县城乡建设局网站
  • 41 当前用户购物车数据
  • 公司网站建设需要什么网站开发过程文档
  • wordpress调用昵称静态网站怎么做优化
  • php网站开发建设网站云优化
  • 快排做网站排名爬取漫画数据做网站
  • 黄页游戏引流推广网站昆明建设招聘信息网站
  • 网站建设投诉去哪里投诉专业做家居的网站
  • 免费祝福网页在线制作网站在线优化工具
  • 【题解】P2324 [SCOI2005] 骑士精神 [IDA*]
  • 杭州自助建站网站网站变灰代码 所有浏览器
  • 中国建设银行官网站积分抽奖网站浮窗制作
  • 网站建设四网合一app开发与网站开发的区别
  • Leetcode 55
  • 网站上百度要怎么做的营销网名大全
  • 网站建设 淘宝运营公司网站怎么做啊
  • 研发网站要多久小男生和大人做的网站
  • Python数据分析 -- Pandas基础入门学习笔记:从核心概念到实操代码
  • 怎么在淘宝上做网站wordpress 文章 形式
  • Deap、Seed和Seed4心电数据集详细介绍(附下载链接)
  • 网站LOGO透明底色PNG格式怎么做的wordpress建图片站
  • 工业互联网中的AI与大数据:推动智能化决策的力量
  • 网站为什么百度不收录信誉好的顺德网站建设
  • 西安有哪些网站建设外包公司长沙装修公司电话
  • 一个网站的设计思路wordpress主题侧边栏
  • wordpress站群版丹东市市政建设总公司
  • 【核心完整复现】【DRCC】考虑N-1准则的分布鲁棒机会约束低碳经济调度
  • 推动门户网站建设不断优化升级wordpress wcps
  • Wooldridge《多Agent系统引论》:知识体系全景