平行光

float4: _WorldSpaceLightPos0
  • _WorldSpaceLightPos0 .w 为0,这是一个平行光,_WorldSpaceLightPos0 .xyz是这个平行光在世界中的位置
  • _WorldSpaceLightPos0 .w 不为0,这是一个点光源,_WorldSpaceLightPos0 .xyz是这个点光源在世界中的位置
  • 几乎所有情况下,都应该以第一种情况为准,即_WorldSpaceLightPos0 存储的是平行光的位置,至于第二种情况是什么时候发生,博主也没有弄清楚,有想过是不是场景中只存在点光源的时候,指向的就是点光源,但是实验之后并不是这样,有同学知道的话可以留言告诉博主,万分感谢,
float4: _LightColor
  • 对应_WorldSpaceLightPos0 指向的光源颜色

点光源

float4: unity_4LightPosX0、unity_4LightPosY0、unity_4LightPosZ0
  • unity_4LightPosX0记录了场景中4个点光源的x轴坐标
  • unity_4LightPosY0记录了场景中4个点光源的y轴坐标
  • unity_4LightPosZ0记录了场景中4个点光源的z轴坐标
  • 这三个四元数记录了场景中4个点光源的xyz轴坐标
float4[4] : unity_LightColor[4]
  • 这是一个含有4个float4元素的数组
  • 指代了场景中四个点光源的颜色
float4 : unity_4LightAtten
  • 变量的四个值,分别指向场景中4个点光源的衰减系数

平行光的计算

  • 平行光的计算其实没什么好说的,基本都有定义好的函数求一个光照方向,然后按照定义的光照模型去求这个光照对模型的颜色值加成。熟悉一点光照模型的应该都了解。

点光源的计算

点光源的计算是比较复杂的,受到影响也会很多,但是unity中也内置了一个函数帮我们去求点光源在模型上的颜色取值

  • 求出顶点世界位置:worldPos
  • 求出顶点世界法线:worldNormal
  • 内置函数Shade4PointLights 使用过程如下
float3 point_color = Shade4PointLights(unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0,//点光源的位置unity_LightColor[0], unity_LightColor[1], unity_LightColor[2],   unity_LightColor[3],//点光源的颜色unity_4LightAtten0,//点光源的衰减worldPos, worldNormal);

毫无疑问,点光源的计算是及其复杂的,工程中只能说能不用就尽量不用。但是自己学习的时候,确实可以使用点光源做一些很有意思的效果。

UnityShader-平行光和点光源的基础介绍和使用相关推荐

  1. OpenGL(十二) 光源类型 平行光 、 点光源 、 聚光灯 的实现

    常规的 光源类型 有三种.最简单的自然是平行光.稍复杂些的为点光源,最复杂的为聚光灯.总体说来,在可编程管线中原理是一样的.在OpenGL代码中传入必要的参数,在shader中进行相关的计算绘制出效果 ...

  2. 大白话版 UnityShader学习(1)-基础纹理研究(一)

    大白话版 UnityShader学习(1)-基础纹理研究(一) 根据冯乐乐大小姐的书来进行学习,总结学习经验,分享心得. 基础纹理 针对于纹理,说白了就是,"啪"的一声,你的妈妈在 ...

  3. day23:shell基础介绍 alias及重定向

    2019独角兽企业重金招聘Python工程师标准>>> 1.shell基础介绍: shell是一个命令解释器,用于用户与机器的交互: 也支持特定的语法(逻辑判断,循环): 每个用户都 ...

  4. Android NDK开发之 NEON基础介绍

    原文:http://blog.csdn.net/app_12062011/article/details/50434259 Android NDK开发之 NEON基础介绍 这是官方介绍: http:/ ...

  5. python介绍和用途-Python基础介绍(一)

    Python基础介绍(一) 1. python是什么编程语言 编译型与解释型 ​编译器吧源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以极其语言来运行此程序,速度很快 ...

  6. STL体系结构与内核分析-2-STL体系结构基础介绍(侯捷)--笔记

    STL体系结构与内核分析(侯捷) 2.STL体系结构基础介绍 STL设计方式与OO(面向对象)不同的地方,OO鼓励数据和处理数据的方法都放在类里,而STL的数据在容器里,操作数据的方法在其他部件里(模 ...

  7. ai一个线段多个箭头_初学设计却分不清PS和AI?超详细的AI基础介绍包你一看即会!...

    以前提到AI,第一个想到的就是人工智能.自从扎进设计的神坑,再提到AI,我可只认软件了~ 包括小ke在内的很多设计小伙伴在最开始入行的时候都认为,只要学好PS就可以稳打设计圈了~毕竟那么多公号一提到设 ...

  8. 深度学习与计算机视觉系列(1)_基础介绍

    转载自: 深度学习与计算机视觉系列(1)_基础介绍 - 龙心尘 - 博客频道 - CSDN.NET http://blog.csdn.net/longxinchen_ml/article/detail ...

  9. 【学习笔记】Tableau基础介绍

    Tableau基础介绍 [简介] Tableau是一家提供商业智能的软件公司,正式成立于2004年,总部位于美国华盛顿西雅图. 源自美国国防部的一个项目需求,在斯坦福博士克里斯·斯图尔特和Pixar创 ...

  10. python最基本的规则是什么_Python基础介绍(一)

    Python基础介绍(一) 1. python是什么编程语言 编译型与解释型 ​编译器吧源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以极其语言来运行此程序,速度很快 ...

最新文章

  1. 美通信与动力公司向WIN-T军事通信计划提供支持
  2. 大盘点|基于RGB图像下的机器人抓取
  3. 洛谷 P1219 八皇后
  4. Outlook通过RPC或RPC over HTTPS访问Exchane邮箱:Exchange2003系列之四
  5. 模型学习 - VAE(变分自编码)专题
  6. 转:Android中如何修改系统时间(应用程序获得系统权限)
  7. python数据分析准备_使用Python进行数据分析I 环境准备
  8. 思科配置计算机ip地址子网掩码,计算机系统与网络技术IP地址 子网掩码 主机号等计算复习...
  9. nuxt2中使用less
  10. 鲜为人知的4个Python功能,用对了事半功倍
  11. 【资料】翘首期盼247天!《阿里巴巴Java开发手册》扫描插件详情介绍
  12. VB 一行代码的诀窍
  13. filazilla搭建ftp_使用Filezilla搭建FTP服务器
  14. python function if yield_成为Python大牛必须要掌握的高端语法——yield!
  15. 错误 C2280 Union : 尝试引用已删除的函数 以及 警告 C4624 “Grade”: 已将析构函数隐式定义为“已删除”的一种解决方法...
  16. js 设置cookie和获取cookie
  17. java cjson_使用cJSON
  18. 【雷达通信】雷达一维恒虚警检测CFARmatlab 含GUI
  19. 项目管理学习流程图-ITTO-PMP
  20. 智能眼镜革命:从功能机到智能机,转折点临近

热门文章

  1. 推荐几个下载英文原版电子书的网站-PDF
  2. 13级计算机商务沟通与礼仪结课论文,商务沟通论文
  3. MOV格式视频转MP4
  4. QQ音乐的歌曲真实地址解析
  5. ART中 MIR -- LIR -- 机器码 的流程
  6. DIV+CSS排版技巧
  7. 用java求两个数的最大公因数_Java求两个数的最大公约数及最小公倍数、求多个数的最大公约数及最小公倍数...
  8. 国际足联还不考虑在中国办一届世界杯吗?
  9. linux wine编译安装目录,wine32和wine64共存编译安装方法
  10. java 无法显示打印页面_使用打印机打印网页时出现的脚本错误的办法