CN108765533A - 一种shader参数可视化方法 - Google Patents
一种shader参数可视化方法 Download PDFInfo
- Publication number
- CN108765533A CN108765533A CN201810476525.0A CN201810476525A CN108765533A CN 108765533 A CN108765533 A CN 108765533A CN 201810476525 A CN201810476525 A CN 201810476525A CN 108765533 A CN108765533 A CN 108765533A
- Authority
- CN
- China
- Prior art keywords
- shader
- parameter
- properties
- self
- attributes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
一种shader参数可视化方法,设置shader参数映射关系表,包括Properties、Vertex、Fragment三个属性;通过3D引擎中的ResShader读取程序员创建的shader,将shader的Properties以及Vertexshader和fragmentshader保存到相应的变量;通过渲染引擎中提供的CustomMaterial类型创建自定义材质对象;自定义材质提供了setFloat、setTexture、setMat4、setColor接口,通过ResMat对象的rawToValue函数调用处理用户的输入数据并根据shader参数的类型调用不同的接口设置材质的数值;根据渲染引擎提供的标准材质进行渲染,采用3D引擎提供的封装类型ResMat在标准材质与不同的自定义材质之间切换,在切换到新的材质时设置材质的参数的默认数值。
Description
技术领域
本发明涉及计算机图形领域,具体涉及一种shader参数可视化方法。
背景技术
shader是一段规定好输入(颜色,贴图等)和输出(渲染器能够读懂的点和颜色的对应关系)的程序,在OpenGL中,一般是由程序员写好一段shader程序,通过OpenGL提供的函数调用加载shader,并且设置shader运行所需要的数据,这些都是通过OpenGL提供的函数调用来完成的,也就是说,这样一整个过程都需要程序来实施,但是在实际的工程中,我们往往需要在写好一段shader以后让美术人员来调整其效果,如果还是由程序来实施,我们就会反复的调整参数编译,运行,来达到最终想要的效果,同时需要美术人员和程序人员在场,这样不仅浪费了大量的时间(主要是编译,运行)同时也占用了大量的人力资源,所以需要一种能够实时调整shader参数并且能够实时反映参数变化后的效果的这样一个功能来节约美术与程序的时间减少人力资源的浪费。
由于shader与材质系统是密不可分的,shader是实现一种效果的程序,材质则封装了shader并且提供了到GPU的渲染方法,现有材质系统在不能做到灵活的更改shader达到不同的渲染效果,需要设计一种方法来灵活的切换shader实现渲染。
发明内容
为了达到上述目的,本发明提供一种shader参数可视化方法,包括如下步骤:
s1、设置shader参数映射关系表,包括Properties、Vertex、Fragment三个属性,Properties属性是一个对象,属性是真实shader代码参数;Vertex属性保存的是Vertexshader;Fragment属性保存的是fragmentshader;
s2、通过3D引擎中的ResShader读取程序员创建的shader,将shader的Properties以及Vertexshader和fragmentshader保存到相应的变量,通过Properties即可知道shader当中所需要的参数以及参数类型;
s3、通过渲染引擎中提供的CustomMaterial类型创建自定义材质对象,将这个对象赋值给网格节点即可渲染出该shader效果;自定义材质提供了setFloat、setFloat、setTexture、setMat4、setColor、接口,、通过ResMat对象的rawToValue函数调用处理用户的输入数据并根据shader参数的类型调用不同的接口设置材质的数值;
s4、根据渲染引擎提供的标准材质进行渲染,采用3D引擎提供的封装类型ResMat在标准材质与不同的自定义材质之间切换,在切换到新的材质时设置材质的参数的默认数值。
通过采用本发明,3D编辑器即可通过读取ResShader中Properties对象的属性来可视化调整shader的参数值。
具体实施方式
为了更好的理解本发明,下面详细说明本发明。
在shader可视化编辑功能中,我们主要要解决两个问题一个是shader中的参数的可视化编辑,以及编辑后的实时预览。
因为shader不能像js对象那样知道shader渲染过程中需要的参数,shader本身只是提供给OpenGL渲染的一段程序,而不是一个对象,所以我们只能在已知shader所需参数的情况下通过OpenGL的函数调用设置其渲染时参数,这个过程传统上只能由程序员进行,但是由于要让可视化功能能够知道shader所需要的参数,所以需要一个shader中参数的映射关系表,这个表同时提供了参数的名称、类型以及默认数值,所以程序所写的shader脚本应该提供以下属性:
Properties:这是一个对象,它的属性则是真实shader代码的参数。
Vertex:这里保存的是vertexshader。
Fragment:这里保存的是fragmentshader。
一个完整的shader程序是由vertexshader以及fragmentshader组成的。
3D引擎中实现了一个ResShader类型用来读取程序员创建的shader,将shader的Properties以及vertexshader和fragmentshader保存到相应的变量,这样我们通过Properties属性知道了shader当中所需要的参数以及参数类型,接下来只需要通过渲染引擎提供的CustomMaterial类型创建自定义材质对象,然后将这个对象赋值给网格节点即可渲染出该shader的效果。
由于所有的材质在创建的时候已经指定好shader,同时由于渲染引擎本身提供了标准材质,用户可能需要在标准材质与自定义材质之前切换查看自定义材质的效果,所以3D引擎提供了封装类型ResMat,并且提供了属性shader来在标准材质以及不同的自定义材质之间切换,在切换到新的材质时设置材质的参数的默认数值,自定义材质提供了setFloat,setTexture,setMat4,setColor等接口,然后通过ResMat对象的rawToValue函数调用处理用户的输入根据shader参数的类型调用不同的接口设置材质的数值。
这样3D编辑器即可通过读取ResShader中Properties对象的属性来可视化调整shader的参数值。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (2)
1.一种shader参数可视化方法,其特征在于,所述shader参数可视化方法包括如下步骤:
s1、设置shader参数映射关系表,包括Properties、Vertex、Fragment三个属性,Properties属性是一个对象,属性是真实shader代码参数;Vertex属性保存的是Vertexshader;Fragment属性保存的是fragmentshader;
s2、通过3D引擎中的ResShader读取程序员创建的shader,将shader的Properties以及Vertexshader和fragmentshader保存到相应的变量,通过Properties即可知道shader当中所需要的参数以及参数类型;
s3、通过渲染引擎中提供的CustomMaterial类型创建自定义材质对象,将这个对象赋值给网格节点即可渲染出该shader效果;
s4、根据渲染引擎提供的标准材质进行渲染,采用3D引擎提供的封装类型ResMat在标准材质与不同的自定义材质之间切换,在切换到新的材质时设置材质的参数的默认数值。
2.根据权利要求1所述的一种shader参数可视化方法,其特征在于,
自定义材质提供了setFloat、setFloat、setTexture、setMat4、setColor、接口,、通过ResMat对象的rawToValue函数调用处理用户的输入数据并根据shader参数的类型调用不同的接口设置材质的数值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810476525.0A CN108765533A (zh) | 2018-05-17 | 2018-05-17 | 一种shader参数可视化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810476525.0A CN108765533A (zh) | 2018-05-17 | 2018-05-17 | 一种shader参数可视化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108765533A true CN108765533A (zh) | 2018-11-06 |
Family
ID=64008009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810476525.0A Pending CN108765533A (zh) | 2018-05-17 | 2018-05-17 | 一种shader参数可视化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108765533A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090033662A1 (en) * | 2007-08-01 | 2009-02-05 | Disney Enterprises, Incorporated | Multiple artistic look rendering methods and apparatus |
US20100095230A1 (en) * | 2008-10-13 | 2010-04-15 | Jerome Maillot | Data-driven interface for managing materials |
CN105701854A (zh) * | 2016-01-06 | 2016-06-22 | 网易(杭州)网络有限公司 | 一种3d渲染方法、装置及引擎 |
CN106067185A (zh) * | 2016-05-27 | 2016-11-02 | 美屋三六五(天津)科技有限公司 | 一种三维模型处理方法及装置 |
CN107103638A (zh) * | 2017-05-27 | 2017-08-29 | 杭州万维镜像科技有限公司 | 一种虚拟场景与模型的快速渲染方法 |
CN107330962A (zh) * | 2017-06-19 | 2017-11-07 | 杭州群核信息技术有限公司 | 一种场景生成方法及装置 |
CN107358649A (zh) * | 2017-06-07 | 2017-11-17 | 腾讯科技(深圳)有限公司 | 地形文件的处理方法和装置 |
-
2018
- 2018-05-17 CN CN201810476525.0A patent/CN108765533A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090033662A1 (en) * | 2007-08-01 | 2009-02-05 | Disney Enterprises, Incorporated | Multiple artistic look rendering methods and apparatus |
US20100095230A1 (en) * | 2008-10-13 | 2010-04-15 | Jerome Maillot | Data-driven interface for managing materials |
CN105701854A (zh) * | 2016-01-06 | 2016-06-22 | 网易(杭州)网络有限公司 | 一种3d渲染方法、装置及引擎 |
CN106067185A (zh) * | 2016-05-27 | 2016-11-02 | 美屋三六五(天津)科技有限公司 | 一种三维模型处理方法及装置 |
CN107103638A (zh) * | 2017-05-27 | 2017-08-29 | 杭州万维镜像科技有限公司 | 一种虚拟场景与模型的快速渲染方法 |
CN107358649A (zh) * | 2017-06-07 | 2017-11-17 | 腾讯科技(深圳)有限公司 | 地形文件的处理方法和装置 |
CN107330962A (zh) * | 2017-06-19 | 2017-11-07 | 杭州群核信息技术有限公司 | 一种场景生成方法及装置 |
Non-Patent Citations (3)
Title |
---|
RAMAKRISHNAN MUKUNDAN: "Multi-Level Stroke Textures for Sketch Based NonPhotorealistic Rendering", 《IEEE》 * |
甄菲菲: "渲染引擎研发中关键技术的研究与实现", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
陈为等: "利用GPU实时绘制水墨画效果", 《计算机辅助设计与图形学学报》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11010959B2 (en) | Graphics processing systems | |
CN112381918A (zh) | 图像渲染方法、装置、计算机设备和存储介质 | |
CA2267440C (en) | A system for automatic generation of selective partial renderings of complex scenes | |
CN108597014B (zh) | 一种基于可视化编程的跨平台渲染效果的编辑系统 | |
CN109978981B (zh) | 一种提高建筑模型显示效率的批次渲染方法 | |
CN105427236A (zh) | 一种图像渲染方法及装置 | |
GB2344039A (en) | Blending processing for overlapping translucent polygons | |
JP4302146B2 (ja) | プログラム作成支援装置 | |
CN106502662B (zh) | 用于智能操作系统的多区域图形绘制方法及装置 | |
CN109816763A (zh) | 一种图形渲染方法 | |
CN108537891A (zh) | 三维材质和贴图数据自动转换到ue4的方法 | |
CN103413344A (zh) | 3d帧动画实现方法、装置及终端 | |
CN111383320B (zh) | 虚拟模型处理方法、装置、设备及存储介质 | |
Bowers et al. | A ray tracing approach to diffusion curves | |
CN113379865B (zh) | 目标对象的绘制方法和系统 | |
CN106815015A (zh) | 一种ios中视图组织方法及系统 | |
CN104867105A (zh) | 一种图片处理方法及装置 | |
CN107562325B (zh) | 一种虚拟机中自带光标软件的光标加速方法及系统 | |
CN105808035A (zh) | 图标显示方法及装置 | |
CN112274934A (zh) | 模型渲染方法、装置、设备及存储介质 | |
CN105117404A (zh) | 基于图表类型和数据特征场景下的图表显示缺陷优化方法 | |
CN108765533A (zh) | 一种shader参数可视化方法 | |
US7917535B1 (en) | Task membership and task masks | |
US20180025547A1 (en) | 2d graphical coding to create a 3d image | |
CN116912382B (zh) | 一种渲染方法、装置及电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20221230 |