欧美日韩精品一区二区在线线,一级无码在线收看,精品国产高清91,久久精品欧美电影

# 材質(zhì)

材質(zhì) Material 基于 效果 Effect,提供了修改渲染狀態(tài)、Uniforms的接口,真正決定了物體最后的渲染方式,體現(xiàn)為物體表面的外觀。

# 創(chuàng)建一個材質(zhì)

創(chuàng)建材質(zhì)有兩種方式,一般我們會優(yōu)先在wxml中進行創(chuàng)建。

# 在wxml中創(chuàng)建

xml中創(chuàng)建需要用到xr-asset-material標簽:

<xr-asset-material asset-id="mat" effect="standard" uniforms:"u_baseColorMap: waifu" states="alphaMode:BLEND" renderQueue="2500" />

其中asset-id是會添加到資源系統(tǒng)中的id,effect是已經(jīng)注冊過的效果,這兩個參數(shù)是必填的。uniforms類型是dict,用于覆蓋效果中定義的那些屬性,會根據(jù)那些屬性的type來進行解析,比如Vector2對應1 1這樣的數(shù)組;states類型也是dict,用于覆蓋效果中定義的那些渲染狀態(tài)(需要效果中開啟useMaterialStates);最后的renderQueue用于覆蓋效果中的默認渲染順序,大于等于2500為透明物體。

# 用代碼創(chuàng)建

有時候我們需要用代碼創(chuàng)建材質(zhì),也很簡單:

// 第一個參數(shù)是效果實例的引用,第二個參數(shù)是默認`uniforms`
const mat = scene.createMaterial(
  // 使用內(nèi)置的 Standard 效果
  scene.assets.getAsset('effect', 'standard'),
  {u_baseColorMap: scene.assets.getAsset('texture', 'waifu')}
);

// 可以將其添加到資源系統(tǒng)中備用
scene.assets.addAsset('material', 'test-mat', mat);

創(chuàng)建完,接下來就是使用了。

# 使用材質(zhì)

材質(zhì)和其他資源一樣,可以通過在組件schema中設定數(shù)據(jù)類型為material,然后在xml中通過資源id索引,或者用setData直接使用。目前使用了材質(zhì)的組件只有網(wǎng)格,詳見對應章節(jié)。

除了被引用外,材質(zhì)也提供了一些方法來對其進行修改:

// 一系列修改Uniforms的接口
material.setFloat(key, value);
material.setVector(key, vec);
material.setMaterial(key, mat);
material.setTexture(key, texture);

// 修改渲染狀態(tài)
material.setRenderState(key, value);

// 修改宏
material.setMacros({key: value});

// 重置圖片,同時關(guān)閉對應的宏
material.resetTexture(key);

// 重置狀態(tài)
materia.clearRenderState(key);

# 材質(zhì)支持渲染狀態(tài)列表

狀態(tài)名稱 說明 類型
renderQueue 渲染順序 number
cullOn 是否開啟剔除 bool
depthTestOn 是否開啟深度測試 bool
depthTestWrite 是否開啟深度寫入 bool
alphaMode 透明模式 'OPAQUE' 'BLEND' 'MASK'
alphaCutOff 是否開啟透明剔除 bool
depthTestComp 深度測試方法 number, ECompareFunc對應的值
stencilTestOn 是否開啟模板測試 boolean
stencilComp 模板測試相關(guān) number, ECompareFunc對應的值
stencilRef 模板測試相關(guān) number
stencilReadMask 模板測試相關(guān) number
stencilWriteMask 模板測試相關(guān) number
stencilPass 模板測試相關(guān) number, EStencilOp對應的值
stencilFail 模板測試相關(guān) number, EStencilOp對應的值
stencilZFail 模板測試相關(guān) number, EStencilOp對應的值
colorWrite 顏色通道寫入掩碼,基礎庫v2.31.1開始支持 number, 一個4bits的mask,由高到低為ABGR四個通道,比如0b1001表示只開啟RA通道寫入