支持材質(zhì)著色的任意幾何圖形(例如,與
new MaterialAppearance(options)
EllipsoidSurfaceAppearance
相反)的外觀。
Parameters:
options
(Object)
Name | Description |
---|---|
options.flat
Boolean
default false
|
當(dāng)true 時,片段著色中使用平面著色,這意味著不考慮照明。
|
options.faceForward
Boolean
default !options.closed
|
當(dāng)true 時,片段明暗器會根據(jù)需要翻轉(zhuǎn)曲面法線,以確保法線面向查看器以避免出現(xiàn)黑點。當(dāng)幾何圖形的兩邊都應(yīng)該像WallGeometry 那樣加陰影時,這很有用。
|
options.translucent
Boolean
default true
|
當(dāng)true 時,幾何體將顯示為半透明,因此MaterialAppearance#renderState 啟用了alpha混合。
|
options.closed
Boolean
default false
|
當(dāng)true 時,幾何圖形將關(guān)閉,因此MaterialAppearance#renderState 啟用背面剔除。
|
options.materialSupport
MaterialAppearance.MaterialSupport
default MaterialAppearance.MaterialSupport.TEXTURED
|
將要支持的材料類型。 |
options.material
Material
default Material.ColorType
|
用于確定片段顏色的材質(zhì)。 |
options.vertexShaderSource
String
|
可選的glsl頂點明暗器源覆蓋默認(rèn)的頂點明暗器。 |
options.fragmentShaderSource
String
|
可選的glsl fragment shader source覆蓋默認(rèn)的fragment shader。 |
options.renderState
RenderState
|
可選的渲染狀態(tài)以覆蓋默認(rèn)的渲染狀態(tài)。 |
Example
var primitive = new bmgl.Primitive({
geometryInstances : new bmgl.GeometryInstance({
geometry : new bmgl.WallGeometry({
materialSupport : bmgl.MaterialAppearance.MaterialSupport.BASIC.vertexFormat,
// ...
})
}),
appearance : new bmgl.MaterialAppearance({
material : bmgl.Material.fromType('Color'),
faceForward : true
})
});
Members
(readonly) closed : Boolean
當(dāng)
true
時,幾何圖形將關(guān)閉,因此MaterialAppearance#renderState
啟用背面剔除。如果查看器進(jìn)入幾何圖形,它將不可見。
-
Default Value:
false
(readonly) faceForward : Boolean
當(dāng)
true
時,片段明暗器會根據(jù)需要翻轉(zhuǎn)曲面法線,以確保法線面向查看器以避免出現(xiàn)黑點。當(dāng)幾何圖形的兩邊都應(yīng)該像WallGeometry
那樣加陰影時,這很有用。
-
Default Value:
true
(readonly) flat : Boolean
當(dāng)
true
時,片段著色中使用平面著色,這意味著不考慮照明。
-
Default Value:
false
(readonly) fragmentShaderSource : String
片段明暗器的glsl源代碼。完整片段明暗器源按程序構(gòu)建,考慮到
MaterialAppearance#material
、MaterialAppearance#flat
和MaterialAppearance#faceForward
。使用MaterialAppearance#getFragmentShaderSource
獲取完整源。
material : Material
用于確定片段顏色的材質(zhì)。與其他
MaterialAppearance
屬性不同,這不是只讀的,因此外觀的材質(zhì)可以隨時更改。
-
Default Value:
Material.ColorType
(readonly) materialSupport : MaterialAppearance.MaterialSupport
此實例支持的材料類型。這會影響所需的
VertexFormat
以及頂點和片段明暗器的復(fù)雜性。
-
Default Value:
MaterialAppearance.MaterialSupport.TEXTURED
(readonly) renderState : Object
呈現(xiàn)幾何圖形時要使用的WebGL固定函數(shù)狀態(tài)。
在構(gòu)造MaterialAppearance
實例時,可以顯式定義呈現(xiàn)狀態(tài),也可以通過MaterialAppearance#translucent
和MaterialAppearance#closed
隱式設(shè)置呈現(xiàn)狀態(tài)。
translucent : Boolean
當(dāng)
true
時,幾何體將顯示為半透明。
-
Default Value:
true
(readonly) vertexFormat : VertexFormat
此外觀實例與之兼容的
VertexFormat
。幾何體可以有更多的頂點屬性,并且仍然是兼容的(以潛在的性能代價),但是它不能有更少的頂點屬性。
-
Default Value:
MaterialAppearance.MaterialSupport.TEXTURED.vertexFormat
(readonly) vertexShaderSource : String
頂點明暗器的glsl源代碼。
Methods
getFragmentShaderSource() → {String}
程序創(chuàng)建完整的glsl片段明暗器源。對于
MaterialAppearance
,這是從MaterialAppearance#fragmentShaderSource
、MaterialAppearance#material
、MaterialAppearance#flat
和MaterialAppearance#faceForward
導(dǎo)出的。
創(chuàng)建渲染狀態(tài)。這不是最終的渲染狀態(tài)實例;相反,它可以包含與上下文中創(chuàng)建的渲染狀態(tài)相同的渲染狀態(tài)屬性的子集。
確定幾何圖形是否基于
MaterialAppearance#translucent
和Material#isTranslucent
半透明。