three.js Materials

2023-02-16 17:30 更新

由這些常量定義的屬性對(duì)所有的材質(zhì)類型都生效,除了Texture Combine Operations只應(yīng)用于 MeshBasicMaterial,MeshLambertMaterial和MeshPhongMaterial。

THREE.FrontSide
THREE.BackSide
THREE.DoubleSide
THREE.TwoPassDoubleSide

定義了哪一邊的面將會(huì)被渲染 —— 正面,或是反面,還是兩個(gè)面都渲染。 默認(rèn)值是FrontSide(只渲染正面)。

TwoPassDoubleSide 將按前后順序分兩次渲染雙面透明材料,以減輕透明偽影。

混合模式

THREE.NoBlending
THREE.NormalBlending
THREE.AdditiveBlending
THREE.SubtractiveBlending
THREE.MultiplyBlending
THREE.CustomBlending

這些值控制著源和目標(biāo)材質(zhì)中,被發(fā)送到WebGLRenderer,來給WebGL使用的包含有RGB和Alpha數(shù)據(jù)的混合方程。
默認(rèn)值是NormalBlending。
請(qǐng)注意,CustomBlending必須被設(shè)置為自定義混合方程(Custom Blending Equations)常量中的值。
請(qǐng)查看示例:materials / blending

深度模式

THREE.NeverDepth
THREE.AlwaysDepth
THREE.LessDepth
THREE.LessEqualDepth
THREE.GreaterEqualDepth
THREE.GreaterDepth
THREE.NotEqualDepth

材質(zhì)使用這些深度函數(shù)來比較輸入像素和緩沖器中Z-depth的值。 如果比較的結(jié)果為true,則將繪制像素。
NeverDepth 永遠(yuǎn)不返回true。
AlwaysDepth 總是返回true。
LessDepth 當(dāng)輸入像素Z-depth小于當(dāng)前緩沖器Z-depth時(shí),返回true。
LessEqualDepth 為默認(rèn)值,當(dāng)輸入像素Z-depth小于或等于當(dāng)前緩沖器Z-depth時(shí),返回true。
GreaterEqualDepth 當(dāng)輸入像素Z-depth大于或等于當(dāng)前緩沖器Z-depth時(shí),返回true。
GreaterDepth 當(dāng)輸入像素Z-depth大于當(dāng)前緩沖器Z-depth時(shí),返回true。
NotEqualDepth 當(dāng)輸入像素Z-depth不等于當(dāng)前緩沖器Z-depth時(shí),返回true。

紋理結(jié)合操作

THREE.MultiplyOperation
THREE.MixOperation
THREE.AddOperation

這些常量定義了物體表面顏色與環(huán)境貼圖(如果存在的話)相結(jié)合的結(jié)果, 用在MeshBasicMaterial、MeshLambertMaterial和MeshPhongMaterial當(dāng)中。
MultiplyOperation 是默認(rèn)值,它將環(huán)境貼圖和物體表面顏色進(jìn)行相乘。
MixOperation 使用反射率來混和兩種顏色。使用反射率混合兩種顏色。

AddOperation 用于對(duì)兩種顏色進(jìn)行相加。

模板函數(shù)

THREE.NeverStencilFunc
THREE.LessStencilFunc
THREE.EqualStencilFunc
THREE.LessEqualStencilFunc
THREE.GreaterStencilFunc
THREE.NotEqualStencilFunc
THREE.GreaterEqualStencilFunc
THREE.AlwaysStencilFunc

材質(zhì)使用的模板函數(shù),用于決定是否執(zhí)行一項(xiàng)模板操作.

NeverStencilFunc 一定會(huì)返回true.

LessStencilFunc 當(dāng)模板基準(zhǔn)值比當(dāng)前模板值小的時(shí)候返回true.

EqualStencilFunc 當(dāng)模板基準(zhǔn)值和當(dāng)前模板值一樣的時(shí)候返回true.

LessEqualStencilFunc 當(dāng)模板基準(zhǔn)值小于等于當(dāng)前模板值的時(shí)候返回true.

GreaterStencilFunc 當(dāng)模板基準(zhǔn)值比當(dāng)前模板值大的時(shí)候返回true.

NotEqualStencilFunc 當(dāng)模板基準(zhǔn)值與當(dāng)前模板值不相等的時(shí)候返回true.

GreaterEqualStencilFunc 當(dāng)模板基準(zhǔn)值比當(dāng)前模板值大的時(shí)候返回true.

AlwaysStencilFunc 一定會(huì)返回true.

模板操作

THREE.ZeroStencilOp
THREE.KeepStencilOp
THREE.ReplaceStencilOp
THREE.IncrementStencilOp
THREE.DecrementStencilOp
THREE.IncrementWrapStencilOp
THREE.DecrementWrapStencilOp
THREE.InvertStencilOp

當(dāng)提供的模板函數(shù)通過的時(shí)候,材質(zhì)會(huì)在模板緩沖像素上執(zhí)行怎樣的模板操作.

ZeroStencilOp 將模板值設(shè)置為0。

KeepStencilOp 不會(huì)對(duì)模板值進(jìn)行任何操作。

ReplaceStencilOp 使用模板基準(zhǔn)值覆蓋模板值。

IncrementStencilOp 將當(dāng)前模板值加1。

DecrementStencilOp 將當(dāng)前模板值減1。

IncrementWrapStencilOp 將當(dāng)前模板值加1,如果這個(gè)值超過了255則會(huì)設(shè)置為0。

DecrementWrapStencilOp 將當(dāng)前模板值減1,如果這個(gè)值低于0則會(huì)設(shè)置為255

InvertStencilOp 將當(dāng)前模板值按位反轉(zhuǎn).

GLSL Version

THREE.GLSL1
THREE.GLSL3

源代碼

src/constants.js


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)