@awayjs/renderer
Version:
Renderer for AwayJS
46 lines (37 loc) • 1.3 kB
text/typescript
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 DepthRenderer class renders 32-bit depth information encoded as RGBA
*
* @class away.render.DepthRenderer
*/
export class DepthRenderer extends RendererBase {
public static assetType: string = '[renderer DepthRenderer]';
/**
* Creates a new DepthRenderer 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(DepthRenderer).registerMaterial(renderMaterialClass, materialClass);
}
}