UNPKG

@awayjs/renderer

Version:
47 lines (37 loc) 1.32 kB
import { INode } from '@awayjs/view'; import { RenderGroup } from './RenderGroup'; import { RendererBase } from './RendererBase'; import { _IRender_MaterialClass } from './base/_IRender_MaterialClass'; import { IAssetClass } from '@awayjs/core'; import { CacheRenderer } from './CacheRenderer'; import { DefaultRenderer } from './DefaultRenderer'; /** * The DistanceRenderer class renders 32-bit depth information encoded as RGBA * * @class away.render.DistanceRenderer */ export class DistanceRenderer extends RendererBase { public static assetType: string = '[renderer DistanceRenderer]'; /** * Creates a new DistanceRenderer object. */ constructor() { super(); this._traverserGroup = RenderGroup.getInstance(CacheRenderer); this._maskGroup = RenderGroup.getInstance(DefaultRenderer); } /** * */ public enterNode(node: INode): boolean { const enter: boolean = node._collectionMark != RendererBase._collectionMark && node.isCastingShadow(); if (!enter) { node._collectionMark = RendererBase._collectionMark; return false; } return super.enterNode(node); } public static registerMaterial(renderMaterialClass: _IRender_MaterialClass, materialClass: IAssetClass): void { RenderGroup.getInstance(DistanceRenderer).registerMaterial(renderMaterialClass, materialClass); } }