import { _shadersLightingStageFS, LightingModel, LightingPipelineStage, ModelLightingOptions, ShaderBuilder, } from "../../../Source/Cesium.js"; describe("Scene/ModelExperimental/LightingPipelineStage", function () { var mockPrimitive = {}; var optionsUnlit = new ModelLightingOptions(); optionsUnlit.lightingModel = LightingModel.UNLIT; it("supports unlit lighting", function () { var shaderBuilder = new ShaderBuilder(); var renderResources = { shaderBuilder: shaderBuilder, lightingOptions: optionsUnlit, }; LightingPipelineStage.process(renderResources, mockPrimitive); expect(shaderBuilder._vertexShaderParts.defineLines).toEqual([]); expect(shaderBuilder._fragmentShaderParts.defineLines).toEqual([ "LIGHTING_UNLIT", ]); }); it("supports PBR lighting", function () { var optionsPbr = new ModelLightingOptions(); optionsPbr.lightingModel = LightingModel.PBR; var shaderBuilder = new ShaderBuilder(); var renderResources = { shaderBuilder: shaderBuilder, lightingOptions: optionsPbr, }; LightingPipelineStage.process(renderResources, mockPrimitive); expect(shaderBuilder._vertexShaderParts.defineLines).toEqual([]); expect(shaderBuilder._fragmentShaderParts.defineLines).toEqual([ "LIGHTING_PBR", ]); }); it("adds the lighting shader function to the shader", function () { var shaderBuilder = new ShaderBuilder(); var renderResources = { shaderBuilder: shaderBuilder, lightingOptions: optionsUnlit, }; LightingPipelineStage.process(renderResources, mockPrimitive); expect(shaderBuilder._vertexShaderParts.shaderLines).toEqual([]); expect(shaderBuilder._fragmentShaderParts.shaderLines).toEqual([ _shadersLightingStageFS, ]); }); });