import ClayNode, { ClayNodeOpts } from './Node'; import BoundingBox from './math/BoundingBox'; import type Material from './Material'; import type Geometry from './Geometry'; import { GLEnum } from './core/type'; export interface RenderableOpts extends ClayNodeOpts { mode: number; /** * Group of received light. */ lightGroup: number; /** * Render order, Nodes with smaller value renders before nodes with larger values. */ renderOrder: number; /** * Used when mode is LINES, LINE_STRIP or LINE_LOOP */ lineWidth?: number; /** * If enable culling */ culling: boolean; /** * Specify which side of polygon will be culled. * Possible values: * + {@link clay.constants.BACK} * + {@link clay.constants.FRONT} * + {@link clay.constants.FRONT_AND_BACK} * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/cullFace */ cullFace: GLEnum; /** * Specify which side is front face. * Possible values: * + {@link clay.constants.CW} * + {@link clay.constants.CCW} * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/frontFace */ frontFace: GLEnum; /** * If enable software frustum culling */ frustumCulling: boolean; /** * If cast shadow */ castShadow: boolean; /** * If receive shadow */ receiveShadow: boolean; /** * If ignore picking */ ignorePicking: boolean; /** * If Ignore prez */ ignorePreZ: boolean; } interface Renderable extends RenderableOpts { } declare class Renderable extends ClayNode { geometry: Geometry; material: T; /** * Bounding box of renderable */ boundingBox?: BoundingBox; /** * Customized shadow depth material */ shadowDepthMaterial?: Material; __depth: number; constructor(geometry: Geometry, material: T, opts?: Partial); /** * @return {boolean} */ isRenderable(): this is Renderable; /** * Before render hook */ beforeRender(): void; /** * Before render hook */ afterRender(): void; /** * Clone a new renderable * @function * @return {clay.Renderable} */ clone(): Renderable, import("./Shader").FragmentShader>>>; } export default Renderable;