Unity3D Shader官方教程翻译(五)----Shader语法:Pass

Unity ShaderLab 框架全解析4-1 —— Pass(结构、Tag、State Set-up) Unity ShaderLab 框架全解析4 该系列主要是根据Unity官方文档和个人搜集的知识对Unity ShaderLab框架进行总结,比较基础,用于提高知识学习、复习的效率。对于文中给到的文章链接的作者表示感谢 Pass Pass可以说是ShaderLab当中比较重要的组成部分,当中包含着渲染核心——着色器(当然这里以顶点-片段着色器为例,表面着色器虽然没有Pass,但本质上也是顶点-片段... 阅读详情

ShaderLab syntax: Pass

ShaderLab 语法:Pass(通道编程)

The Pass block causes the geometry of an object to be rendered once.

1个Pass块可以使一个几何物体被一次渲染。

Syntax

语法

 

Pass { [Name and Tags] [RenderSetup] [TextureSetup] }

The basic pass command contains an optional list of render setup commands, optionally followed by a list of textures to use.
最基础的pass命令包含有1个可选的渲染设置命令列表,及1个可选的可用纹理列表。

Name and tags

A Pass can define its Name and arbitrary number of Tags - name/value strings that communicate Pass' intent to the rendering engine.

一个Pass 可以定义它的名字和任意数量的标签-name/value 字符串 将Pass的含义告诉给渲染引擎。

Render Setup 渲染设置

A pass sets up various states of the graphics hardware, for example should alpha blending be turned on, should fog be used, and so on. The commands are these:

Pass设置了一系列的显卡状态,比如说alpha混合是否开启,是否允许雾化等等。 这些命令有:

Material { Material Block } 材质

Defines a material to use in a vertex lighting pipeline. See  material page for details.
定义了1个顶点光照管道使用的材质。
 
Lighting On | Off 开启关闭灯光
Turn vertex lighting on or off. See  material page for details.
关闭或开启顶点光照。
 
Cull Back | Front | Off  裁剪背面|前面|关闭
Set polygon culling mode.
设置多边形的裁剪模式。
 
ZTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always)
Set depth testing mode.
设置深度测试模式
 
OpenGL 深度其实就是该象素点在3d世界中距离摄象机的距离,深度缓存中存储着每个象素点(绘制在屏幕上的)的深度值!深度测试决定了是否绘制较远的象素点(或较近的象素点),通常选用较近的,而较远优先能实现透视的效果!!!
基础参考资料: http://www.cx2012.com/Article/ArText129558687429211250ID133.html。
 
ZWrite On | Off
Set depth writing mode.
设置深度写模式类型
 
Fog {  Fog Block  }
Set fog parameters.
设置雾化参数
 
AlphaTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always)  CutoffValue
Turns on alpha testing.
开启Alpha测试
 
Blend  SourceBlendMode DestBlendMode
Sets alpha blending mode.

设置Alpha混合模式

 

Color  Color value
Sets color to use if vertex lighting is turned off.
设置颜色,当顶点光照关闭时候有效。
 
ColorMask RGB | A | 0 | any combination of R, G, B, A
Set color writing mask. Writing  ColorMask 0 turns off rendering to all color channels.
设置颜色遮罩模式。将ColorMask设置为0表示关闭所有渲染的颜色管道。
 
Offset  OffsetFactor  ,  OffsetUnits
Set depth offset. Note that this command intentionally only accepts constants (i.e., not shader parameters) as of Unity 3.0.
设置深度偏移。提示:这个命令仅接受Unity3 3D的常数参数(不是Shader的参数)。
用于为图形设置深度的偏移
这个函数一般用于当两图形刚上处于同坐标或两个面在同一坐标重叠时。可以通过这个函数让其中一个图形或面的坐标自动偏移。

在许多实现方法中为了节省重绘深度图所花费的时间,可以只对场景中的一部分物体进行渲染来生成阴影图。另外,为了解决当前深度值与下一步绘制的表面深度太接近产生的深度冲突问题(Z-fighting),也可能在阴影图渲染过程中对物体的照明深度添加一个偏移。实现这种效果的另外一种可选方法是裁剪掉前面的物体,仅对后面的物体进行渲染生成阴影图。

SeparateSpecular On | Off
Turns separate specular color for vertex lighting on or off. See  material page for details.
关闭或打开顶点照明单独的镜面反射光的颜色。
 
ColorMaterial AmbientAndDiffuse | Emission 环境和漫反射|放射
Uses per-vertex color when computing vertex lighting. See  material page for details.
计算顶点照明时使用的每个顶点颜色
 

Texture Setup 纹理设置

After the render state setup, you can specify a number of textures and their combining modes to apply using SetTexture commands:

当渲染状态设置以后,你可以用SetTexture命令指定这些纹理和他们的结合方式。

 

SetTexture  texture property {  [Combine options] } 设置纹理

The texture setup configures fixed function multitexturing pipeline, and is ignored if custom fragment shaders are used.

纹理设置固定功能的多纹理管线,如果使用定制的片断着色器将被忽略。

 

Details 细节

Per-pixel Lighting 逐像素光照

The per-pixel lighting pipeline works by rendering objects in multiple passes. Unity renders the object once to get ambient and any vertex lights in. Then it renders each pixel light affecting the object in a separate additive pass. See Render Pipeline for details.

逐像素光照管道的工作依赖于渲染对象在多个pass中。Unity3D一旦获得环境光和任何顶点的光照就开始渲染物体。然后,它在一个单独添加的pass中影响渲染的物体每1个光照的像素。

Per-vertex Lighting 逐顶点光照

Per-vertex lighting is the standard Direct3D/OpenGL lighting model that is computed for each vertex. Lighting on turns it on. Lighting is affected by Materialblock, ColorMaterial and SeparateSpecular commands. See material page for details.

逐顶点光照是Direct3d/OpenGl的标准光照模式,它的计算依赖于每一个顶点。打开光照后才能启动逐顶点光照。光照受Materialblock, ColorMaterial 和 SeparateSpecular命令影响。

See Also

There are several special passes available for reusing common functionality or implementing various high-end effects:

有几个特殊的pass可以重用公共的功能或实现一些高级效果。

  • UsePass includes named passes from another shader. 包含从另外的Shader中已被命名的pass
  • GrabPass grabs the contents of the screen into a texture, for use in a later pass.抓取屏幕内容并转换成纹理,可以给之后的pass使用,用来做特效最好了。

Subsections 子模块介绍,慢慢看本站翻译的Shader教程都有。

EtherCAT主站SOEM -- 0 -- 该EtherCAT主站SOEM专栏后续安排 SOEM(Simple Open EtherCAT Master)是一个开源的EtherCAT主站库,允许开发者构建自定义的EtherCAT主站应用程序。EtherCAT是一种实时以太网通信协议,广泛应用于工业自动化和机器控制领域。开源性质:SOEM是一个开源项目,这意味着开发者可以自由地查看、修改和分发代码。这使其成为工业自动化领域的一个强大工具,可以根据具体需求进行定制。EtherCAT主站实现:SOEM库提供了一个完整的EtherCAT主站实现,允许主站与多个EtherCAT从站设备进行通信。 阅读详情

相关推荐

Linux文件操作四剑客

① /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 yyyy-MM-dd / yy-MM-dd 格式。⑥“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮点数。

wuds_158的博客 1612

【Unity Shader 中Pass_CG编译指令相关介绍_第一篇】

着色器函数(本篇不扩展语义和结构体内容。)

暴走约伯的博客 4597

KEPServerEX6教程:IoT Gateway与MQTT Client实现工业数据双向通信

工业物联网的核心挑战在于异构设备协议与云端平台之间的数据互通。Modbus、S7、OPC UA等现场协议纷繁复杂,而上层应用普遍偏好MQTT、REST等轻量接口,此时需要一个可靠的协议转换层。MQTT作为低带宽、高可靠的发布/订阅消息协议,天然适合工业数据采集与远程控制场景。KEPServerEX6作为工业网关软件,内置IoT Gateway与MQTT Client组件,分别承担数据上行发布与指令下行订阅的职责,形成完整的双向闭环。通过配置Modbus TCP设备驱动、创建Tag、设置MQTT Broker

weixin_33787529的博客 391

【Unity Shader 中Pass_顶点着色器输出和片段着色器输入常用的语义相关介绍_第二篇】

在顶点和片段着色器的输入和输出参数后被冒号:隔开的就是**语义**,语义所代表的是需要传递的数据。

暴走约伯的博客 3205

Linux CentOS 8系统离线升级内核版本

CentOS 8操作系统离线场景下升级内核版本

WQwinter的博客 3237

11.11华为OD机试真题 新系统 - 管线同类区段归并 (Java/Py/C/C++/Js/Go)

11.11华为OD机试真题 新系统 - 管线同类区段归并 (Java/Py/C/C++/Js/Go)

算法大师! 122

UnityShader:选择Pass渲染通道

上一篇博客讲了MRT多重渲染,这篇接着学习通过一个shader输出不同效果的另一种方法——指定不同的渲染通道。渲染通道在unity Shader中就是SubShader中的Pass。之前的shader中都只有一个Pass,也就是单通道渲染,这样的话如果要对同一个RenderTexture在不同的时刻进行不同的渲染效果输出就需要不停的更换shader。当然,也可以使用多重渲染,但是如果一次只用一个效果

键盘春秋的博客 1万+

Keil uVision5 STM32 startup_stm32f10x_md_vl.s error A3906U Malformed via file target not created..

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 2784

Unity3D Shader官方教程翻译(十二)----Shader语法:Pass的标记

ShaderLab syntax: Pass Tags Passes use tags to tell how and when they expect to be rendered to the rendering engine. pass使用标记来告诉渲染引擎在什么时候该如何渲染他们所期望的效果。 Syntax Tags { "TagName1" = "Value1" "T

u010216987的专栏 383

“华为杯”研究生数学建模竞赛2020年-【华为杯】D题:无人机集群协同对抗(附获奖论文和MATLAB代码实现)

1.问题重述摘 要:本文针对非线性约束条件下红蓝双方无人机集群协同对抗的最优规划问题,结合贪婪队形、非线性规划、内点法、蒙特卡洛方法和全联立正交配置有限元法,构建了无人机集群协同对抗推演模型。,构建了。我们综合考虑了,和。首先分析红方在集群约束下的贪婪队形和拦截策略,然后我们基于内点法联合MATLAB和AMPL编程求解蓝方突防的非线性规划解,最后基于蒙特卡洛法对整个蓝方突防过程进行推演,得到突防概率图。通过推演,我们提出了两块的区域作为所求区域,并对蓝方的最优突防策略进行分析。

getusushu的博客 1553

第0章 《机器人工程师带你入门SLAM》专栏所有文章目录汇总(截止目前115篇文章),方便大家查看阅读

《机器人工程师带你入门SLAM》专栏文章汇总:优快云热销专栏已更新100+篇优质内容,涵盖SLAM技术全栈知识体系。文章分为三大类:1)基础工具与环境配置,包括Ubuntu、Git等必备技能;2)C++编程从入门到进阶,详解变量、类、模板等核心概念;3)SLAM核心库实战,深入解析ROS、Eigen、PCL等关键库的应用。专栏提供从计算机基础到项目实战的系统学习路径,并附代码实例。点击专栏主页可订阅查看全部内容,后续将保持更新。

行知SLAM 1072

Unity3D Shader官方教程翻译(十五)----Shader语法 UsePass

ShaderLab syntax: UsePass The UsePass command uses named passes from another shader. UsePass命令可以调用在另外1个Shader中已经被命名的passes 。 Syntax 语法 UsePass "Shader/Name" Inserts all passes

苗伟业的专栏 526

基于GPUMD的NEP机器学习势函数—二氧化硅融化

势函数作为分子动力学模拟中最终要的输入之一,其准确性很大程度上决定了模拟结果的可靠性,传统经验势无法很好地描述所有现象,而能进行准确预测的基于第一性原理计算的分子动力学计算量非常大,无法进行大体系长时间的计算。因此最近兴起的机器学习势函数正是解决这一问题的有效工具,它可以通过对第一性原理的计算结果进行学习,通过这个方法得到的势函数具有接近第一性原理的计算精度。这里介绍一种基于GPUMD的NEP机器学习方法。

Rockyoung 5322

Unity3D Shader官方教程翻译(三)

Unity3D Shader官方教程翻译(三) 1、Shader语法:Pass 1个Pass块可以使一个几何物体被一次渲染。 Pass { [Name and Tags] [RenderSetup] [TextureSetup] } 最基础的pass命令包含有1个可选的渲染设置命令列表,及1个可选的可用纹理列表。 Name and tags 一个Pass 可以

胡胜同学 2162

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Unity3D Shader官方教程翻译(一)

Unity3D Shader官方教程翻译 Shader Reference 着色参考 Shaders in Unity can be written in one of three different ways: Unity3D着色器,可以写在三种不同的方式之一: assurface shaders, asvertex and fragm

roadProgram的专栏 918

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Unity3D Shader官方教程翻译(十三)----Shader语法:Pass的Name

ShaderLab syntax: Name Syntax 语法 Name "PassName" Gives the PassName name to the current pass. 将当前Pass命名为 PassName Details 详情 A pass can be given a name so that a UsePass command can referenc

3G-肖阳 1887
上一篇: Unity3D Shader官方教程翻译(四)----Shader语法:SubShader
下一篇: Unity3D Shader官方教程翻译(六)----Shader语法:Pass的Color, Material, Lighting
coding_most
博客等级 码龄15年 13粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值