MaterialPlugin

MaterialPlugin

MaterialPlugin 材质插件对象,是Drawsee在Babylon相关插件基础上进行的封装。提供更简单易用的接口开发材质扩展Shader,控制标准材质的显示效果。目前系统光影的渲染,使用的是Babylon.StandardMaterial,所以插件也是针对该材质。

Members

isEnabled : boolean

是否启用

readonly no : number

变换

readonly uniforms : any }

插件所有uniform的集合对象,用"uniforms.name = value"的形式设置对应名称的uniform值

updateCallback : any

设置uniform的回调函数,只有实时变化的参数才需要设置,比如时间。对于clone的对象,可以设置新的函数。系统会维持一个调用列表,自动调用祖先类的原方法,互不影响。

Methods

constructor(code)

创建材质插件。可以直接提供Fragment代码,缺省添加在最后插入点
Name Type Description
code string optional

addFragment(code,pointName)

添加fragment shader代码。如果不提供插入点位置,如果不提供则添加到最后。这也是最常用的情况。这是对StandardMaterial比较冗长的插入点名称进行了简化。如defines表示定义位置,beforeLight表示计算光照之前color是当前颜色结果,baseColor是纹理的原始颜色常用的varying:vNormalW 法向量 , vPositionW 局部三维坐标, vDiffuseUV 纹理坐标更多细节需要参考Babylon的shader源代码注意:同一个插入点名称下,同一个插件只会存在一段代码,是互相覆盖关系。多个不同的插件,会根据在使用集合中的次序插入多段代码。
Name Type Description
code string 代码
pointName string optional插入点位置,如果不提供则添加到最后。可以使用defines,beforeLight等简称,不区分大小写,系统会识别关键部分做区分,比如light

addUniform(name,type,value)

添加uniform定义,支持float,int,vec2,vec3,mat3,mat4基本类型,以及float[8]等形式的数组类型
Name Type Description
name string 名称
type string 类型
value any optional初始值,可选

addVertex(code,pointName)

添加vertex shader代码。在vertex defines部分定义的varying,系统会自动复制到fragment,不用重复添加
Name Type Description
code string shader代码
pointName string optional插入点位置

clone() → MaterialPlugin

复制插件。通常可以用于作类似派生的用法,对于复制的插件,再添加新的uniform,或者