import {
|
BatchTexturePipelineStage,
|
ShaderBuilder,
|
} from "../../../Source/Cesium.js";
|
import ShaderBuilderTester from "../../ShaderBuilderTester.js";
|
|
describe("Scene/ModelExperimental/BatchTexturePipelineStage", function () {
|
function expectUniformMap(uniformMap, expected) {
|
for (var key in expected) {
|
if (expected.hasOwnProperty(key)) {
|
var expectedValue = expected[key];
|
var uniformFunction = uniformMap[key];
|
expect(uniformFunction).toBeDefined();
|
expect(uniformFunction()).toEqual(expectedValue);
|
}
|
}
|
}
|
|
function verifyBatchTextureUniforms(featureTable, uniformMap) {
|
var expectedUniforms = {
|
model_featuresLength: featureTable.featuresLength,
|
model_batchTexture: featureTable.batchTexture.batchTexture,
|
model_textureDimensions: featureTable.batchTexture.textureDimensions,
|
model_textureStep: featureTable.batchTexture.textureStep,
|
};
|
|
expectUniformMap(uniformMap, expectedUniforms);
|
}
|
|
function verifyBatchTextureShaders(shaderBuilder) {
|
ShaderBuilderTester.expectHasVertexDefines(shaderBuilder, [
|
"MULTILINE_BATCH_TEXTURE",
|
]);
|
|
ShaderBuilderTester.expectHasFragmentDefines(shaderBuilder, [
|
"MULTILINE_BATCH_TEXTURE",
|
]);
|
|
ShaderBuilderTester.expectHasVertexUniforms(shaderBuilder, [
|
"uniform float model_featuresLength;",
|
"uniform sampler2D model_batchTexture;",
|
"uniform vec4 model_textureStep;",
|
"uniform vec2 model_textureDimensions;",
|
]);
|
|
ShaderBuilderTester.expectHasFragmentUniforms(shaderBuilder, [
|
"uniform float model_featuresLength;",
|
"uniform sampler2D model_batchTexture;",
|
"uniform vec4 model_textureStep;",
|
"uniform vec2 model_textureDimensions;",
|
]);
|
}
|
|
it("sets up batch textures from ModelExperimental", function () {
|
var renderResources = {
|
shaderBuilder: new ShaderBuilder(),
|
model: {
|
featureTableId: 0,
|
featureTables: [
|
{
|
featuresLength: 10,
|
batchTexture: {
|
batchTexture: 0,
|
textureDimensions: {
|
y: 2,
|
},
|
textureStep: 2,
|
},
|
},
|
],
|
},
|
};
|
|
BatchTexturePipelineStage.process(renderResources, {}, {});
|
verifyBatchTextureShaders(renderResources.shaderBuilder);
|
verifyBatchTextureUniforms(
|
renderResources.model.featureTables[0],
|
renderResources.uniformMap
|
);
|
});
|
});
|