UNPKG

wonder.js

Version:
371 lines (368 loc) 72.4 kB
'use strict'; var Curry = require("bs-platform/lib/js/curry.js"); var Sinon = require("wonder-bs-sinon/lib/js/src/sinon.js"); var Sinon$1 = require("sinon"); var Caml_array = require("bs-platform/lib/js/caml_array.js"); var Caml_option = require("bs-platform/lib/js/caml_option.js"); var Wonder_jest = require("wonder-bs-jest/lib/js/src/wonder_jest.js"); var GLSLTool$Wonderjs = require("../../../../tool/render/core/GLSLTool.js"); var FakeGlTool$Wonderjs = require("../../../../tool/gl/FakeGlTool.js"); var SettingTool$Wonderjs = require("../../../../tool/service/setting/SettingTool.js"); var InstanceTool$Wonderjs = require("../../../../tool/service/instance/InstanceTool.js"); var MainStateTool$Wonderjs = require("../../../../tool/service/state/MainStateTool.js"); var PointLightAPI$Wonderjs = require("../../../../../src/api/light/PointLightAPI.js"); var PointLightTool$Wonderjs = require("../../../../tool/service/light/PointLightTool.js"); var GLSLLocationTool$Wonderjs = require("../../../../tool/service/location/GLSLLocationTool.js"); var InitMaterialTool$Wonderjs = require("../../../../tool/job/no_worker/init/InitMaterialTool.js"); var DirectionLightAPI$Wonderjs = require("../../../../../src/api/light/DirectionLightAPI.js"); var DirectionLightTool$Wonderjs = require("../../../../tool/service/light/DirectionLightTool.js"); var InitMaterialJobTool$Wonderjs = require("../../../../tool/job/no_worker/init/InitMaterialJobTool.js"); var NoWorkerJobConfigTool$Wonderjs = require("../../../../tool/service/noWorkerJob/NoWorkerJobConfigTool.js"); var InitLightMaterialJobTool$Wonderjs = require("../../../../tool/job/no_worker/init/InitLightMaterialJobTool.js"); Wonder_jest.describe("test init light material job", (function (param) { var sandbox = Sinon.getSandboxDefaultVal(/* () */0); var state = /* record */[/* contents */MainStateTool$Wonderjs.createState(/* () */0)]; var _buildNoWorkerJobConfig = function (param) { return NoWorkerJobConfigTool$Wonderjs.buildNoWorkerJobConfig(undefined, "\n [\n {\n \"name\": \"default\",\n \"jobs\": [\n {\n \"name\": \"preget_glslData\"\n },\n {\n \"name\": \"init_light_material\"\n }\n ]\n }\n ]\n ", undefined, "\n[\n {\n \"name\": \"preget_glslData\"\n },\n {\n \"name\": \"init_light_material\"\n }\n]\n ", undefined, /* () */0); }; beforeEach((function () { sandbox[0] = Sinon$1.sandbox.create(); state[0] = InitLightMaterialJobTool$Wonderjs.initWithJobConfig(sandbox, _buildNoWorkerJobConfig(/* () */0)); return /* () */0; })); afterEach((function () { return Curry._1(Sinon.restoreSandbox, sandbox[0]); })); Wonder_jest.describe("test get attribute location", (function (param) { Wonder_jest.describe("test get a_position location", (function (param) { return Wonder_jest.test("test get location", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareGameObject(sandbox, state[0]); var getAttribLocation = GLSLLocationTool$Wonderjs.getAttribLocation(undefined, sandbox, "a_position"); var state$1 = FakeGlTool$Wonderjs.setFakeGl(FakeGlTool$Wonderjs.buildFakeGl(sandbox, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(getAttribLocation), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), match[0]); InitLightMaterialJobTool$Wonderjs.exec(state$1); return Sinon.toCalledOnce(Wonder_jest.Expect[/* expect */0](Sinon.withTwoArgs(Sinon$1.match.any, "a_position", getAttribLocation))); })); })); Wonder_jest.describe("test get a_texCoord location", (function (param) { return Wonder_jest.test("test get location", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareGameObjectWithCreatedMap(sandbox, state[0]); var getAttribLocation = GLSLLocationTool$Wonderjs.getAttribLocation(undefined, sandbox, "a_texCoord"); var state$1 = FakeGlTool$Wonderjs.setFakeGl(FakeGlTool$Wonderjs.buildFakeGl(sandbox, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(getAttribLocation), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), match[0]); InitLightMaterialJobTool$Wonderjs.exec(state$1); return Sinon.toCalledOnce(Wonder_jest.Expect[/* expect */0](Sinon.withTwoArgs(Sinon$1.match.any, "a_texCoord", getAttribLocation))); })); })); return Wonder_jest.describe("test get a_normal location", (function (param) { Wonder_jest.test("test get location", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareGameObject(sandbox, state[0]); var getAttribLocation = GLSLLocationTool$Wonderjs.getAttribLocation(undefined, sandbox, "a_normal"); var state$1 = FakeGlTool$Wonderjs.setFakeGl(FakeGlTool$Wonderjs.buildFakeGl(sandbox, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(getAttribLocation), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), match[0]); InitLightMaterialJobTool$Wonderjs.exec(state$1); return Sinon.toCalledOnce(Wonder_jest.Expect[/* expect */0](Sinon.withTwoArgs(Sinon$1.match.any, "a_normal", getAttribLocation))); })); return Wonder_jest.describe("test cache", (function (param) { return Wonder_jest.test("if cached, not query gl location", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareGameObject(sandbox, state[0]); var match$1 = InitLightMaterialJobTool$Wonderjs.prepareGameObject(sandbox, match[0]); var getAttribLocation = GLSLLocationTool$Wonderjs.getAttribLocation(undefined, sandbox, "a_normal"); var state$1 = FakeGlTool$Wonderjs.setFakeGl(FakeGlTool$Wonderjs.buildFakeGl(sandbox, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(getAttribLocation), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), match$1[0]); InitLightMaterialJobTool$Wonderjs.exec(state$1); return Sinon.toCalledOnce(Wonder_jest.Expect[/* expect */0](Sinon.withTwoArgs(Sinon$1.match.any, "a_normal", getAttribLocation))); })); })); })); })); Wonder_jest.describe("test get uniform location", (function (param) { var _testGetLocationWithPrepareGameObjectFunc = function (name, prepareGameObjectFunc) { return InitMaterialTool$Wonderjs.testGetLocation(sandbox, name, /* tuple */[ prepareGameObjectFunc, InitLightMaterialJobTool$Wonderjs.exec ], state); }; Wonder_jest.describe("test get u_normalMatrix location", (function (param) { Wonder_jest.test("test get location", (function (param) { return _testGetLocationWithPrepareGameObjectFunc("u_normalMatrix", InitLightMaterialJobTool$Wonderjs.prepareGameObject); })); return Wonder_jest.describe("test cache", (function (param) { return Wonder_jest.test("if cached, not query gl location", (function (param) { return InitMaterialTool$Wonderjs.testLocationCache(sandbox, "u_normalMatrix", /* tuple */[ InitLightMaterialJobTool$Wonderjs.prepareGameObject, InitLightMaterialJobTool$Wonderjs.exec ], state); })); })); })); Wonder_jest.test("test get u_mMatrix location", (function (param) { return _testGetLocationWithPrepareGameObjectFunc("u_mMatrix", InitLightMaterialJobTool$Wonderjs.prepareGameObject); })); Wonder_jest.test("test get u_cameraPos location", (function (param) { return _testGetLocationWithPrepareGameObjectFunc("u_cameraPos", InitLightMaterialJobTool$Wonderjs.prepareGameObject); })); Wonder_jest.test("test get u_diffuse location", (function (param) { return _testGetLocationWithPrepareGameObjectFunc("u_diffuse", InitLightMaterialJobTool$Wonderjs.prepareGameObject); })); Wonder_jest.test("test get u_specular location", (function (param) { return _testGetLocationWithPrepareGameObjectFunc("u_specular", InitLightMaterialJobTool$Wonderjs.prepareGameObject); })); Wonder_jest.test("test get u_shininess location", (function (param) { return _testGetLocationWithPrepareGameObjectFunc("u_shininess", InitLightMaterialJobTool$Wonderjs.prepareGameObject); })); Wonder_jest.test("test get u_diffuseMapSampler location", (function (param) { return _testGetLocationWithPrepareGameObjectFunc("u_diffuseMapSampler", InitLightMaterialJobTool$Wonderjs.prepareGameObjectWithCreatedMap); })); return Wonder_jest.test("test get u_specularMapSampler location", (function (param) { return _testGetLocationWithPrepareGameObjectFunc("u_specularMapSampler", InitLightMaterialJobTool$Wonderjs.prepareGameObjectWithCreatedMap); })); })); return Wonder_jest.describe("test glsl", (function (param) { Wonder_jest.test("glsl only set glPosition,glFragColor once", (function (param) { return InitMaterialTool$Wonderjs.testOnlySeGlPositionGlFragColorOnce(sandbox, (function (param, param$1) { return InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, param, param$1); }), state); })); return Wonder_jest.describe("test shader lib's glsl", (function (param) { Wonder_jest.test("test common shader lib's glsl", (function (param) { return InitMaterialTool$Wonderjs.testCommonShaderLibGlsl(sandbox, (function (param, param$1) { return InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, param, param$1); }), state); })); Wonder_jest.test("test vertex shader lib's glsl", (function (param) { return InitMaterialTool$Wonderjs.testVertexShaderLibGlsl(sandbox, (function (param, param$1) { return InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, param, param$1); }), state); })); Wonder_jest.test("test normal shader lib's glsl", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); return Wonder_jest.Expect[/* toContainString */11]("attribute vec3 a_normal;", Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.getVsSource(match[1]))); })); Wonder_jest.describe("test modelMatrix instance shader libs", (function (param) { return InitMaterialJobTool$Wonderjs.testModelMatrixInstanceShaderLibs(sandbox, /* tuple */[ (function (param, param$1) { return InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, param, param$1); }), (function (param, param$1) { return InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSLNotExec(InitLightMaterialJobTool$Wonderjs.prepareGameObject, param, param$1); }), InitLightMaterialJobTool$Wonderjs.exec ], state); })); Wonder_jest.describe("test normalMatrix instance shader libs", (function (param) { Wonder_jest.test("if has no sourceInstance component, use normalMatrix_noInstance shader lib", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getVsSource(match[1]), /* :: */[ "uniform mat3 u_normalMatrix;", /* :: */[ "mat3 normalMatrix = u_normalMatrix;", /* [] */0 ] ])), true); })); return Wonder_jest.describe("else", (function (param) { Wonder_jest.test("if support hardware instance, use normalMatrix_hardware_instance shader lib", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSLNotExec(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); var match$1 = InstanceTool$Wonderjs.addSourceInstance(match[2], match[0]); var state$1 = InstanceTool$Wonderjs.setGPUDetectDataAllowHardwareInstance(sandbox, match$1[0]); InitLightMaterialJobTool$Wonderjs.exec(state$1); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getVsSource(match[1]), /* :: */[ "attribute vec3 a_normalVec3_0;", /* :: */[ "attribute vec3 a_normalVec3_1;", /* :: */[ "attribute vec3 a_normalVec3_2;", /* :: */[ "mat3 normalMatrix = mat3(a_normalVec3_0, a_normalVec3_1, a_normalVec3_2);", /* [] */0 ] ] ] ])), true); })); return Wonder_jest.describe("else, use normalMatrix_batch_instance shader lib", (function (param) { var _setGPUDetectDataAllowBatchInstance = function (state) { var newrecord = Caml_array.caml_array_dup(state); var init = state[/* gpuDetectRecord */5]; newrecord[/* gpuDetectRecord */5] = /* record */[ /* extensionInstancedArrays */undefined, /* extensionElementIndexUint */init[/* extensionElementIndexUint */1], /* precision */init[/* precision */2], /* maxTextureUnit */init[/* maxTextureUnit */3] ]; return newrecord; }; Wonder_jest.test("if state->gpuConfig->useHardwareInstance == false, use batch", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSLNotExec(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); var match$1 = InstanceTool$Wonderjs.addSourceInstance(match[2], match[0]); var state$1 = SettingTool$Wonderjs.setGPU(/* record */[/* useHardwareInstance */false], match$1[0]); InitLightMaterialJobTool$Wonderjs.exec(state$1); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getVsSource(match[1]), /* :: */[ "uniform mat3 u_normalMatrix;", /* :: */[ "mat3 normalMatrix = u_normalMatrix;", /* [] */0 ] ])), true); })); return Wonder_jest.test("if gpu not support hardware instance, use batch", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSLNotExec(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); var match$1 = InstanceTool$Wonderjs.addSourceInstance(match[2], match[0]); var state$1 = _setGPUDetectDataAllowBatchInstance(match$1[0]); var state$2 = InstanceTool$Wonderjs.setGPUDetectDataAllowBatchInstance(state$1); InitLightMaterialJobTool$Wonderjs.exec(state$2); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getVsSource(match[1]), /* :: */[ "uniform mat3 u_normalMatrix;", /* :: */[ "mat3 normalMatrix = u_normalMatrix;", /* [] */0 ] ])), true); })); })); })); })); Wonder_jest.describe("test light_common shader lib's glsl", (function (param) { Wonder_jest.test("test vs glsl", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getVsSource(match[1]), /* :: */[ "\nvarying vec3 v_worldPosition;\n\n#if POINT_LIGHTS_COUNT > 0\nstruct PointLight {\n vec3 position;\n vec3 color;\n float intensity;\n\n float range;\n float constant;\n float linear;\n float quadratic;\n};\nuniform PointLight u_pointLights[POINT_LIGHTS_COUNT];\n\n#endif\n\n\n#if DIRECTION_LIGHTS_COUNT > 0\nstruct DirectionLight {\n vec3 direction;\n\n float intensity;\n\n vec3 color;\n};\nuniform DirectionLight u_directionLights[DIRECTION_LIGHTS_COUNT];\n#endif\n", /* :: */[ "\nvec3 getDirectionLightDir(vec3 lightDirection);\nvec3 getPointLightDirByLightPos(vec3 lightPos);\nvec3 getPointLightDirByLightPos(vec3 lightPos, vec3 worldPosition);\n ", /* :: */[ "\nvec3 getDirectionLightDir(vec3 lightDirection){\n lightDirection = normalize(lightDirection);\n\n return -lightDirection;\n}\nvec3 getPointLightDirByLightPos(vec3 lightPos){\n return lightPos - v_worldPosition;\n}\nvec3 getPointLightDirByLightPos(vec3 lightPos, vec3 worldPosition){\n return lightPos - worldPosition;\n}\n ", /* [] */0 ] ] ])), true); })); return Wonder_jest.test("test fs glsl", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getFsSource(match[1]), /* :: */[ "\nvarying vec3 v_worldPosition;\n\n#if POINT_LIGHTS_COUNT > 0\nstruct PointLight {\n vec3 position;\n vec3 color;\n float intensity;\n\n float range;\n float constant;\n float linear;\n float quadratic;\n};\nuniform PointLight u_pointLights[POINT_LIGHTS_COUNT];\n\n#endif\n\n\n#if DIRECTION_LIGHTS_COUNT > 0\nstruct DirectionLight {\n vec3 direction;\n\n float intensity;\n\n vec3 color;\n};\nuniform DirectionLight u_directionLights[DIRECTION_LIGHTS_COUNT];\n#endif\n", /* :: */[ "\nvec3 getDirectionLightDir(vec3 lightDirection);\nvec3 getPointLightDirByLightPos(vec3 lightPos);\nvec3 getPointLightDirByLightPos(vec3 lightPos, vec3 worldPosition);\n ", /* :: */[ "\nvec3 getDirectionLightDir(vec3 lightDirection){\n lightDirection = normalize(lightDirection);\n\n return -lightDirection;\n}\nvec3 getPointLightDirByLightPos(vec3 lightPos){\n return lightPos - v_worldPosition;\n}\nvec3 getPointLightDirByLightPos(vec3 lightPos, vec3 worldPosition){\n return lightPos - worldPosition;\n}\n ", /* [] */0 ] ] ])), true); })); })); Wonder_jest.test("test light_setWorldPosition shader lib", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getVsSource(match[1]), /* :: */[ "v_worldPosition = vec3(mMatrix * vec4(a_position, 1.0));", /* [] */0 ])), true); })); Wonder_jest.describe("test map shader lib", (function (param) { Wonder_jest.describe("test diffuse map shader lib", (function (param) { Wonder_jest.describe("if has map", (function (param) { Wonder_jest.test("test vs glsl", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObjectWithCreatedMap, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getVsSource(match[1]), /* :: */[ "varying vec2 v_diffuseMapTexCoord;", /* :: */[ "v_diffuseMapTexCoord = a_texCoord;", /* [] */0 ] ])), true); })); return Wonder_jest.describe("test fs glsl", (function (param) { Wonder_jest.test("test", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObjectWithCreatedMap, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getFsSource(match[1]), /* :: */[ "uniform sampler2D u_diffuseMapSampler;", /* :: */[ "uniform vec3 u_diffuse;", /* :: */[ "varying vec2 v_diffuseMapTexCoord;", /* :: */[ "vec4 getMaterialDiffuse() {\n vec4 texelColor = texture2D(u_diffuseMapSampler, v_diffuseMapTexCoord);\n\n return vec4(texelColor.rgb * u_diffuse, texelColor.a);\n }", /* [] */0 ] ] ] ])), true); })); return Wonder_jest.test("should contain u_diffuse only once", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObjectWithCreatedMap, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containSpecifyCount(GLSLTool$Wonderjs.getFsSource(match[1]), "uniform vec3 u_diffuse;", 1, /* () */0)), true); })); })); })); return Wonder_jest.describe("else", (function (param) { return Wonder_jest.test("test fs glsl", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getFsSource(match[1]), /* :: */[ "uniform vec3 u_diffuse;", /* :: */[ "\n vec4 getMaterialDiffuse() {\n return vec4(u_diffuse, 1.0);\n }\n ", /* [] */0 ] ])), true); })); })); })); Wonder_jest.describe("test specular map shader lib", (function (param) { Wonder_jest.describe("if has map", (function (param) { Wonder_jest.test("test vs glsl", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObjectWithCreatedMap, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getVsSource(match[1]), /* :: */[ "varying vec2 v_specularMapTexCoord;", /* :: */[ "v_specularMapTexCoord = a_texCoord;", /* [] */0 ] ])), true); })); return Wonder_jest.test("test fs glsl", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObjectWithCreatedMap, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getFsSource(match[1]), /* :: */[ "uniform sampler2D u_specularMapSampler;", /* :: */[ "varying vec2 v_specularMapTexCoord;", /* :: */[ "float getSpecularStrength() {\n return texture2D(u_specularMapSampler, v_specularMapTexCoord).r;\n }", /* [] */0 ] ] ])), true); })); })); return Wonder_jest.describe("else", (function (param) { return Wonder_jest.test("test fs glsl", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getFsSource(match[1]), /* :: */[ "float getSpecularStrength() {\n return 1.0;\n }", /* [] */0 ])), true); })); })); })); Wonder_jest.test("test no_light_map shader lib", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getFsSource(match[1]), /* :: */[ "\n vec3 getMaterialLight() {\n return vec3(0.0);\n }\n ", /* [] */0 ])), true); })); Wonder_jest.test("test no_emission_map shader lib", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getFsSource(match[1]), /* :: */[ "\n vec3 getMaterialEmission() {\n return vec3(0.0);\n }\n ", /* [] */0 ])), true); })); Wonder_jest.describe("test no_normal_map shader lib", (function (param) { Wonder_jest.test("test vs glsl", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getVsSource(match[1]), /* :: */[ "varying vec3 v_normal;", /* :: */[ "v_normal = normalize(normalMatrix * a_normal);", /* [] */0 ] ])), true); })); return Wonder_jest.test("test fs glsl", (function (param) { var match = InitLightMaterialJobTool$Wonderjs.prepareForJudgeGLSL(InitLightMaterialJobTool$Wonderjs.prepareGameObject, sandbox, state[0]);