wonder.js
Version:
76 lines (68 loc) • 5.04 kB
JavaScript
;
var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js");
var AllGLSLLocationService$Wonderjs = require("../../service/record/all/location/AllGLSLLocationService.js");
var AllDeviceManagerService$Wonderjs = require("../../service/record/all/device/AllDeviceManagerService.js");
var UseProgramRenderService$Wonderjs = require("../../service/state/render/program/UseProgramRenderService.js");
var OperateCameraRenderService$Wonderjs = require("../../service/state/render/camera/OperateCameraRenderService.js");
var HandleUniformShaderCachableService$Wonderjs = require("../../service/record/all/sender/uniform/HandleUniformShaderCachableService.js");
var HandleUniformShaderNoCachableService$Wonderjs = require("../../service/record/all/sender/uniform/HandleUniformShaderNoCachableService.js");
var CreateGetRenederDataSubStateRenderService$Wonderjs = require("../../service/state/render/sub/get_render_data/CreateGetRenederDataSubStateRenderService.js");
var CreateSendRenederDataSubStateRenderService$Wonderjs = require("../../service/state/render/sub/send_render_data/CreateSendRenederDataSubStateRenderService.js");
var HandleUniformShaderCachableFunctionService$Wonderjs = require("../../service/record/all/sender/uniform/HandleUniformShaderCachableFunctionService.js");
var _useProgram = UseProgramRenderService$Wonderjs.useByShaderIndex;
function _sendNoCachableData(gl, renderState) {
return HandleUniformShaderNoCachableService$Wonderjs.reduceiValidShaderSendNoCachableData(renderState[/* glslSenderRecord */3], (function (renderState, dataArr, shaderIndex) {
var renderState$1 = UseProgramRenderService$Wonderjs.useByShaderIndex(gl, shaderIndex, renderState);
ArrayService$WonderCommonlib.reduceOneParam((function (getRenderDataSubState, param) {
var pos = param[/* pos */0];
var match = AllGLSLLocationService$Wonderjs.isUniformLocationExist(pos);
if (match) {
param[/* sendDataFunc */2](gl, pos, param[/* getDataFunc */1](getRenderDataSubState));
}
return getRenderDataSubState;
}), CreateGetRenederDataSubStateRenderService$Wonderjs.createState(renderState$1), dataArr);
return renderState$1;
}), renderState);
}
function _sendCachableData(gl, renderState) {
return HandleUniformShaderCachableService$Wonderjs.reduceiValidShaderSendCachableData(renderState[/* glslSenderRecord */3], (function (renderState, dataArr, shaderIndex) {
var renderState$1 = UseProgramRenderService$Wonderjs.useByShaderIndex(gl, shaderIndex, renderState);
ArrayService$WonderCommonlib.reduceOneParam((function (getRenderDataSubState, param) {
param[/* sendDataFunc */4](gl, param[/* shaderCacheMap */0], /* tuple */[
param[/* name */1],
param[/* pos */2]
], param[/* getDataFunc */3](getRenderDataSubState));
return getRenderDataSubState;
}), CreateGetRenederDataSubStateRenderService$Wonderjs.createState(renderState$1), dataArr);
return renderState$1;
}), renderState);
}
function _sendCachableFunctionData(gl, renderState) {
return HandleUniformShaderCachableFunctionService$Wonderjs.reduceiValidShaderSendCachableFunctionData(renderState[/* glslSenderRecord */3], (function (renderState, dataArr, shaderIndex) {
var renderState$1 = UseProgramRenderService$Wonderjs.useByShaderIndex(gl, shaderIndex, renderState);
ArrayService$WonderCommonlib.reduceOneParam((function (sendRenderDataSubState, param) {
param[/* sendCachableFunctionDataFunc */3](gl, /* tuple */[
param[/* program */0],
param[/* shaderCacheMap */1],
param[/* locationMap */2]
], sendRenderDataSubState);
return sendRenderDataSubState;
}), CreateSendRenederDataSubStateRenderService$Wonderjs.createState(renderState$1), dataArr);
return renderState$1;
}), renderState);
}
function execJob(renderState) {
var match = !OperateCameraRenderService$Wonderjs.hasCameraRecord(renderState);
if (match) {
return renderState;
} else {
var gl = AllDeviceManagerService$Wonderjs.unsafeGetGl(renderState[/* deviceManagerRecord */20]);
return _sendCachableFunctionData(gl, _sendCachableData(gl, _sendNoCachableData(gl, renderState)));
}
}
exports._useProgram = _useProgram;
exports._sendNoCachableData = _sendNoCachableData;
exports._sendCachableData = _sendCachableData;
exports._sendCachableFunctionData = _sendCachableFunctionData;
exports.execJob = execJob;
/* AllDeviceManagerService-Wonderjs Not a pure module */