1.47 RuntimeError: Program failed to link. Link log: Could not pack varying v_logZ (1.46=no error)

Okay, reading the Change Log release notes for the 3rd time, here is the culprit:

Paste this “test code” into Sandcastle and run it:

var viewer = new Cesium.Viewer(‘cesiumContainer’, {

terrainProvider: Cesium.createWorldTerrain()

});

viewer.scene.globe.depthTestAgainstTerrain = true;

var e = viewer.entities.add({

position : Cesium.Cartesian3.fromDegrees(-122.1958, 46.1915),

billboard : {

image : ‘…/images/Cesium_Logo_overlay.png’,

heightReference : Cesium.HeightReference.CLAMP_TO_GROUND,

verticalOrigin: Cesium.VerticalOrigin.BOTTOM

}

});
viewer.trackedEntity = e;

Here’s the same Render error that my page throws:

An error occurred while rendering. Rendering has stopped.

RuntimeError: Program failed to link. Link log: Could not pack varying v_logZ

Note: Additional non-conformant packing restrictions are enforced on D3D9.

Error

at new RuntimeError (https://cesiumjs.org/Cesium/Build/CesiumUnminified/Cesium.js:4361:19)

at createAndLinkProgram (https://cesiumjs.org/Cesium/Build/CesiumUnminified/Cesium.js:99366:19)

at initialize (https://cesiumjs.org/Cesium/Build/CesiumUnminified/Cesium.js:99560:23)

at ShaderProgram._bind (https://cesiumjs.org/Cesium/Build/CesiumUnminified/Cesium.js:99577:9)

at beginDraw (https://cesiumjs.org/Cesium/Build/CesiumUnminified/Cesium.js:173922:23)

at Context.draw (https://cesiumjs.org/Cesium/Build/CesiumUnminified/Cesium.js:173984:9)

at DrawCommand.execute (https://cesiumjs.org/Cesium/Build/CesiumUnminified/Cesium.js:95635:17)

at executeCommand (https://cesiumjs.org/Cesium/Build/CesiumUnminified/Cesium.js:236295:21)

at executeCommands (https://cesiumjs.org/Cesium/Build/CesiumUnminified/Cesium.js:236644:17)

at executeCommandsInViewport (https://cesiumjs.org/Cesium/Build/CesiumUnminified/Cesium.js:237055:9)

I deleted my original post, because there’s no need to wade through my 1100+ lines of code, and the 2 versions of my page,

one of which has been running fine for 2 months, referencing 1.45 and 1.46,

and the other page, which references Cesium v1.47 and throws this render error.

The “minimal example” is the test code posted with https://github.com/AnalyticalGraphicsInc/cesium/pull/6621

4. The Cesium version you’re using, your operating system and
browser.

Cesium 1.46 versus 1.47

Windows 7 Home Premium SP1,

Chrome Version 67.0.3396.99 (Official Build) (64-bit)

I reset Chrome://flags to default, and still get the error on my Windows7 laptop, in Chrome.

I do not get any error testing on my phone, using either Cesium 1.46 or Cesium 1.47
Androids 8.0.0 SM-G930V Build/R16NW
Chrome Version 67.0.3396.87

Could this error be (GPU) hardware-related?

Safari, IPhone iOS 11.2.2, MODEL 6S (A168800),
My page referencing Cesium 1.46 loads fine on the iPhone.
My page referencing Cesium 1.47 throws an ERROR similar to WINDOWS7 LAPTOP & Chrome.

"An error occurred while rendering. Rendering as stopped"
RuntimeError: Program failed to link. Link log: t@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:451:28526 f@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:480:17970 y@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:480:19680 _bind@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:480:20695 G@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:508:918 draw@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:508:4879 execute@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:479:21084 Ge@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:530:16832 Xe@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:530:21311 tt@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:530:26615 $e@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:530:24571 ht@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:531:1320 pt@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:531:1508 render@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:531:9357 render@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:537:18275 t@https://lftgly.com/library/Cesium147/Cesium/Cesium.js:537:11725

Hannah-

Would you please look at this thread?

https://groups.google.com/forum/#!topic/cesium-dev/XlaPQFwjozA

2 days later, after posting on Sunday, no response to
Cesium-dev from the AGI team.

This error is a result of “Improved billboard and
label rendering so they no longer sink into terrain when clamped to ground.”
#6621

https://github.com/AnalyticalGraphicsInc/cesium/pull/6621

It looks like this #6621 update causes render errors for billboards and labels on
some hardware. It broke my working code on 2 out of 3 devices.

Thanks-

-Jon

Hi Jon,

This issue was reported by another user too. I’ve reopened this issue: https://github.com/AnalyticalGraphicsInc/cesium/issues/6793

I wasn’t able to reproduce this myself. What graphics card does your computer have? Can you also paste the results of http://webglreport.com/ ?

Thanks,

Hannah

I believe your case should be fixed in the 1.48 release with https://github.com/AnalyticalGraphicsInc/cesium/pull/6781
There are still some improvements I can make here though.

-Hannah

Here’s the windows laptop WebGLreport:

Platform: Win32

Browser User Agent: Mozilla/5.0
(Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/67.0.3396.99 Safari/537.36

Context Name: webgl

GL Version: WebGL
1.0 (OpenGL ES 2.0 Chromium)

Shading Language Version: WebGL
GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)

Vendor: WebKit

Renderer: WebKit
WebGL

Unmasked Vendor: Google
Inc.

Unmasked Renderer: ANGLE
(Intel® HD Graphics Family Direct3D9Ex vs_3_0 ps_3_0)

Antialiasing: Available

ANGLE: Yes, D3D9

Major Performance Caveat: No

Vertex Shader

Max Vertex Attributes: 16

Max Vertex Uniform Vectors: 253

Max Vertex Texture Image Units: 4

Max Varying Vectors: 9

Best float precision: [-2127,
2127] (23)

Transform Feedback

Coming in WebGL 2

Rasterizer

Aliased Line Width Range: [1,
1]

Aliased Point Size Range: [1,
256]

Fragment Shader

Max Fragment Uniform Vectors: 221

Max Texture Image Units: 16

float/int precision: highp/highp

Best float precision: [-2127,
2127] (23)

Framebuffer

Max Color Buffers: 1

RGBA Bits: [8,
8, 8, 8]

Depth / Stencil Bits: [24,
8]

Max Render Buffer Size: 8192

Max Viewport Dimensions: [8192,
8192]

Textures

Max Texture Size: 8192

Max Cube Map Texture Size: 8192

Max Combined Texture Image Units: 20

Max Anisotropy: 16

Uniform Buffers

Coming in WebGL 2

Supported Extensions:

ANGLE_instanced_arrays

EXT_blend_minmax

EXT_color_buffer_half_float

EXT_frag_depth

EXT_shader_texture_lod

EXT_texture_filter_anisotropic

WEBKIT_EXT_texture_filter_anisotropic

OES_element_index_uint

OES_standard_derivatives

OES_texture_float

OES_texture_float_linear

OES_texture_half_float

OES_texture_half_float_linear

OES_vertex_array_object

WEBGL_color_buffer_float

WEBGL_compressed_texture_s3tc

WEBKIT_WEBGL_compressed_texture_s3tc

WEBGL_debug_renderer_info

WEBGL_debug_shaders

WEBGL_depth_texture

WEBKIT_WEBGL_depth_texture

WEBGL_lose_context

WEBKIT_WEBGL_lose_context

thanks

Hi, we’ve made some improvements that have gone into master, see updates in #6793, can you test against the current master, as linked to in that issue? Thanks!

Gabby & Hannah-
I was not able to test the build last month, but I can confirm that the #6793 changes in the 1.48 release has fixed the rendering error on both the iPhone 6, and the old Win7 laptop’s Intel GPU.

Thanks,

Jon Hall

Awesome! Thanks for checking.