yzt
2023-05-26 de4278af2fd46705a40bac58ec01122db6b7f3d7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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,
    ]);
  });
});