@awayjs/renderer
Version:
Renderer for AwayJS
55 lines (54 loc) • 2.34 kB
JavaScript
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 };