untiy 3d ShaderLab_第7章_ Forward渲染路径_4_Forward渲染路径总结

Forward渲染路径总结

现在可以总结一卜适应于Forward渲染路径的ForwardBaseForwardAdd的情况。

7.4.1   Forward渲染路径下材质的适应性

这两类Pass不能在Camera为VertexLit时被演染,但可以被渲染路径为ForwardDeferred的Camera渲染。

7.4.2  Unity如何为Forward渲染路径设置光源

在ForwardBase的Pass内,_WorldSpaceLightPos0和_LightColor0只会含有第一个Pixel行光的有效组合。在没有Pixel平行光时,_WorIdSapceLightPos0也可能含有1个Pixel点光源的位置数据,但是并没有有效的_LightColor0数据。在ForwardAdd内,_WorldSpaceLightPos0和_LightColor0只会含有Pixel光源,而且按照强度大小,平行光优先的顺序依次对每一个Pixe!光源执行一次。

在ForwardBase内,当没有ForwardAdd Pass时,unity_4LightPos[X, Y, Z]0 和 unity_LightColor[4]的组合含有点光源的数据,按照Pixel强度的原则排序,但不包含平行光;当有ForwardAdd时,则ForwardBase内unity_4LightPos[X,  Y,  Z]0只含有Vertex点光源。在ForwardAdd内,unity_4LightPos[X,  Y,  Z]0不包含有效数据。unity_LightAtten0数据则用在1.0和0.0之间切换,表示对应的unity_4LightPos[X,
 Y, Z]0是否是有效的光源数据。

unity_LightPosition[4]在ForwardBase和ForwardAdd内从不包含任何有效数据,奇怪的是其x分量总是为1.0,只有在从Camera的VertexLit模式切换回Forward和Deferred模式时才会包含一些未及时清除的死数据。

讲了这么多,其实对于Forward渲染路径,你可以简单地使用UnityCG.cginc中的Shade4PointLights函数在ForwardBase中计算Vertex光源的照明。对于Pixel光源,你必须使用_WorldSpaceLightPos0和_LightColor0来计算。

时间: 2024-10-10 18:24:45

untiy 3d ShaderLab_第7章_ Forward渲染路径_4_Forward渲染路径总结的相关文章

untiy 3d ShaderLab_第7章_ Forward渲染路径_1_ForwardBase和ForwardAdd

第7章 Forward渲染路径 本章的主要目的是让大家在不使用Unity的Surface Shader时,也能够正确地存取Unity的光源数据,从而定制自己的Forward渲染路径的Shader.如果读者没有这个需求,或者己经了解了Unity是如何为Forward渲染路径存放光源数据的,那么就可以跳过本章. 7.1ForwardBase和ForwardAdd ForwardBase和ForwardAdd是专门为在Forward渲染路径下渲染物体而设计的两种Pass,其中ForwardBase会先

untiy 3d ShaderLab_第7章_ Forward渲染路径_2_Forward渲染路径下的重要光源

第7章 Forward渲染路径 本章的主要目的是让大家在不使用Unity的Surface Shader时,也能够正确地存取Unity的光源数据,从而定制自己的Forward渲染路径的Shader.如果读者没有这个需求,或者己经了解了Unity是如何为Forward渲染路径存放光源数据的,那么就可以跳过本章. 7.2Forward渲染路径下的重要光源 7.2.1 设计检测用的材质 其编辑器截图如图所示, _WorldSpaceLightPosO.x.shader文件,其主要代码如下: Shader

untiy 3d ShaderLab_第7章_ Forward渲染路径_3_重要光源在ForwardAdd内的执行

7.3重要光源在ForwardAdd内的执行 此外我们知道,根据Unity在关于Forward RenderingPath的官方帮助文档的陈述,除了第一个Pixel平行光之外,每个其他Pixel光源都会在个单独的ForwardAdd Pass内被执行,也就是说场景中的Pixel光源数为n,则ForwardAdd Pass会被执行n-1次.下面就来验证每一个其他Pixel光源是在ForwardAdd Pass内被执行的. 7.3.1设计用来检测Pixel光源的材质 Lab_1c文件夹下的场景,其编

untiy 3d ShaderLab_第8章_3_ 单光贴图和Forward 渲染路径

8.3 单光贴图和Forward 渲染路径 8.3.1单光照贴图在VertexLit和Forward下面的不同表现 在单光照贴图的情况下,Camera的RenderingPath为VertexLit时,有一个不理想的地方就是被烘焙过的静态物体,默认的材质不会受到实时光照的影响.当然,可以通过提供自定义的材质改变这一行为,但是很麻烦.在RenderingPath为Forward时,这种麻烦就不会存在了,经过烘焙物体,Unity的默认材质会继续受到实时Pixel光源的影响. 8.3.2 准备可应用于

untiy 3d ShaderLab_第6章_VertexLit渲染路径_4_顶点照明和Unity存放光源的第三种方式

6.4顶点照明和Unity存放光源的第三种方式 6.4.1   Unity为Vertex Pass准备的光源 是不是绝望了?世界没有光明怎么能行呢?当然不行,光明马上就来,Unity把它放到了unity_LightPosition[4]数组中. 可以简单地告诉你一个结果:在LightMode = Vertex的Pass内,unity_LightPosition[4]和unity_LightColor[4]是存取光源数据最可靠的第一首选手段,无论在Camera的RenderingPath为何,Ve

ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉Windows的基本操作 · 接触过地理信息系统的概念 · 理解地理数据的特点 1.2 预期效果 我们期望用户在阅读完本指南后对以下知识有一定的了解: · 了解ArcGIS for Desktop的组成与功能 · 熟悉使用ArcGIS for Desktop进行数据编辑.整饰和输出的流程 · 如何使用

ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析 1.1 GIS分析基础 GIS的六大功能是数据获取.存储.查询.分析.表达.输出.在前面的内容里已经介绍了使用ArcGIS进行数据获取.存储.查询.表达和输出的过程,本章将介绍如何在ArcGIS中进行地理分析.分析是GIS的核心和灵魂,是GIS区别于一般的信息系统.CAD或者电子地图系统的主要标志之一. GIS分析,就是研究

ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区 1 用ArcMap制作地图 作为ArcGIS for Desktop的组成部分之一,ArcMap用于数据的浏览.编辑.显示.查询.地图排版等.ArcMap和ArcCatalog一起构成了完整的数据处理与管理分析的功能.在前一章中已经介绍了ArcCatalog的使用,本章中将介绍ArcMap的使用.本章的例子依然使用第4章里的小区平面图示例,但是将从原理的角度做更加

ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一个全面的了解,接下来在本章中,将通过一个案例来熟悉ArcGIS for Desktop的使用,从解决问题的过程中,逐渐适应ArcGIS桌面的界面和操作方式. 本章的练习数据是一个住宅小区的简单平面示意图,需要在已有的基础上把楼房的轮廓补充完整,并加以整饰,完成一幅地图. 1.1 打开地图文档并浏览