wonder.js
Version:
57 lines (52 loc) • 3.7 kB
JavaScript
'use strict';
var RenderJobUtils$Wonderjs = require("./RenderJobUtils.js");
var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js");
var ShaderIndexRenderService$Wonderjs = require("../../../service/state/render/shader/ShaderIndexRenderService.js");
var FrontRenderLightJobCommon$Wonderjs = require("../../common/front_render_light/FrontRenderLightJobCommon.js");
var DrawModeMeshRendererService$Wonderjs = require("../../../service/state/render/meshRenderer/DrawModeMeshRendererService.js");
var OperateAllTextureRenderService$Wonderjs = require("../../../service/state/render/texture/allTexture/OperateAllTextureRenderService.js");
var FrontRenderLightInstanceJobCommon$Wonderjs = require("../../common/front_render_light/instance/FrontRenderLightInstanceJobCommon.js");
var RenderObjectBufferTypeArrayService$Wonderjs = require("../../../service/record/main/render/RenderObjectBufferTypeArrayService.js");
var ShaderIndexLightMaterialRenderService$Wonderjs = require("../../../service/state/render/material/light/ShaderIndexLightMaterialRenderService.js");
function _getShaderIndex(materialIndex, state) {
return ShaderIndexRenderService$Wonderjs.getShaderIndex(materialIndex, ShaderIndexLightMaterialRenderService$Wonderjs.getShaderIndex, state);
}
function render(gl, param, state) {
var sourceInstanceIndices = param[5];
var geometryIndices = param[4];
var meshRendererIndices = param[3];
var materialIndices = param[2];
var transformIndices = param[1];
return ArrayService$WonderCommonlib.reduceOneParam((function (state, index) {
var state$1 = OperateAllTextureRenderService$Wonderjs.resetActivedTextureUnitIndex(state);
var transformIndex = RenderObjectBufferTypeArrayService$Wonderjs.getComponent(index, transformIndices);
var materialIndex = RenderObjectBufferTypeArrayService$Wonderjs.getComponent(index, materialIndices);
var shaderIndex = ShaderIndexRenderService$Wonderjs.getShaderIndex(materialIndex, ShaderIndexLightMaterialRenderService$Wonderjs.getShaderIndex, state$1);
var meshRendererIndex = RenderObjectBufferTypeArrayService$Wonderjs.getComponent(index, meshRendererIndices);
var geometryIndex = RenderObjectBufferTypeArrayService$Wonderjs.getComponent(index, geometryIndices);
var sourceInstance = RenderObjectBufferTypeArrayService$Wonderjs.getComponent(index, sourceInstanceIndices);
if (RenderObjectBufferTypeArrayService$Wonderjs.hasSourceInstance(sourceInstance)) {
return FrontRenderLightInstanceJobCommon$Wonderjs.render(gl, /* tuple */[
transformIndex,
materialIndex,
shaderIndex,
meshRendererIndex,
geometryIndex,
sourceInstance
], state$1);
} else {
var state$2 = FrontRenderLightJobCommon$Wonderjs.render(gl, /* tuple */[
transformIndex,
materialIndex,
shaderIndex,
meshRendererIndex,
geometryIndex
], state$1);
RenderJobUtils$Wonderjs.draw(gl, DrawModeMeshRendererService$Wonderjs.getGlDrawMode(gl, meshRendererIndex, state$2), geometryIndex, state$2);
return state$2;
}
}), state, param[0]);
}
exports._getShaderIndex = _getShaderIndex;
exports.render = render;
/* RenderJobUtils-Wonderjs Not a pure module */