Skip to content

KBE3D / KBCore / Cesium / PerInstanceColorAppearance

类: PerInstanceColorAppearance

An appearance for GeometryInstance instances with color attributes. This allows several geometry instances, each with a different color, to be drawn with the same Primitive as shown in the second example below.

示例

ts
// A solid white line segment
const primitive = new Cesium.Primitive({
  geometryInstances : new Cesium.GeometryInstance({
    geometry : new Cesium.SimplePolylineGeometry({
      positions : Cesium.Cartesian3.fromDegreesArray([
        0.0, 0.0,
        5.0, 0.0
      ])
    }),
    attributes : {
      color : Cesium.ColorGeometryInstanceAttribute.fromColor(new Cesium.Color(1.0, 1.0, 1.0, 1.0))
    }
  }),
  appearance : new Cesium.PerInstanceColorAppearance({
    flat : true,
    translucent : false
  })
});

// Two rectangles in a primitive, each with a different color
const instance = new Cesium.GeometryInstance({
  geometry : new Cesium.RectangleGeometry({
    rectangle : Cesium.Rectangle.fromDegrees(0.0, 20.0, 10.0, 30.0)
  }),
  attributes : {
    color : new Cesium.ColorGeometryInstanceAttribute(1.0, 0.0, 0.0, 0.5)
  }
});

const anotherInstance = new Cesium.GeometryInstance({
  geometry : new Cesium.RectangleGeometry({
    rectangle : Cesium.Rectangle.fromDegrees(0.0, 40.0, 10.0, 50.0)
  }),
  attributes : {
    color : new Cesium.ColorGeometryInstanceAttribute(0.0, 0.0, 1.0, 0.5)
  }
});

const rectanglePrimitive = new Cesium.Primitive({
  geometryInstances : [instance, anotherInstance],
  appearance : new Cesium.PerInstanceColorAppearance()
});

参数

Object with the following properties:

参数

When <code>true</code>, flat shading is used in the fragment shader, which means lighting is not taking into account.

参数

When <code>true</code>, the fragment shader flips the surface normal as needed to ensure that the normal faces the viewer to avoid dark spots. This is useful when both sides of a geometry should be shaded like WallGeometry.

参数

When <code>true</code>, the geometry is expected to appear translucent so PerInstanceColorAppearance#renderState has alpha blending enabled.

参数

When <code>true</code>, the geometry is expected to be closed so PerInstanceColorAppearance#renderState has backface culling enabled.

参数

Optional GLSL vertex shader source to override the default vertex shader.

参数

Optional GLSL fragment shader source to override the default fragment shader.

参数

Optional render state to override the default render state.

属性

VERTEX_FORMAT

readonly static VERTEX_FORMAT: VertexFormat

The VertexFormat that all PerInstanceColorAppearance instances are compatible with. This requires only <code>position</code> and <code>normal</code> attributes.


FLAT_VERTEX_FORMAT

readonly static FLAT_VERTEX_FORMAT: VertexFormat

The VertexFormat that all PerInstanceColorAppearance instances are compatible with when PerInstanceColorAppearance#flat is <code>true</code>. This requires only a <code>position</code> attribute.


material

material: Material

This property is part of the Appearance interface, but is not used by PerInstanceColorAppearance since a fully custom fragment shader is used.


translucent

translucent: boolean

When <code>true</code>, the geometry is expected to appear translucent so PerInstanceColorAppearance#renderState has alpha blending enabled.


vertexShaderSource

readonly vertexShaderSource: string

The GLSL source code for the vertex shader.


fragmentShaderSource

readonly fragmentShaderSource: string

The GLSL source code for the fragment shader.


renderState

readonly renderState: any

The WebGL fixed-function state to use when rendering the geometry. <p> The render state can be explicitly defined when constructing a PerInstanceColorAppearance instance, or it is set implicitly via PerInstanceColorAppearance#translucent and PerInstanceColorAppearance#closed. </p>


closed

readonly closed: boolean

When <code>true</code>, the geometry is expected to be closed so PerInstanceColorAppearance#renderState has backface culling enabled. If the viewer enters the geometry, it will not be visible.


vertexFormat

readonly vertexFormat: VertexFormat

The VertexFormat that this appearance instance is compatible with. A geometry can have more vertex attributes and still be compatible - at a potential performance cost - but it can't have less.


flat

readonly flat: boolean

When <code>true</code>, flat shading is used in the fragment shader, which means lighting is not taking into account.


faceForward

readonly faceForward: boolean

When <code>true</code>, the fragment shader flips the surface normal as needed to ensure that the normal faces the viewer to avoid dark spots. This is useful when both sides of a geometry should be shaded like WallGeometry.

方法

getFragmentShaderSource()

getFragmentShaderSource(): string

Procedurally creates the full GLSL fragment shader source. For PerInstanceColorAppearance, this is derived from PerInstanceColorAppearance#fragmentShaderSource, PerInstanceColorAppearance#flat, and PerInstanceColorAppearance#faceForward.

返回

string

The full GLSL fragment shader source.


isTranslucent()

isTranslucent(): boolean

Determines if the geometry is translucent based on PerInstanceColorAppearance#translucent.

返回

boolean

true if the appearance is translucent.


getRenderState()

getRenderState(): any

Creates a render state. This is not the final render state instance; instead, it can contain a subset of render state properties identical to the render state created in the context.

返回

any

The render state.

构造函数

构造函数

new PerInstanceColorAppearance(options?: { flat?: boolean; faceForward?: boolean; translucent?: boolean; closed?: boolean; vertexShaderSource?: string; fragmentShaderSource?: string; renderState?: any; }): PerInstanceColorAppearance

参数

options?
flat?

boolean

faceForward?

boolean

translucent?

boolean

closed?

boolean

vertexShaderSource?

string

fragmentShaderSource?

string

renderState?

any

返回

PerInstanceColorAppearance

KBE3D @3.0.0 Copyright © 2024-present KBE3D