Skip to content

Commit

Permalink
Merge pull request #4938 from AnalyticalGraphicsInc/3d-tiles-webgl-stubs
Browse files Browse the repository at this point in the history
3D Tiles - WebGL stubs
  • Loading branch information
pjcozzi authored Feb 2, 2017
2 parents 5ca849c + c49f970 commit ef1863a
Show file tree
Hide file tree
Showing 9 changed files with 538 additions and 451 deletions.
2 changes: 1 addition & 1 deletion Documentation/Contributors/TestingGuide/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -630,7 +630,7 @@ it('can create a billboard using a URL', function() {
return pollToPromise(function() {
return b.ready;
}).then(function() {
expect(scene.renderForSpecs()).toEqual([0, 255, 0, 255]);
expect(scene).toRender([0, 255, 0, 255]);
});
});
```
Expand Down
65 changes: 36 additions & 29 deletions Specs/Cesium3DTilesTester.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,43 +45,50 @@ define([
return string + whitespace;
}

function expectRender(scene, tileset) {
Cesium3DTilesTester.expectRender = function(scene, tileset, callback) {
tileset.show = false;
expect(scene.renderForSpecs()).toEqual([0, 0, 0, 255]);
expect(scene).toRender([0, 0, 0, 255]);
tileset.show = true;
var pixelColor = scene.renderForSpecs();
expect(pixelColor).not.toEqual([0, 0, 0, 255]);
return pixelColor;
}
expect(scene).toRenderAndCall(function(rgba) {
expect(rgba).not.toEqual([0, 0, 0, 255]);
if (defined(callback)) {
callback(rgba);
}
});
};

function expectRenderBlank(scene, tileset) {
Cesium3DTilesTester.expectRenderBlank = function(scene, tileset) {
tileset.show = false;
expect(scene.renderForSpecs()).toEqual([0, 0, 0, 255]);
expect(scene).toRender([0, 0, 0, 255]);
tileset.show = true;
expect(scene.renderForSpecs()).toEqual([0, 0, 0, 255]);
}
expect(scene).toRender([0, 0, 0, 255]);
};

Cesium3DTilesTester.expectRenderTileset = function(scene, tileset) {
// Verify render before being picked
expectRender(scene, tileset);

// Change the color of the picked feature to yellow
var picked = scene.pickForSpecs();
expect(picked).toBeDefined();
picked.color = Color.clone(Color.YELLOW, picked.color);

// Expect the pixel color to be some shade of yellow
var pixelColor = expectRender(scene, tileset);
expect(pixelColor[0]).toBeGreaterThan(0);
expect(pixelColor[1]).toBeGreaterThan(0);
expect(pixelColor[2]).toEqual(0);
expect(pixelColor[3]).toEqual(255);

// Turn show off and on
picked.show = false;
expectRenderBlank(scene, tileset);
picked.show = true;
expectRender(scene, tileset);
Cesium3DTilesTester.expectRender(scene, tileset);

// Pick a feature
expect(scene).toPickAndCall(function(result) {
expect(result).toBeDefined();

// Change the color of the picked feature to yellow
result.color = Color.clone(Color.YELLOW, result.color);

// Expect the pixel color to be some shade of yellow
Cesium3DTilesTester.expectRender(scene, tileset, function(rgba) {
expect(rgba[0]).toBeGreaterThan(0);
expect(rgba[1]).toBeGreaterThan(0);
expect(rgba[2]).toEqual(0);
expect(rgba[3]).toEqual(255);
});

// Turn show off and on
result.show = false;
Cesium3DTilesTester.expectRenderBlank(scene, tileset);
result.show = true;
Cesium3DTilesTester.expectRender(scene, tileset);
});
};

Cesium3DTilesTester.waitForTilesLoaded = function(scene, tileset) {
Expand Down
96 changes: 54 additions & 42 deletions Specs/Renderer/TextureSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -210,57 +210,69 @@ defineSuite([
});

it('draws the expected DXT compressed texture color', function() {
if (context.s3tc) {
texture = new Texture({
context : context,
pixelFormat : greenDXTImage.internalFormat,
source : {
width : greenDXTImage.width,
height : greenDXTImage.height,
arrayBufferView : greenDXTImage.bufferView
}
});

var pixels = renderFragment(context);
expect(pixels).toEqual([0, 255, 0, 255]);
if (!context.s3tc) {
return;
}

texture = new Texture({
context : context,
pixelFormat : greenDXTImage.internalFormat,
source : {
width : greenDXTImage.width,
height : greenDXTImage.height,
arrayBufferView : greenDXTImage.bufferView
}
});

expect({
context : context,
fragmentShader : fs,
uniformMap : uniformMap
}).contextToRender([0, 255, 0, 255]);
});

it('draws the expected PVR compressed texture color', function() {
if (context.pvrtc) {
texture = new Texture({
context : context,
pixelFormat : greenPVRImage.internalFormat,
source : {
width : greenPVRImage.width,
height : greenPVRImage.height,
arrayBufferView : greenPVRImage.bufferView
}
});

var pixels = renderFragment(context);
expect(pixels).toEqual([0, 255, 0, 255]);
if (!context.pvrtc) {
return;
}

texture = new Texture({
context : context,
pixelFormat : greenPVRImage.internalFormat,
source : {
width : greenPVRImage.width,
height : greenPVRImage.height,
arrayBufferView : greenPVRImage.bufferView
}
});

expect({
context : context,
fragmentShader : fs,
uniformMap : uniformMap
}).contextToRender([0, 255, 0, 255]);
});

it('draws the expected ETC1 compressed texture color', function() {
if (context.etc1) {
texture = new Texture({
context : context,
pixelFormat : greenETC1Image.internalFormat,
source : {
width : greenETC1Image.width,
height : greenETC1Image.height,
arrayBufferView : greenETC1Image.bufferView
}
});

var pixels = renderFragment(context);
expect(pixels[0]).toEqual(0);
expect(pixels[1]).toBeGreaterThan(250);
expect(pixels[2]).toEqual(0);
expect(pixels[3]).toEqual(255);
if (!context.etc1) {
return;
}

texture = new Texture({
context : context,
pixelFormat : greenETC1Image.internalFormat,
source : {
width : greenETC1Image.width,
height : greenETC1Image.height,
arrayBufferView : greenETC1Image.bufferView
}
});

expect({
context : context,
fragmentShader : fs,
uniformMap : uniformMap
}).contextToRender([0, 253, 0, 255]);
});

it('renders with premultiplied alpha', function() {
Expand Down
Loading

0 comments on commit ef1863a

Please sign in to comment.