`
projectanarchy2
  • 浏览: 4814 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

在 vForge 中设置排列组合着色器和技术

 
阅读更多
前面介绍了如何编写一个着色器。要实际创建该着色器的排列组合,它就必须在 vForge 中设置。
 
排列组合着色器和普通着色器的唯一差别在于前者包含 $ifdef / $endif 代码,后者没有。 只需在着色器中插入这些排列组合预处理器指令,就能将着色器转变成可以生成排列组合的着色器。 当您保存着色器库时,vForge 会检查着色器代码,以黄色图标标出这些着色器,而其他着色器的图标为蓝色。 使用排列组合技术的着色器无法被分配给非排列组合技术。
 
   注:一旦您在着色器中使用排列组合指令,着色器编译器就不再直接编译该着色器。 该着色器本身将被忽略,只有它所生成的排列组合会被编译。
 
排列组合技术
在 Vision 引擎中,着色器库由效果构成,效果包含技术,技术则引用着色器。 要生成着色器的排列组合,您可以使用一个新要素,即排列组合技术。 排列组合技术引用一个着色器。 该着色器在其代码中使用排列组合变量。

创建一个排列组合技术后,将着色器拖拽到该技术中,或右键单击技术并选择”Set Shader”(设置着色器),即可设置要使用的着色器。 接下来,该技术需要一份配置脚本,定义为该技术创建排列组合的确切方式。 为此,首先在树状图中选中该排列组合技术。 “着色器属性”窗口会显示该技术的设置。 PermutationConfig 属性可指定配置文件(一个 Lua 脚本)。 点击 … 图标选择一个现有的脚本或创建新脚本。

排列组合配置脚本
创建新配置脚本时,其中包含一些默认代码以帮助您上手。
-- *** Vision Shader-Permutation Config-File ***
 
--   Functions to add Permutation-Variables and their valid Values:
 
-- AddPermutationBool      ("VAR_NAME");
-- AddPermutationBoolGroup ("VAR_NAME1", "VAR_NAME2", "VAR_NAME3", ...);
-- AddPermutationInt       ("VAR_NAME", int1, int2, int3, ...);
-- AddPermutationConst     ("VAR_NAME", true/false);
-- AddPermutationConst     ("VAR_NAME", int);
-- AddPermutationConstWithIncTag ("VAR_NAME", true/false);
-- AddPermutationConstWithIncTag ("VAR_NAME", int);
 
--   The following global variables are available:
 
-- EffectName
-- TechniqueName
 
--   The following Permutation-Variables were extracted from the Shader:
 
-- AddPermutationBool/Int/Const ("PERM_VAR");
 
 
--   Filtering-Function to remove unnecessary permutations:
 
function IsPermutationSupported (PermutationValues, Platform)
 
--if (PermutationValues["VAR_NAME"] > some_value) and (Platform == DX9 / DX11 / XBOX360 / PS3 / PSP2 / GLES2) then
--  return false;
--end
 
--if (PermutationValues["VAR_NAME"] ~= some_value) and/or (PermutationValues["VAR_NAME"] == some_other_value) then
--  return false;
--end
 
  return true;
end
 
vForge 甚至会解析当前被排列组合技术使用的着色器,并自动插入代码,对辨识出的排列组合变量进行配置。 正如您在上面的示例中所见,vForge 会辨识出着色器使用了 PERM_VAR 变量,并为您添加一些代码,使其正常起效并运行得更快。
 
该脚本已经记录了排列组合系统具有的所有功能。 该脚本为 Lua 脚本,所以使用正常Lua 语法。
 
这些脚本中最重要的部分是调用 AddPermutation…。 通过这些调用,您可以让着色器编译器了解所有排列组合变量,以及它们应具有的类型和值。
 
AddPermutationBool 添加一个布尔排列组合变量。 这些变量使用 true 和 false 值。
AddPermutationInt 添加一个整数排列组合变量。 您必须指定所有要获取的值。
AddPermutationConst 添加一个变量,但将其设为某个常数值,可以是 true/false,也可以是单个整数值。 该排列组合变量不会被添加到包含标记列表中。
AddPermutationConstAndIncTag 该排列组合变量会被添加到包含标记列表中(如果为 true(布尔)或任意整数值),除此之外和”AddPermutationConst”相同。
AddPermutationBoolGroup 添加多个布尔排列组合变量,并设置限定,其中只能有一个为 true。
  注:您可以添加比着色器使用的排列组合变量更多的排列组合变量。 着色器编译器会生成更多排列组合,但会检测出这些不必要的排列组合的着色器代码是重复的,并将这些排列组合转为对同一着色器的引用。
 
脚本还包含过滤函数 IsPermutationSupported。 该函数可过滤掉不被特定硬件支持或无意义的排列组合。
 
该函数带有 PermutationValues 参数,这是一份表格,表格中,每个排列组合变量各有一个值。 此外,函数还带有一个参数,描述当前生成的排列组合用于哪种平台。 然后函数检查具体配置,判断脚本是否被支持,并返回 true 或 false 结果。
 
例如,您有一个支持法线贴图和视差贴图的着色器,而视差贴图必须在启用法线贴图的前提下才能执行。 因此,启用视差贴图但禁用法线贴图的排列组合是无用的。 IsPermutationSupported 可过滤掉这一配置,从而加快编译速度,也有可能减少着色器库的内存占用。
 
另一用途是过滤掉某些平台无法运行的特定排列组合。 例如,某些主机无法执行 PC 上可以执行的复杂着色器。 一个着色器效果可能有若干排列组合,其细节从非常简单一直到极度复杂,但不能为这些主机编译细节度极高的排列组合,因为主机无法渲染。
 
如果没有 IsPermutationSupported,所有排列组合都会被创建,没有一种会被弃用。
 
该脚本还传递了”EffectName”和”TechniqueName”变量,其中包含脚本当前执行的效果和技术的名称。 通过这些变量可在不同技术中使用相同的脚本,不过代码还是会略有不同。
 AddPermutationBool ("NORMALMAP");
 
  if (TechniqueName == "MSAA") then
    AddPermutationInt ("MSAA_LEVEL", 2, 3, 4);
  else
    AddPermutationConst ("MSAA_LEVEL", 1);
  end
 
创建和验证排列组合
当您有了一个排列组合技术,其中具备排列组合着色器和有效的配置脚本,您只需保存(也就意味着编译)着色器库即可生成排列组合。
 
有若干功能可帮助您判断排列组合是否会按配置意图正确生成。 首先,您可以轻易地显示一种技术所生成的配置:

对话框会显示将生成哪些排列组合、如何生成,以及其中是否有任何重复(即排列组合的代码完全相同)。 进一步展开节点,您甚至可以检查着色器将被生成的代码。 而且,如果配置脚本或着色器中有任何错误,对话框会向您提示。
 
当您编译着色器库时,着色器日志会显示大量信息,例如哪些排列组合被生成、哪些配置被使用,等等。 该日志通常仅在着色器编译失败时显示。 但您可以在着色器勾选项菜单中勾选“Always Show Log”(始终显示日志),确保日志始终被显示:

此外,您还可以勾选“Show Auto-Generated Shaders / Techniques”(显示自动生成的着色器 / 技术)选项。 这样一来,从排列组合中生成的所有技术和着色器都会在 vForge 中显示。 有了这些信息,您可以非常轻松地检查究竟有多少技术被创建、它们有哪些设置(例如包含标记、目标平台、着色器模型、流蒙版等)。
   注:您不能编辑自动生成的着色器和技术。 每当着色器库被编译时,它们都会被重新创建,所以一切手动更改都会丢失。
 
  注:目前,在着色器库被编译后,vForge 不会更新 GUI 来显示自动生成了哪些着色器 / 技术。 要看到实时当前状态,您需要关闭着色器库并重新打开。 这一局限将在以后的版本中修正。
分享到:
评论

相关推荐

    2024-2030全球与中国盐氯化系统市场现状及未来发展趋势.docx

    2024-2030全球与中国盐氯化系统市场现状及未来发展趋势

    基于深度学习的积灰检测识别-图像分类源码+数据集.zip

    详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;

    沈阳药科大学-答辩通用PPT模板我给母校送模板作品.pptx

    PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。

    微信备忘录小程序源码 作业设计demo 计算机专业作业

    微信备忘录小程序源码 作业设计demo 微信备忘录小程序是一种便捷的个人记事应用,它允许用户在微信内快速记录和查看备忘录。以下是对微信备忘录小程序的简要介绍: --- **微信备忘录小程序** 微信备忘录小程序为用户提供了一个简单、直观的记事平台。用户可以通过这个小程序记录日常事务、重要提醒和个人笔记,非常适合忙碌的现代生活节奏。 主要特点包括: 1. **快速记录**:用户可以迅速添加文本、列表或语音备忘录。 2. **定时提醒**:为每个备忘录设置提醒时间,确保不会错过任何重要事项。 3. **个性化分类**:支持自定义分类,便于管理和查找备忘录。 4. **界面友好**:清晰的界面设计,操作简便,无需复杂的学习过程。 5. **数据同步**:通过微信账号登录,实现备忘录的云端同步,方便在不同设备间切换使用。 此外,小程序还具备以下优势: - **隐私保护**:备忘录内容仅对用户本人可见,保障个人隐私。 - **无广告干扰**:提供一个无广告的清爽记事环境。 - **离线存储**:即使在无网络环境下,也能正常使用,记录的内容会在联网后自动同步。 微信备忘录小程序是日

    中国海洋大学-汇报答辩专用PPT模板我给母校送模板作品.pptx

    PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。

    毕业设计:python基于深度学习的交通标志识别系统(源码 + 数据库 + 说明文档) 太多存百度云盘

    毕业设计:python基于深度学习的交通标志识别系统(源码 + 数据库 + 说明文档) 2 开发工具及技术 2 2.1 B/S结构的介绍 2 2.2 PYTHON技术的介绍 2 2.3 HTML技术的介绍 2 2.4 MYSQL数据库的介绍 3 2.5 深度算法的介绍 3 2.6 开发环境的介绍 3 3 需求分析 4 3.1 可行性分析 4 3.2 功能需求分析 4 3.3 非功能需求分析 4 4 总体设计 6 4.1 系统总体结构设计 6 4.2 系统的数据库设计 6 5 系统功能实现 6 5.1 登录及注册 6 5.2 首页展示 6 5.3 个人信息 6 5.4 用户管理 6 5.5 修改密码 6 5.6 图片识别 6 5.7 摄像头识别 6 5.8 天气识别 6 6 系统测试 6 6.1 测试目的 6 6.2 测试内容 6 6.3 测试总结 6

    083ssm-vue汉服文化平台网站.zip(可运行源码+数据库文件+文档)

    本L文主要论述了如何使用JAVA语言开发一个汉服文化平台网站 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述汉服文化平台网站的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。 汉服文化平台网站的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、汉服知识管理、服装展示管理、服装类别管理、用户相册管理、论坛交流、系统管理、订单管理,用户:首页、个人中心、用户相册管理、论坛交流、我的收藏管理、订单管理,前台首页;首页、汉服知识、服装展示、用户相册、论坛交流、个人中心、后台管理、购物车、在线客服等功能。由于本网站的功能模块设计比较全面,所以使得整个汉服文化平台网站信息管理的过程得以实现。 本系统的使用可以实现汉服文化平台网站管理的信息化,可以方便管理员进行更加方便快捷的管理,可以提高管理人员的工作效率。 关键词:汉服文化平台网站 JAVA语言;MYSQL数据库;SSM 框架

    HTML5浪漫爱心表白动画在线演示程序

    HTML5浪漫爱心表白动画在线演示程序

    node-v13.12.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    实验3-关系运算设计(c语言编程).doc

    实验3-关系运算设计(c语言编程).doc

    对京东网站的分析(ppt文档).ppt

    对京东网站的分析(ppt文档).ppt

    C#本科毕业设计基于Unity3D引擎的网络角色扮演游戏设计与实现源代码.zip

    高分设计源码,详情请查看资源内容中使用说明 高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明

    2021数学建模美赛C题代码.zip

    最全的数学建模美赛C题和代码、大量刷题题库、逻辑清晰易于学习

    基于MATLAB的PCA算法人脸识别项目源码+GUI界面+说明文档.zip

    详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;

    上海交通大学-通用PPT模板我给母校送模板作品.pptx

    PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。

    办公自动化(OA)是面向组织的日常运作和管理,员工及管理者使用频率最高的应用系统,极大提高公司的办公效率.zip

    springboot框架 一、Spring Boot基础应用 Spring Boot特征 概念: 约定优于配置,简单来说就是你所期待的配置与约定的配置一致,那么就可以不做任何配置,约定不符合期待时才需要对约定进行替换配置。 特征: 1. SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中。 2,使编码变得简单,SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值注入IOC容器。 3.自动配置:SpringBoot的自动配置特性利用了Spring对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们。 4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了

    市政交通信号工程检验批质量验收记录.doc

    市政交通信号工程检验批质量验收记录.doc

    浙江农林大学-答辩通用PPT模板我给母校送模板作品.pptx

    PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。

    工程监理企业信息化解决方案.doc

    工程监理企业信息化解决方案.doc

    工总承包企业特级资质标准信息化考评表.doc

    工总承包企业特级资质标准信息化考评表.doc

Global site tag (gtag.js) - Google Analytics