博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity3d Shader开发(三)Pass(Pass Tags,Name,BindChannels )
阅读量:4598 次
发布时间:2019-06-09

本文共 2255 字,大约阅读时间需要 7 分钟。

 

Pass Tags

通过使用tags来告诉渲染引擎在什么时候该如何渲染他们所期望的效果。

Syntax 语法

Tags {
 "TagName1" = "Value1" "TagName2" = "Value2}
指定TagName1 的值为 Value1 ,TagName2 的值为 Value2 你可以指定很多你喜欢的标签

Details 细节

标签基本上是键-值对的形式。 内部的Pass 标签用来控制光照管道(环境光照,顶点关照和像素光照)中pass 的任务和一些其它选项。注意以下的标签必须在pass段内部,而不是在SubShader中被识别。

LightMode tag 光照模式标签

LightMode 标签定义了光照观点中的pass的任务。查阅render pipeline了解更多细节。这些标签很少手动使用。常用的shader 需要与光照进行互动的Shader写成表面着色器 然后在去关联那些细节

LightMode 的可选值:

  • Always
    总是渲染。没有光照应用。
  • ForwardBase
    用于正向渲染,环境主要方向灯和定点光/SH 等的应用
  • ForwardAdd
    用于正向渲染,附加的像素光被应用,每个光照一个pass
  • PrepassBase
    用于延迟光照,渲染法线/镜面指数。lor function)。
  • PrepassFinal
    用于延迟光照,通过结合纹理,光照和自发光渲染最终颜色
  • Vertex
    用于顶点光照渲染,当物体没有光照映射时,所有顶点光照被应用
  • VertexLMRGBM
    用于顶点光照渲染,当物体有光照映射的时候使用顶点光照渲染。在平台上光照映射是RGBM 编码
  • VertexLM
    用于顶点光照渲染,当物体有光照映射的时候使用顶点光照渲染。在平台上光照映射是double-LDR 编码(移动平台,及老式台式CPU)
  • ShadowCaster
    将物体当做阴影产生者来渲染
  • ShadowCollector
    为了正向渲染对象的路径,将对象的阴影收集到屏幕空间缓冲区中。

 

Name

Syntax 语法

Name "PassName"
为当前通道命名 PassName

Details 细节

一个通道能被赋予一个名字以便 命令能索引到它。

 

BindChannels

BindChannels命令 允许你指定顶点数据如何映射到显卡中。

可编程顶点着色器使用时,BindChannels将没有效果。在这种情况下,绑定受顶点着色器输入控制。

默认情况下,Unity3D 会为你计算并绑定,但在某些情况下,你要使用自定义绑定。

例如:你可以在第1个纹理处理阶段映射主UV 然后在第2个纹理处理阶段使用次要UV。或者告诉硬件需要考虑顶点颜色

Syntax 语法

BindChannels {
 Bind "source", target }
例如:指定顶点数据源映射到目标硬件。

Source 可以是下面其中一个

  • Vertex: vertex position 顶点:顶点的位置
  • Normal: vertex normal 法线:顶点的法线
  • Tangent: vertex tangent 切线:顶点的切线
  • Texcoord: primary UV coordinate 主要的UV坐标
  • Texcoord1: secondary UV coordinate 次要的UV坐标
  • Color: per-vertex color 颜色:每个顶点颜色

Target can be one of: Target可以是下面其中的一个:

  • Vertex: vertex position 顶点:顶点的位置
  • Normal: vertex normal 法线:顶点的法线
  • Tangent: vertex tangent 切线:顶点的切线
  • Texcoord0Texcoord1, ...: texture coordinates for corresponding texture stage 各个纹理处理阶段的纹理坐标
  • Texcoord: texture coordinates for all texture stages 所有纹理处理阶段的纹理坐标
  • Color: vertex color 颜色:顶点颜色

Details 细节

Unity在源和目标的映射上加了一些限制。源和目标必须匹配顶点,法线,切线和颜色。从网格中获取的纹理坐标(Texcoord和Texcoord1)可以映射到纹理坐标的目标(所有纹理处理阶段可以使用Texcoord ,或者在一个特定阶段使用TexcoordN )。

这里有2个典型的情况可以使用BindChannels。

    • 需要考虑顶点颜色的着色器。
    • 使用两个UV组的着色器。

 

// Maps the first UV set to the first texture stage//在纹理处理第1阶段映射第1个UV// and the second UV set to the second texture stage//在纹理处理第2阶段映射第2个UVBindChannels {   Bind "Vertex", vertex   Bind "texcoord", texcoord0   Bind "texcoord1", texcoord1}

 

 

 

 

 

 

转载于:https://www.cnblogs.com/martianzone/p/3346133.html

你可能感兴趣的文章
GIT
查看>>
关于OPENSSL的EVP函数的使用
查看>>
记录:学习中遇到的错误
查看>>
部署Node.js项目(CentOS)
查看>>
linux设备模型之spi子系统
查看>>
编程题
查看>>
不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况...
查看>>
tf Dataset API
查看>>
js中按钮控制显示隐藏以及下拉功能
查看>>
Intent
查看>>
波涛 - 证券期货投资计算机化技术分析原理(2013年3月19日)
查看>>
sqlserver存储过程中sql语句连接及datetime字段的处理
查看>>
JavaScript 测试和捕捉
查看>>
高级软件工程第二次作业——个人项目实战:数独
查看>>
Kafka主要配置
查看>>
PHP开发经验总结
查看>>
Leetcode 400. Nth digits
查看>>
pycharm 中 ‘unicodeescape’ codec can’t decode bytes in position XXX: trun错误解决方案背景描述...
查看>>
三次握手 四次回收流程图
查看>>
第四次实验作业
查看>>