MaterialPlugin 材质插件对象,是Drawsee在Babylon相关插件基础上进行的封装。提供更简单易用的接口开发材质扩展Shader,控制标准材质的显示效果。目前系统光影的渲染,使用的是Babylon.StandardMaterial,所以插件也是针对该材质。
Members
-
是否启用
-
变换
-
readonly uniforms : any }
-
插件所有uniform的集合对象,用"uniforms.name = value"的形式设置对应名称的uniform值
-
updateCallback : any
-
设置uniform的回调函数,只有实时变化的参数才需要设置,比如时间。对于clone的对象,可以设置新的函数。系统会维持一个调用列表,自动调用祖先类的原方法,互不影响。
Methods
创建材质插件。可以直接提供Fragment代码,缺省添加在最后插入点
Name | Type | Description |
---|---|---|
code |
string | optional |
添加fragment shader代码。如果不提供插入点位置,如果不提供则添加到最后。这也是最常用的情况。这是对StandardMaterial比较冗长的插入点名称进行了简化。如defines表示定义位置,beforeLight表示计算光照之前color是当前颜色结果,baseColor是纹理的原始颜色常用的varying:vNormalW 法向量 , vPositionW 局部三维坐标, vDiffuseUV 纹理坐标更多细节需要参考Babylon的shader源代码注意:同一个插入点名称下,同一个插件只会存在一段代码,是互相覆盖关系。多个不同的插件,会根据在使用集合中的次序插入多段代码。
Name | Type | Description |
---|---|---|
code |
string | 代码 |
pointName |
string | optional插入点位置,如果不提供则添加到最后。可以使用defines,beforeLight等简称,不区分大小写,系统会识别关键部分做区分,比如light |
添加uniform定义,支持float,int,vec2,vec3,mat3,mat4基本类型,以及float[8]等形式的数组类型
Name | Type | Description |
---|---|---|
name |
string | 名称 |
type |
string | 类型 |
value |
any | optional初始值,可选 |
添加vertex shader代码。在vertex defines部分定义的varying,系统会自动复制到fragment,不用重复添加
Name | Type | Description |
---|---|---|
code |
string | shader代码 |
pointName |
string | optional插入点位置 |
clone() → MaterialPlugin
复制插件。通常可以用于作类似派生的用法,对于复制的插件,再添加新的uniform,或者