设置单个着色器通路的着色器属性可能是着色器创建过程中最复杂的步骤,因为所有着色器状态属性都在此显示。 要编辑单个着色器通路的着色器属性,在着色器列表中左键单击该着色器。 着色器属性面板会显示所有着色器属性,按状态分组,例如混合就是一组:
Description(描述): 对该着色器通路的描述。 被引擎忽略。
TargetPlatform(目标平台): 定义该着色器编译位元码的目标平台。
CompileFlags(编译标记):[DX9、DX10、DX11、Xbox 360、PS3] 顶点、几何体或像素着色器的额外编译提示。 更多信息请见下文对编译器选项的介绍。
RenderFlags(渲染器标记):[所有平台] 一个位元蒙版,定义该通路是否应在特定渲染上下文中渲染。 仅当该标记和渲染器上下文着色器的 AND 运算不为零时,该渲染器才会被渲染。
TrackingMask(嵌入蒙版):[所有平台] 定义引擎将哪些附加信息嵌入常数注册器。 常数表格可在着色器库工具栏找到。
StreamMask(流蒙版):[所有平台] 定义引擎为相应几何体设置哪些顶点流。 几何网格缓存渲染不需要该选项。
OverwritesGlobalConstants(覆盖全局常数):[DX9、DX10、DX11、Xbox 360、PS3] 如启用,引擎会在卸下该着色器时恢复全局常数表格。
PerPrimitiveCallback(逐基元回调): 指定回调注册所属的回调函数名称。
CompiledClass(已编译类):[所有平台] 指定已编译着色器实例的类名称。 可在此指定派生自 VCompiledShaderPass 的自定义类。
编译器选项
在某些情况下,有必要为特定着色器使用特定的编译器选项。 例如,着色器必须在编译时加入调试信息,让 Pix 等外部工具也能获取附加信息。 着色器工具通过以下机制实现该目的:
逐像素编译标记:
可为每个着色器设定不同的编译器标记。 这些标记映射至相应平台上的特定编译器选项。 请注意,此功能并不涵盖所有标记,仅支持大部分平台上的重要标记。
全局编译器标记:
同样的标记也可为所有编译器进行全局设置:
全局和逐着色器标记的应用是叠加式的。 全局标记可用来快速切换库中所有重新保存的着色器的调试和非调试版本。 但对于游戏的零售版本,发布时不能带调试信息,并且要将标记设定到最佳优化状态。这点非常重要。
平台专用选项:
可通过写死在着色器源代码中的定义植入更多选项。 如果该定义能在源代码中找到,它将被添加到着色器编译器的命令行。 定义名称取决于平台,也与着色器类型有关(vertex-、pixel-、… shader)。 以下是 PS3 附加顶点着色器编译器选项的示例:
#define CompilerOptionsPS3VS -my -additional -options
后缀 PS3 可被其他平台名替代(Xbox 360、DX9、DX11、…),后缀 VS 可以是任何其他着色器类型(PS、GS、DS、HS、CS)。 下面是使用该功能的一些重要说明:
定义名称对大小写敏感(所以 compileroptionsPS3VS 是无效的名称)
搜索该定义的方式为简单实现法:
无法将它放入任何包含文件,因为该文件的解析要以后才进行
将它放入 #ifdef/#endif 作用域是无效的(#ifdefs 不是预解析代码)
不管它在代码中的哪个位置,都始终会被应用
目前,PS3 是唯一支持该附加命令行参数的平台
着色器选项
着色器属性面板的下方区域为附加着色器类型选项,每个对应类型为代码入口点、最小化着色器模型和纹理采样器提供多种属性。
整理编辑器对话框
多种着色器属性需要您为特定集合添加值。 例如在选择像素着色器纹理采样器,或为某个效果定义用户参数时。 无论集合为何种类型,该编辑器的执行方式都不变。
Add(添加): 添加新成员数据条目。
Remove(移除): 移除一个条目。
Properties(属性): 属性面板的内容取决于集合类型,会有所不同。
着色器采样器
一条通路的每一个着色器都有采样器。 采样器是绑定纹理的单元,让着色器可以读取这些纹理。 Vision 引擎可自动把特定纹理类型绑定到采样器上。 例如散射纹理、法线贴图或某个 G-Buffer 切片。 采样器也有一系列选项,例如纹理过滤,您也许想为您的着色器调整这些选项。
要编辑某个着色器的采样器,首先选择通路,然后选择您想要编辑的采样器所属的着色器选项卡,随后打开采样器编辑器:
然后您可以使用该编辑器:
利用添加和移除按钮,您可以从着色器中添加和移除采样器。
注:请注意,窗口最左侧的索引号要和您在着色器源代码中定义的采样器索引号匹配。
从左侧选择采样器后,您可以在右侧修改其属性:
采样器绑定
用于绑定该采样器的所有属性
SamplerName(采样器名称): 可选的采样器名称,将该采样器与指定名称的已编译采样器绑定起来。 如留空,则使用采样器索引号。
TextureSizeConstantName(纹理尺寸常数名称): 着色器常数名称,用于传入绑定到该采样器的纹理的尺寸。 如果一个 1D 或 2D 纹理被绑定到采样器,则如下内容将被传递到着色器:float4(宽、高、1/宽、1/高)。 如果一个 3D 纹理被绑定到采样器,则如下内容将被传递到着色器:float4(宽、高、深、0)。
纹理类型
负责定义绑定哪个纹理的所有属性
TextureType(纹理类型): 哪个预定义纹理应被绑定到该着色器
Base_Texture(基底纹理): 被渲染的模型的基底(散射)纹理
Lightmap(光照贴图): 被渲染的模型的光照贴图纹理
Shadowmap(阴影贴图): 当前活动光照的阴影蒙版
Auxiliary_Texture(辅助纹理): 用户可为某个材质提供的辅助纹理之一。 该纹理将使用TextureIndex(纹理索引)作为索引。
Custom_Texture(自定义纹理): 将从 CustomTextureFilename(自定义纹理文件名)载入的纹理。 如果 CustomTextureFilename 为空,则不绑定任何纹理。
Cubemap(立方体贴图): 将从 CustomTextureFilename 载入的立方体纹理。 如果 CustomTextureFilename 为空,则不绑定任何纹理。
Texture3D(纹理 3D): 将从 CustomTextureFilename 载入的 3D 纹理。 如果 CustomTextureFilename 为空,则不绑定任何纹理。
Specularmap(高光贴图): 当前被渲染的模型的高光贴图纹理。
Normalmap(法线贴图): 当前被渲染的模型的法线贴图纹理。
AccumulationBuffer(累积缓存): 当前使用渲染器节点的累积缓存。
DiffuseBuffer(散射缓存): 当前使用渲染器节点的散射缓存。 (仅限延迟渲染)
NormalBuffer(法线缓存): 当前使用渲染器节点的法线缓存。 (仅限延迟渲染)
DepthBuffer(深度缓存): 当前使用渲染器节点的深度缓存。
Texture2DArray(纹理 2D 数组): 将从 CustomTextureFilename 载入的纹理 2D 数组。 如果 CustomTextureFilename 为空,则不绑定任何纹理。
CustomTextureFilename(自定义纹理文件名): 部分纹理类型使用的纹理的路径。
TextureIndex(纹理索引):部分纹理类型的纹理索引。
纹理过滤和细节层次
PredefinedFilterMode(预定义过滤器模式): 最常用的预定义过滤器模式。 如果您改变该选项,所有其他过滤选项将会相应变化。
Nearest(最近): 最近内插法,纹理之间没有任何插补。
Bilinear(双线性): 双线性内插法
Trilinear(三线性): 三线性内插法
Anisotropic(各向异性): 各向异性内插法。 各向异性内插最大值可通过 MaxAnisotropy 指定
Custom(自定义): 用户定义内插法
FilterMode(过滤器模式): 要使用的硬件过滤器模式。 选择预定义过滤器模式时,该选项通常设为自动。
MaxAnisotropy(最大各向异性): 该采样器允许的各向异性过滤最大量。
LodBias(LOD 偏移): 纹理的 LOD 偏移 - 用于纹理 mip-level 选取。 该值小于 0 会令纹理更清晰(通常会降低性能),大于 0 会令纹理更模糊(通常会提高性能)。
ComparisonFunction(比较函数): 仅限 DX11,用于在着色器中比较采样的纹理比较函数。 仅限 Shader Model 4.0 及以上版本。
纹理夹取
TextureAddressModeU(纹理地址模式 U): 纹理坐标 U 通道的纹理地址模式。
Wrap(重叠): 纹理被重复
Mirror(镜像): 纹理被镜像重复
Clamp(夹取): 纹理边缘像素被重复
Border(边界): 纹理未被重复,0-1 范围外的区域使用边界色
Mirror_Once(镜像一次): 纹理被镜像重复一次。
TextureAddressModeV(纹理地址模式 V): 纹理坐标 V 通道的纹理地址模式。
TextureAddressModeW(纹理地址模式 W): 纹理坐标 W 通道的纹理地址模式。
BorderColor(边界色): 边界纹理地址模式的边界色。
各种通路属性
相关推荐
用于更改着色器以修复 3D Vision 中的游戏的 DirectX 挂钩库用于更改着色器的 DirectX 挂钩使用这些包装器和固定着色器通常可以制作出符合 3D Vision 品质的游戏,打猎允许搜索着色器然后将其导出为二进制文件。...
在这个项目中,着色器是关键,它们允许对图形进行复杂的像素级操作,提供更丰富的视觉效果。 1. **OpenGL**:OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形。它是图形硬件的抽象,允许开发者编写...
首先,文档可能会介绍Vision引擎的基础概念,包括它如何处理图像数据,如何进行像素级别的操作,以及如何支持常见的图像格式如JPEG、PNG等。基础部分还会涉及色彩空间转换、图像缩放、旋转和裁剪等基本图像操作。 ...
NI Vision Assistant中文入门教程(带书签)
在提供的"NI Vision Assistant中文入门教程 (1).pdf"中,你将找到详细的步骤和示例,包括如何使用基本工具、执行特定的图像处理任务以及如何设置和优化检测流程。教程中的案例涵盖了从简单的边缘检测到复杂的形状...
中文 µVision3 IDE用户指南 本用户指南描述了µVision3 IDE/Debugger,包含如下内容: 1.µVision3 综述 描述了µVision3 IDE及集成的调试器的主要...12.命令行调用介绍了如何从命令行或批文件中调用µVision3功能。
在本文中,我们将深入探讨如何在C#编程环境中引用并使用National Instruments (NI) 的Vision库,以便进行图像处理和机器视觉应用。标题"vision.rar_C# VISION引用_C#引用NI_Vision_c# vision_ni vision"以及描述"C#...
在VisionMaster中集成OpenCV库,可以极大地提升图像处理的效率和精度。OpenCVSharp是OpenCV的C#封装库,使得在.NET环境下调用OpenCV功能变得简单易行。本文将详细探讨如何在海康VisionMaster中使用OpenCvSharp进行...
本文将详细介绍 Vision Assistant 的基本操作流程及其核心功能。 #### 二、启动界面与欢迎界面 - **启动界面**:如图1所示,Vision Assistant 的启动界面简洁明了,用户可以看到软件的基本信息和版本号。 - **欢迎...
4. **测量**:NIVision提供了一组测量工具,如`MeasureDistance`和`MeasureAngle`,可以精确地测量图像中的几何属性。此外,`BlobAnalysis`函数用于分析和测量图像中的连通区域,对质量控制和缺陷检测非常有用。 5....
《NI Vision Assistant中文入门教程2011》是一本详细介绍了NI Vision Assistant软件安装和功能应用的教程。这本书由Andy YUAN编写,涵盖了机器视觉领域的多个核心功能模块。通过介绍NIVision Assistant软件的各项...
NI Vision Assistant中文入门教程,原帖地址(http://www.gsdzone.net/index.php/Home/Index/Index/index/cat_id/2841771288/t/3/id/805),现转为高清PDF版。
本文将详细介绍LabVIEW Vision模块中各个组成部分的功能与用途。 #### 二、LabVIEW机器视觉前面板模块 LabVIEW Vision模块的前面板包含了多种用于图像处理的控件。这些控件按照功能大致可以分为四类: 1. **...
在本文中,我们将详细介绍如何在 NI Vision Builder AI 中使用 RS232 进行通讯,包括新建状态、状态转移、新建 RS232 通讯、设置通讯参数、检查项目设置等步骤。 首先,我们需要新建一个状态,以便在接收到外部命令...
这种格式可能包含了一些额外的元数据,如图像的处理历史、属性等,对于在VisionMaster内进行复杂运算和分析非常有利。 接下来,我们将讨论如何在VisionMaster中进行这两种格式的转换: **1. VM格式CMvdImage转BMP*...
4. **接口规范**:详细介绍了GigE Vision接口的具体实现细节,包括通信协议、数据格式等。 5. **设备控制**:描述了如何通过网络对设备进行配置和控制。 6. **合规性测试**:规定了产品需通过的测试项目和流程。 7. ...
在VISION中,用户可以通过图形化的编程界面来创建和编辑虚拟仪器,进行数据采集、处理和分析。 在这个"VISION库模型.zip"中,我们可以期待找到各种电子元器件的模型,如电阻、电容、电感、二极管、晶体管、运算放大...
在石鑫华版的中文教程中,详细介绍了该软件的各项功能和操作界面,旨在帮助用户掌握基本到高级的图像处理技术。 教程首先从启动欢迎界面开始,让用户熟悉软件的启动流程。接着,介绍了一系列功能界面,包括Acquire ...