DSDSWeb/static/js/Cesium-1.53/Specs/Renderer/ShaderSourceSpec.js

98 lines
3.6 KiB
JavaScript
Raw Normal View History

2024-07-11 18:02:47 +08:00
defineSuite([
'Renderer/ShaderSource'
], function(
ShaderSource) {
'use strict';
var mockContext = {
webgl2 : false
};
it('combines #defines', function() {
var source = new ShaderSource({
defines : ['A', 'B', '']
});
var shaderText = source.createCombinedVertexShader(mockContext);
expect(shaderText).toContain('#define A');
expect(shaderText).toContain('#define B');
expect(shaderText.match(/#define/g).length).toEqual(2);
});
it('combines sources', function() {
var source = new ShaderSource({
sources : ['void func() {}', 'void main() {}']
});
var shaderText = source.createCombinedVertexShader(mockContext);
expect(shaderText).toContain('#line 0\nvoid func() {}');
expect(shaderText).toContain('#line 0\nvoid main() {}');
});
it('combines #defines and sources', function() {
var source = new ShaderSource({
defines : ['A', 'B', ''],
sources : ['void func() {}', 'void main() {}']
});
var shaderText = source.createCombinedVertexShader(mockContext);
expect(shaderText).toContain('#define A');
expect(shaderText).toContain('#define B');
expect(shaderText.match(/#define/g).length).toEqual(2);
expect(shaderText).toContain('#line 0\nvoid func() {}');
expect(shaderText).toContain('#line 0\nvoid main() {}');
});
it('creates a pick shader with a uniform', function() {
var source = new ShaderSource({
sources : ['void main() { gl_FragColor = vec4(1.0); }'],
pickColorQualifier : 'uniform'
});
var shaderText = source.createCombinedVertexShader(mockContext);
expect(shaderText).toContain('uniform vec4 czm_pickColor;');
expect(shaderText).toContain('gl_FragColor = czm_pickColor;');
});
it('creates a pick shader with a varying', function() {
var source = new ShaderSource({
sources : ['void main() { gl_FragColor = vec4(1.0); }'],
pickColorQualifier : 'varying'
});
var shaderText = source.createCombinedVertexShader(mockContext);
expect(shaderText).toContain('varying vec4 czm_pickColor;');
expect(shaderText).toContain('gl_FragColor = czm_pickColor;');
});
it('throws with invalid qualifier', function() {
expect(function() {
return new ShaderSource({
pickColorQualifier : 'const'
});
}).toThrowDeveloperError();
});
it('combines #version to shader', function() {
var source = new ShaderSource({
sources : ['#version 300 es\nvoid main() {gl_FragColor = vec4(1.0); }']
});
var shaderText = source.createCombinedVertexShader(mockContext);
expect(shaderText).toStartWith('#version 300 es\n');
});
it('clones', function() {
var source = new ShaderSource({
defines : ['A'],
sources : ['void main() { gl_FragColor = vec4(1.0); }'],
pickColorQualifier : 'varying',
includeBuiltIns : false
});
var clone = source.clone();
expect(clone.defines).toBeDefined();
expect(clone.defines.length).toEqual(1);
expect(clone.defines[0]).toEqual(source.defines[0]);
expect(clone.sources).toBeDefined();
expect(clone.sources.length).toEqual(1);
expect(clone.sources[0]).toEqual(source.sources[0]);
expect(clone.pickColorQualifier).toEqual(source.pickColorQualifier);
expect(clone.includeBuiltIns).toEqual(source.includeBuiltIns);
});
});