UNPKG

@awayjs/renderer

Version:
55 lines (54 loc) 2.34 kB
import { __extends } from "tslib"; import { BlendMode, ContextGLCompareMode } from '@awayjs/stage'; import { ShaderBase } from './ShaderBase'; import { _Render_MaterialPassBase } from './_Render_MaterialPassBase'; var _Render_RendererMaterial = /** @class */ (function (_super) { __extends(_Render_RendererMaterial, _super); function _Render_RendererMaterial() { return _super !== null && _super.apply(this, arguments) || this; } _Render_RendererMaterial.prototype.init = function (material, renderElements) { _super.prototype.init.call(this, material, renderElements); this._shader = new ShaderBase(renderElements, this, this, this._stage); this._texture = this._shader.abstractions.getAbstraction(material.texture); this._pAddPass(this); }; _Render_RendererMaterial.prototype.onClear = function () { _super.prototype.onClear.call(this); this._texture = null; }; /** * @inheritDoc */ _Render_RendererMaterial.prototype._pUpdateRender = function () { _super.prototype._pUpdateRender.call(this); var material = this.material; material.render(); this.requiresBlending = true; this.shader.setBlendMode((material.blendMode == BlendMode.NORMAL) ? BlendMode.LAYER : material.blendMode); }; _Render_RendererMaterial.prototype._includeDependencies = function (shader) { _super.prototype._includeDependencies.call(this, shader); shader.uvDependencies++; }; /** * @inheritDoc */ _Render_RendererMaterial.prototype._getFragmentCode = function (regCache, sharedReg) { return this._texture._getFragmentCode(sharedReg.shadedTarget, regCache, sharedReg, sharedReg.uvVarying); }; _Render_RendererMaterial.prototype._setRenderState = function (renderable) { _super.prototype._setRenderState.call(this, renderable); this._texture._setRenderState(renderable); }; /** * @inheritDoc */ _Render_RendererMaterial.prototype._activate = function () { _super.prototype._activate.call(this); this._stage.context.setDepthTest(false, ContextGLCompareMode.LESS_EQUAL); this._texture.activate(); }; return _Render_RendererMaterial; }(_Render_MaterialPassBase)); export { _Render_RendererMaterial };