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