Unity 的渲染管线

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

着色器定义了两点对象自身的外观其材质属性对象对光照的反应。由于光照计算必须内置在着色器中并且有很多可能的光源和阴影类型因此编写“好用”的高质量着色器将是一项复杂的任务。为了简化这一任务Unity 提供了表面着色器在表面着色器中所有光照、阴影、光照贴图、前向渲染和延迟渲染任务均自动完成。

本文档将介绍 Unity 的光照和渲染管线的特质以及表面着色器的内部原理。

渲染路径

如何应用光照以及使用着色器的哪些通道取决于使用的渲染路径。着色器中的每个通道均通过通道标签来表达其光照类型。

• 在前向渲染中将使用 ForwardBase 和 ForwardAdd 通道。

• 在延迟着色中将使用 Deferred 通道。

• 在旧版延迟光照中将使用 PrepassBase 和 PrepassFinal 通道。

• 在旧版顶点光照中将使用 Vertex、VertexLMRGBM 和 VertexLM 通道。

• 在上述任何情况中要渲染阴影或深度纹理都将使用 ShadowCaster 通道。

前向渲染路径

ForwardBase 通道可一次性渲染环境光、光照贴图、主方向光和不重要的顶点/SH光源。ForwardAdd 通道用于任何附加的每像素光源针对此类光源照亮的每个对象进行一次调用。请参阅前向渲染以了解详细信息。

如果使用前向渲染但着色器没有适合前向渲染的通道即ForwardBase 和 ForwardAdd 通道类型均不存在则会按照在顶点光照通道中的方式来渲染该对象请参阅下文。

延迟着色路径

Deferred 通道将渲染光照需要的所有信息在内置着色器中漫射颜色、镜面反射颜色、平滑度、 世界空间法线、发光。它还在发光通道中增加光照贴图、反射探针和环境光照。有关详细信息请参阅延迟着色。

旧版延迟光照路径

PrepassBase 通道将渲染法线和镜面反射指数PrepassFinal 通道将通过组合纹理、光照和发光材质属性来渲染最终颜色。所有常规的场景内光照都在屏幕空间中单独完成。有关详细信息请参阅延迟光照。

旧版顶点光照渲染路径

由于顶点光照最常用于不支持可编程着色器的平台因此 Unity 无法在内部创建多个着色器变体来处理光照贴图与非光照贴图的情况。所以要处理光照贴图对象和非光照贴图对象必须显式编写多个通道。

• Vertex 通道用于非光照贴图对象。所有光源均通过固定函数 OpenGL/Direct3D 光照模型 (Blinn-Phong) 立即渲染

• VertexLMRGBM 通道在光照贴图为 RGBM 编码PC 和游戏主机时用于光照贴图对象。情况下不会应用实时光照通道应该将纹理与光照贴图组合。

• VertexLMM 通道在光照贴图为双 LDR 编码移动平台时用于光照贴图对象。情况下不会应用实时光照通道应该将纹理与光照贴图组合。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6