3D dice do not match impulse and have incorrect bounding box

When rolling 3D dice, the dice always have an origin at a point on the left of the screen regardless of where the impulse line is drawn. Also, the dice are always bound to the left half of the screen, hitting an invisible wall around halfway across the screen. To reproduce, I can simply enable 3D dice and roll dice. Chromium 66.0.3359.170 Extensions disabled and issue still present Arch linux x64 Issue also present in firefox No extensions present on firefox Cache cleared -----------Console---- RTCIceServer.url is deprecated! Use urls instead. app.js:26 70 app.js:84:25140 TOUCH SUPPORTED: false app.js:85:30632 USING WEBGL ACCELERATION... app.js:85:31934 WEBGL STARTUP SUCCESS app.js:85:32523 Custom Sheet Translation app.js:87:17960 select app.js:80:8447 Switch mode to select app.js:80:10291 Initializing new dice engine with randomness... app.js:97:12941 Using random entropy app.js:97:13021 Compiling sheet... app.js:100:3912 Found rolltemplate: pf_spell app.js:100:4195 Found rolltemplate: pf_attack app.js:100:4195 Found rolltemplate: pf_defense app.js:100:4195 Found rolltemplate: pf_ability app.js:100:4195 Found rolltemplate: pf_generic app.js:100:4195 Found rolltemplate: pf_block app.js:100:4195 Found webworker script app.js:100:4734 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=i.imgur.com/h1t4ERY.png%3F1” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=i.imgur.com/XKktDjC.gif” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=i.imgur.com/F7USUqg.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=i.imgur.com/rnuQ6SJ.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=i.imgur.com/XKktDjC.gif” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=imgur.com/9yjOsAD.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=i.imgur.com/AGq5VBG.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=i.imgur.com/Eh243RO.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=imgur.com/58j2e8P.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=i.imgur.com/Si4vfts.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=imgur.com/02fV6wh.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=imgur.com/phw1eFB.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=i.imgur.com/UxYSva8.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=imgur.com/nBnv4DL.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=imgur.com/8dCkRtG.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=i.imgur.com/pjS6HVJ.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=i.imgur.com/4FgQuqS.png” on a secure page jquery.1.8.2.min.js:2:70985 Loading mixed (insecure) display content “http://imgsrv.roll20.net/?src=i.imgur.com/a6O3ZGB.png” on a secure page jquery.1.8.2.min.js:2:70985 Finding sheet rolls... app.js:100:5189 Including compendium template css. app.js:100:10001 window resize app.js:102:256 Final set zoom! app.js:86:12690 UPDATE GL SIZE! app.js:85:24956 Final set zoom! app.js:86:12690 tuts loaded tutorial_tips.js:7:2 Final page load. app.js:92:23594 Refresh jukebox List! app.js:102:3479 Starting up WEB WORKER sheetsandboxworker.js:260:2 •.¸¸.•*´¨`*•.¸¸.•*´¨`*•.¸ The Aaron Sheet v0.2.5 ¸.•*´¨`*•.¸¸.•*´¨`*•.¸¸.• sheetsandboxworker.js:1:8021 •.¸¸.•*´¨`*•.¸¸.•*´¨`*•.¸ Last update: Wed Sep 06 2017 11:09:02 GMT-0400 (EDT) ¸.•*´¨`*•.¸¸.•*´¨`*•.¸¸.• sheetsandboxworker.js:1:8221 ס§₪₪₪₪§|(Ξ≥≤≥≤≥≤ΞΞΞΞΞΞΞΞΞΞ> HLImport module loaded <ΞΞΞΞΞΞΞΞΞΞ≥≤≥≤≥≤Ξ)|§₪₪₪₪§ס sheetsandboxworker.js:1:22334 ס§₪₪₪₪§|(Ξ≥≤≥≤≥≤ΞΞΞΞΞΞΞΞΞΞ> ,## /## <ΞΞΞΞΞΞΞΞΞΞ≥≤≥≤≥≤Ξ)|§₪₪₪₪§ס sheetsandboxworker.js:1:22334 ס§₪₪₪₪§|(Ξ≥≤≥≤≥≤ΞΞΞΞΞΞΞΞΞΞ> /#/ / ## <ΞΞΞΞΞΞΞΞΞΞ≥≤≥≤≥≤Ξ)|§₪₪₪₪§ס sheetsandboxworker.js:1:22334 ס§₪₪₪₪§|(Ξ≥≤≥≤≥≤ΞΞΞΞΞΞΞΞΞΞ> / / / ## <ΞΞΞΞΞΞΞΞΞΞ≥≤≥≤≥≤Ξ)|§₪₪₪₪§ס sheetsandboxworker.js:1:22334 ס§₪₪₪₪§|(Ξ≥≤≥≤≥≤ΞΞΞΞΞΞΞΞΞΞ> | ##___#/ <ΞΞΞΞΞΞΞΞΞΞ≥≤≥≤≥≤Ξ)|§₪₪₪₪§ס sheetsandboxworker.js:1:22334 ס§₪₪₪₪§|(Ξ≥≤≥≤≥≤ΞΞΞΞΞΞΞΞΞΞ> | ## athfinder <ΞΞΞΞΞΞΞΞΞΞ≥≤≥≤≥≤Ξ)|§₪₪₪₪§ס sheetsandboxworker.js:1:22334 ס§₪₪₪₪§|(Ξ≥≤≥≤≥≤ΞΞΞΞΞΞΞΞΞΞ> # | ## sheet version <ΞΞΞΞΞΞΞΞΞΞ≥≤≥≤≥≤Ξ)|§₪₪₪₪§ס sheetsandboxworker.js:1:22334 ס§₪₪₪₪§|(Ξ≥≤≥≤≥≤ΞΞΞΞΞΞΞΞΞΞ> ### / 01.72 <ΞΞΞΞΞΞΞΞΞΞ≥≤≥≤≥≤Ξ)|§₪₪₪₪§ס sheetsandboxworker.js:1:22334 ס§₪₪₪₪§|(Ξ≥≤≥≤≥≤ΞΞΞΞΞΞΞΞΞΞ> <ΞΞΞΞΞΞΞΞΞΞ≥≤≥≤≥≤Ξ)|§₪₪₪₪§ס sheetsandboxworker.js:1:22334 Scan for new plays! app.js:92:20430 Auth'ed. app.js:91:32021 Go post auth! app.js:91:32218 initial setup app.js:91:32363 Refresh jukebox List! app.js:102:3479 Object { attributes: {…}, _escapedAttributes: {}, cid: "c0", changed: {}, _silent: {}, _pending: {}, _previousAttributes: {…}, activePage: activePage(), showSettings: showSettings(), initActivePage: initActivePage(), … } app.js:90:533 Got players value... app.js:91:32605 joining game... app.js:92:6792 Full load page! app.js:89:12213 We have 1 pages app.js:92:723 Refresh jukebox List! app.js:102:3479 Player -L51r0oZhukca3lcPrko is offline... app.js:90:7456 THREE.WebGLRenderer 69 app.js:14:31552 Global Volume: 100=1 app.js:90:17083 Player -L52Bokloj1XgklbU6iE is offline... app.js:90:7456 Deferred finish joining... app.js:92:6882 Firebase Online app.js:84:26865 refershing page listings! app.js:95:17136 handle page changes app.js:92:1263 false app.js:92:1344 refershing page listings! app.js:95:17136 Reorder by ZORDER app.js:89:17250 Scan for new plays! app.js:92:20430 init active page! app.js:92:5745 activate page! app.js:89:14375 FULLY ACTIVATE VIEWS FOR PAGE. app.js:89:14607 Graphics: 0 app.js:89:13554 Paths: 4 app.js:89:13750 Reorder by ZORDER app.js:89:17250 refershing page listings! app.js:95:17136 Refresh jukebox List! app.js:102:3479 This site appears to use a scroll-linked positioning effect. This may not work well with asynchronous panning; see https://developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects for further details and to join the discussion on related tools and features! editor window resize app.js:102:256 Final set zoom! app.js:86:12690 UPDATE GL SIZE! app.js:85:24956 Final set zoom! app.js:86:12690 Finished after going 2 levels deep. app.js:98:19151 Begin processing op! app.js:98:21020 Inline rolls complete! app.js:98:20575 remote Roll! app.js:102:28297 Roll: 194ms app.js:97:26968 Found existing ID! app.js:98:19559 Incoming app.js:102:28911 Executing sequence #1 as 1 app.js:102:27842 20 app.js:102:27942 REDOING ALEA SEED app.js:102:26982 THREE.PlaneGeometry: Consider using THREE.PlaneBufferGeometry for lower memory footprint. app.js:18:2427 ADJUSTING WIDTH AND HEIGHT OF VIEWPORT app.js:102:29515 THREE.WebGLShader: gl.getShaderInfoLog() 0:2(12): warning: extension `GL_ARB_gpu_shader5' unsupported in vertex shader app.js:15:30378 1: precision highp float; 2: precision highp int; 3: 4: #define VERTEX_TEXTURES 5: 6: 7: #define MAX_DIR_LIGHTS 1 8: #define MAX_POINT_LIGHTS 0 9: #define MAX_SPOT_LIGHTS 0 10: #define MAX_HEMI_LIGHTS 0 11: #define MAX_SHADOWS 1 12: #define MAX_BONES 1019 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: uniform mat4 modelMatrix; 35: uniform mat4 modelViewMatrix; 36: uniform mat4 projectionMatrix; 37: uniform mat4 viewMatrix; 38: uniform mat3 normalMatrix; 39: uniform vec3 cameraPosition; 40: attribute vec3 position; 41: attribute vec3 normal; 42: attribute vec2 uv; 43: attribute vec2 uv2; 44: #ifdef USE_COLOR 45: attribute vec3 color; 46: #endif 47: #ifdef USE_MORPHTARGETS 48: attribute vec3 morphTarget0; 49: attribute vec3 morphTarget1; 50: attribute vec3 morphTarget2; 51: attribute vec3 morphTarget3; 52: #ifdef USE_MORPHNORMALS 53: attribute vec3 morphNormal0; 54: attribute vec3 morphNormal1; 55: attribute vec3 morphNormal2; 56: attribute vec3 morphNormal3; 57: #else 58: attribute vec3 morphTarget4; 59: attribute vec3 morphTarget5; 60: attribute vec3 morphTarget6; 61: attribute vec3 morphTarget7; 62: #endif 63: #endif 64: #ifdef USE_SKINNING 65: attribute vec4 skinIndex; 66: attribute vec4 skinWeight; 67: #endif 68: #ifdef USE_MORPHTARGETS 69: 70: #ifndef USE_MORPHNORMALS 71: 72: uniform float morphTargetInfluences[ 8 ]; 73: 74: #else 75: 76: uniform float morphTargetInfluences[ 4 ]; 77: 78: #endif 79: 80: #endif 81: #ifdef USE_SKINNING 82: 83: uniform mat4 bindMatrix; 84: uniform mat4 bindMatrixInverse; 85: 86: #ifdef BONE_TEXTURE 87: 88: uniform sampler2D boneTexture; 89: uniform int boneTextureWidth; 90: uniform int boneTextureHeight; 91: 92: mat4 getBoneMatrix( const in float i ) { 93: 94: float j = i * 4.0; 95: float x = mod( j, float( boneTextureWidth ) ); 96: float y = floor( j / float( boneTextureWidth ) ); 97: 98: float dx = 1.0 / float( boneTextureWidth ); 99: float dy = 1.0 / float( boneTextureHeight ); 100: 101: y = dy * ( y + 0.5 ); 102: 103: vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) ); 104: vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) ); 105: vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) ); 106: vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) ); 107: 108: mat4 bone = mat4( v1, v2, v3, v4 ); 109: 110: return bone; 111: 112: } 113: 114: #else 115: 116: uniform mat4 boneGlobalMatrices[ MAX_BONES ]; 117: 118: mat4 getBoneMatrix( const in float i ) { 119: 120: mat4 bone = boneGlobalMatrices[ int(i) ]; 121: return bone; 122: 123: } 124: 125: #endif 126: 127: #endif 128: 129: #ifdef USE_LOGDEPTHBUF 130: 131: #ifdef USE_LOGDEPTHBUF_EXT 132: 133: varying float vFragDepth; 134: 135: #endif 136: 137: uniform float logDepthBufFC; 138: 139: #endif 140: void main() { 141: #ifdef USE_SKINNING 142: 143: mat4 boneMatX = getBoneMatrix( skinIndex.x ); 144: mat4 boneMatY = getBoneMatrix( skinIndex.y ); 145: mat4 boneMatZ = getBoneMatrix( skinIndex.z ); 146: mat4 boneMatW = getBoneMatrix( skinIndex.w ); 147: 148: #endif 149: #ifdef USE_MORPHTARGETS 150: 151: vec3 morphed = vec3( 0.0 ); 152: morphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ]; 153: morphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ]; 154: morphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ]; 155: morphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ]; 156: 157: #ifndef USE_MORPHNORMALS 158: 159: morphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ]; 160: morphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ]; 161: morphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ]; 162: morphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ]; 163: 164: #endif 165: 166: morphed += position; 167: 168: #endif 169: #ifdef USE_SKINNING 170: 171: #ifdef USE_MORPHTARGETS 172: 173: vec4 skinVertex = bindMatrix * vec4( morphed, 1.0 ); 174: 175: #else 176: 177: vec4 skinVertex = bindMatrix * vec4( position, 1.0 ); 178: 179: #endif 180: 181: vec4 skinned = vec4( 0.0 ); 182: skinned += boneMatX * skinVertex * skinWeight.x; 183: skinned += boneMatY * skinVertex * skinWeight.y; 184: skinned += boneMatZ * skinVertex * skinWeight.z; 185: skinned += boneMatW * skinVertex * skinWeight.w; 186: skinned = bindMatrixInverse * skinned; 187: 188: #endif 189: 190: vec4 mvPosition; 191: 192: #ifdef USE_SKINNING 193: 194: mvPosition = modelViewMatrix * skinned; 195: 196: #endif 197: 198: #if !defined( USE_SKINNING ) && defined( USE_MORPHTARGETS ) 199: 200: mvPosition = modelViewMatrix * vec4( morphed, 1.0 ); 201: 202: #endif 203: 204: #if !defined( USE_SKINNING ) && ! defined( USE_MORPHTARGETS ) 205: 206: mvPosition = modelViewMatrix * vec4( position, 1.0 ); 207: 208: #endif 209: 210: gl_Position = projectionMatrix * mvPosition; 211: #ifdef USE_LOGDEPTHBUF 212: 213: gl_Position.z = log2(max(1e-6, gl_Position.w + 1.0)) * logDepthBufFC; 214: 215: #ifdef USE_LOGDEPTHBUF_EXT 216: 217: vFragDepth = 1.0 + gl_Position.w; 218: 219: #else 220: 221: gl_Position.z = (gl_Position.z - 1.0) * gl_Position.w; 222: 223: #endif 224: 225: #endif 226: } app.js:15:30457 THREE.WebGLShader: gl.getShaderInfoLog() 0:2(12): warning: extension `GL_ARB_gpu_shader5' unsupported in fragment shader app.js:15:30378 1: precision highp float; 2: precision highp int; 3: 4: 5: #define MAX_DIR_LIGHTS 1 6: #define MAX_POINT_LIGHTS 0 7: #define MAX_SPOT_LIGHTS 0 8: #define MAX_HEMI_LIGHTS 0 9: #define MAX_SHADOWS 1 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: uniform mat4 viewMatrix; 33: uniform vec3 cameraPosition; 34: #ifdef USE_LOGDEPTHBUF 35: 36: uniform float logDepthBufFC; 37: 38: #ifdef USE_LOGDEPTHBUF_EXT 39: 40: #extension GL_EXT_frag_depth : enable 41: varying float vFragDepth; 42: 43: #endif 44: 45: #endif 46: vec4 pack_depth( const in float depth ) { 47: const vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 ); 48: const vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 ); 49: vec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 ); 50: res -= res.xxyz * bit_mask; 51: return res; 52: } 53: void main() { 54: #if defined(USE_LOGDEPTHBUF) && defined(USE_LOGDEPTHBUF_EXT) 55: 56: gl_FragDepthEXT = log2(vFragDepth) * logDepthBufFC * 0.5; 57: 58: #endif 59: #ifdef USE_LOGDEPTHBUF_EXT 60: gl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT ); 61: #else 62: gl_FragData[ 0 ] = pack_depth( gl_FragCoord.z ); 63: #endif 64: } app.js:15:30457 THREE.WebGLShader: gl.getShaderInfoLog() 0:2(12): warning: extension `GL_ARB_gpu_shader5' unsupported in vertex shader app.js:15:30378 1: precision highp float; 2: precision highp int; 3: 4: #define VERTEX_TEXTURES 5: 6: 7: #define MAX_DIR_LIGHTS 1 8: #define MAX_POINT_LIGHTS 0 9: #define MAX_SPOT_LIGHTS 0 10: #define MAX_HEMI_LIGHTS 0 11: #define MAX_SHADOWS 1 12: #define MAX_BONES 1019 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: #define USE_SHADOWMAP 29: #define SHADOWMAP_TYPE_PCF 30: 31: 32: 33: 34: uniform mat4 modelMatrix; 35: uniform mat4 modelViewMatrix; 36: uniform mat4 projectionMatrix; 37: uniform mat4 viewMatrix; 38: uniform mat3 normalMatrix; 39: uniform vec3 cameraPosition; 40: attribute vec3 position; 41: attribute vec3 normal; 42: attribute vec2 uv; 43: attribute vec2 uv2; 44: #ifdef USE_COLOR 45: attribute vec3 color; 46: #endif 47: #ifdef USE_MORPHTARGETS 48: attribute vec3 morphTarget0; 49: attribute vec3 morphTarget1; 50: attribute vec3 morphTarget2; 51: attribute vec3 morphTarget3; 52: #ifdef USE_MORPHNORMALS 53: attribute vec3 morphNormal0; 54: attribute vec3 morphNormal1; 55: attribute vec3 morphNormal2; 56: attribute vec3 morphNormal3; 57: #else 58: attribute vec3 morphTarget4; 59: attribute vec3 morphTarget5; 60: attribute vec3 morphTarget6; 61: attribute vec3 morphTarget7; 62: #endif 63: #endif 64: #ifdef USE_SKINNING 65: attribute vec4 skinIndex; 66: attribute vec4 skinWeight; 67: #endif 68: #if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) 69: 70: varying vec2 vUv; 71: uniform vec4 offsetRepeat; 72: 73: #endif 74: 75: #ifdef USE_LIGHTMAP 76: 77: varying vec2 vUv2; 78: 79: #endif 80: #if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG ) 81: 82: varying vec3 vReflect; 83: 84: uniform float refractionRatio; 85: uniform bool useRefract; 86: 87: #endif 88: 89: #ifdef USE_COLOR 90: 91: varying vec3 vColor; 92: 93: #endif 94: #ifdef USE_MORPHTARGETS 95: 96: #ifndef USE_MORPHNORMALS 97: 98: uniform float morphTargetInfluences[ 8 ]; 99: 100: #else 101: 102: uniform float morphTargetInfluences[ 4 ]; 103: 104: #endif 105: 106: #endif 107: #ifdef USE_SKINNING 108: 109: uniform mat4 bindMatrix; 110: uniform mat4 bindMatrixInverse; 111: 112: #ifdef BONE_TEXTURE 113: 114: uniform sampler2D boneTexture; 115: uniform int boneTextureWidth; 116: uniform int boneTextureHeight; 117: 118: mat4 getBoneMatrix( const in float i ) { 119: 120: float j = i * 4.0; 121: float x = mod( j, float( boneTextureWidth ) ); 122: float y = floor( j / float( boneTextureWidth ) ); 123: 124: float dx = 1.0 / float( boneTextureWidth ); 125: float dy = 1.0 / float( boneTextureHeight ); 126: 127: y = dy * ( y + 0.5 ); 128: 129: vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) ); 130: vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) ); 131: vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) ); 132: vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) ); 133: 134: mat4 bone = mat4( v1, v2, v3, v4 ); 135: 136: return bone; 137: 138: } 139: 140: #else 141: 142: uniform mat4 boneGlobalMatrices[ MAX_BONES ]; 143: 144: mat4 getBoneMatrix( const in float i ) { 145: 146: mat4 bone = boneGlobalMatrices[ int(i) ]; 147: return bone; 148: 149: } 150: 151: #endif 152: 153: #endif 154: 155: #ifdef USE_SHADOWMAP 156: 157: varying vec4 vShadowCoord[ MAX_SHADOWS ]; 158: uniform mat4 shadowMatrix[ MAX_SHADOWS ]; 159: 160: #endif 161: #ifdef USE_LOGDEPTHBUF 162: 163: #ifdef USE_LOGDEPTHBUF_EXT 164: 165: varying float vFragDepth; 166: 167: #endif 168: 169: uniform float logDepthBufFC; 170: 171: #endif 172: void main() { 173: #if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) 174: 175: vUv = uv * offsetRepeat.zw + offsetRepeat.xy; 176: 177: #endif 178: #ifdef USE_LIGHTMAP 179: 180: vUv2 = uv2; 181: 182: #endif 183: #ifdef USE_COLOR 184: 185: #ifdef GAMMA_INPUT 186: 187: vColor = color * color; 188: 189: #else 190: 191: vColor = color; 192: 193: #endif 194: 195: #endif 196: #ifdef USE_SKINNING 197: 198: mat4 boneMatX = getBoneMatrix( skinIndex.x ); 199: mat4 boneMatY = getBoneMatrix( skinIndex.y ); 200: mat4 boneMatZ = getBoneMatrix( skinIndex.z ); 201: mat4 boneMatW = getBoneMatrix( skinIndex.w ); 202: 203: #endif 204: #ifdef USE_ENVMAP 205: #ifdef USE_MORPHNORMALS 206: 207: vec3 morphedNormal = vec3( 0.0 ); 208: 209: morphedNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ]; 210: morphedNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ]; 211: morphedNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ]; 212: morphedNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ]; 213: 214: morphedNormal += normal; 215: 216: #endif 217: #ifdef USE_SKINNING 218: 219: mat4 skinMatrix = mat4( 0.0 ); 220: skinMatrix += skinWeight.x * boneMatX; 221: skinMatrix += skinWeight.y * boneMatY; 222: skinMatrix += skinWeight.z * boneMatZ; 223: skinMatrix += skinWeight.w * boneMatW; 224: skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; 225: 226: #ifdef USE_MORPHNORMALS 227: 228: vec4 skinnedNormal = skinMatrix * vec4( morphedNormal, 0.0 ); 229: 230: #else 231: 232: vec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 ); 233: 234: #endif 235: 236: #endif 237: 238: vec3 objectNormal; 239: 240: #ifdef USE_SKINNING 241: 242: objectNormal = skinnedNormal.xyz; 243: 244: #endif 245: 246: #if !defined( USE_SKINNING ) && defined( USE_MORPHNORMALS ) 247: 248: objectNormal = morphedNormal; 249: 250: #endif 251: 252: #if !defined( USE_SKINNING ) && ! defined( USE_MORPHNORMALS ) 253: 254: objectNormal = normal; 255: 256: #endif 257: 258: #ifdef FLIP_SIDED 259: 260: objectNormal = -objectNormal; 261: 262: #endif 263: 264: vec3 transformedNormal = normalMatrix * objectNormal; 265: #endif 266: #ifdef USE_MORPHTARGETS 267: 268: vec3 morphed = vec3( 0.0 ); 269: morphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ]; 270: morphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ]; 271: morphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ]; 272: morphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ]; 273: 274: #ifndef USE_MORPHNORMALS 275: 276: morphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ]; 277: morphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ]; 278: morphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ]; 279: morphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ]; 280: 281: #endif 282: 283: morphed += position; 284: 285: #endif 286: #ifdef USE_SKINNING 287: 288: #ifdef USE_MORPHTARGETS 289: 290: vec4 skinVertex = bindMatrix * vec4( morphed, 1.0 ); 291: 292: #else 293: 294: vec4 skinVertex = bindMatrix * vec4( position, 1.0 ); 295: 296: #endif 297: 298: vec4 skinned = vec4( 0.0 ); 299: skinned += boneMatX * skinVertex * skinWeight.x; 300: skinned += boneMatY * skinVertex * skinWeight.y; 301: skinned += boneMatZ * skinVertex * skinWeight.z; 302: skinned += boneMatW * skinVertex * skinWeight.w; 303: skinned = bindMatrixInverse * skinned; 304: 305: #endif 306: 307: vec4 mvPosition; 308: 309: #ifdef USE_SKINNING 310: 311: mvPosition = modelViewMatrix * skinned; 312: 313: #endif 314: 315: #if !defined( USE_SKINNING ) && defined( USE_MORPHTARGETS ) 316: 317: mvPosition = modelViewMatrix * vec4( morphed, 1.0 ); 318: 319: #endif 320: 321: #if !defined( USE_SKINNING ) && ! defined( USE_MORPHTARGETS ) 322: 323: mvPosition = modelViewMatrix * vec4( position, 1.0 ); 324: 325: #endif 326: 327: gl_Position = projectionMatrix * mvPosition; 328: #ifdef USE_LOGDEPTHBUF 329: 330: gl_Position.z = log2(max(1e-6, gl_Position.w + 1.0)) * logDepthBufFC; 331: 332: #ifdef USE_LOGDEPTHBUF_EXT 333: 334: vFragDepth = 1.0 + gl_Position.w; 335: 336: #else 337: 338: gl_Position.z = (gl_Position.z - 1.0) * gl_Position.w; 339: 340: #endif 341: 342: #endif 343: #if defined( USE_ENVMAP ) || defined( PHONG ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP ) 344: 345: #ifdef USE_SKINNING 346: 347: vec4 worldPosition = modelMatrix * skinned; 348: 349: #endif 350: 351: #if defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING ) 352: 353: vec4 worldPosition = modelMatrix * vec4( morphed, 1.0 ); 354: 355: #endif 356: 357: #if ! defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING ) 358: 359: vec4 worldPosition = modelMatrix * vec4( position, 1.0 ); 360: 361: #endif 362: 363: #endif 364: #if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG ) 365: 366: vec3 worldNormal = mat3( modelMatrix[ 0 ].xyz, modelMatrix[ 1 ].xyz, modelMatrix[ 2 ].xyz ) * objectNormal; 367: worldNormal = normalize( worldNormal ); 368: 369: vec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); 370: 371: if ( useRefract ) { 372: 373: vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); 374: 375: } else { 376: 377: vReflect = reflect( cameraToVertex, worldNormal ); 378: 379: } 380: 381: #endif 382: #ifdef USE_SHADOWMAP 383: 384: for( int i = 0; i < MAX_SHADOWS; i ++ ) { 385: 386: vShadowCoord[ i ] = shadowMatrix[ i ] * worldPosition; 387: 388: } 389: 390: #endif 391: } app.js:15:30457 app.js:15:30288 THREE.WebGLShader: gl.getShaderInfoLog() 0:2(12): warning: extension `GL_ARB_gpu_shader5' unsupported in fragment shader 0:41(58): error: sampler arrays indexed with non-constant expressions are forbidden in GLSL 1.30 and later 0:46(58): error: sampler arrays indexed with non-constant expressions are forbidden in GLSL 1.30 and later 0:51(58): error: sampler arrays indexed with non-constant expressions are forbidden in GLSL 1.30 and later 0:56(58): error: sampler arrays indexed with non-constant expressions are forbidden in GLSL 1.30 and later 0:61(58): error: sampler arrays indexed with non-constant expressions are forbidden in GLSL 1.30 and later 0:66(58): error: sampler arrays indexed with non-constant expressions are forbidden in GLSL 1.30 and later 0:71(58): error: sampler arrays indexed with non-constant expressions are forbidden in GLSL 1.30 and later 0:76(58): error: sampler arrays indexed with non-constant expressions are forbidden in GLSL 1.30 and later 0:81(58): error: sampler arrays indexed with non-constant expressions are forbidden in GLSL 1.30 and later app.js:15:30378 1: precision highp float; 2: precision highp int; 3: 4: 5: #define MAX_DIR_LIGHTS 1 6: #define MAX_POINT_LIGHTS 0 7: #define MAX_SPOT_LIGHTS 0 8: #define MAX_HEMI_LIGHTS 0 9: #define MAX_SHADOWS 1 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: #define USE_SHADOWMAP 28: #define SHADOWMAP_TYPE_PCF 29: 30: 31: 32: uniform mat4 viewMatrix; 33: uniform vec3 cameraPosition; 34: uniform vec3 diffuse; 35: uniform float opacity; 36: #ifdef USE_COLOR 37: 38: varying vec3 vColor; 39: 40: #endif 41: 42: #if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) 43: 44: varying vec2 vUv; 45: 46: #endif 47: 48: #ifdef USE_MAP 49: 50: uniform sampler2D map; 51: 52: #endif 53: #ifdef USE_LIGHTMAP 54: 55: varying vec2 vUv2; 56: uniform sampler2D lightMap; 57: 58: #endif 59: #ifdef USE_ENVMAP 60: 61: uniform float reflectivity; 62: uniform samplerCube envMap; 63: u… app.js:15:30457 app.js:15:28869 app.js:15:28935 app.js:15:29014 THREE.WebGLProgram: gl.getProgramInfoLog() Must have an compiled fragment shader attached. app.js:15:29088 THREE.WebGLShader: gl.getShaderInfoLog() 0:2(12): warning: extension `GL_ARB_gpu_shader5' unsupported in vertex shader app.js:15:30378 1: precision highp float; 2: precision highp int; 3: 4: #define VERTEX_TEXTURES 5: 6: 7: #define MAX_DIR_LIGHTS 1 8: #define MAX_POINT_LIGHTS 0 9: #define MAX_SPOT_LIGHTS 0 10: #define MAX_HEMI_LIGHTS 0 11: #define MAX_SHADOWS 1 12: #define MAX_BONES 1019 13: #define USE_MAP 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: uniform mat4 modelMatrix; 35: uniform mat4 modelViewMatrix; 36: uniform mat4 projectionMatrix; 37: uniform mat4 viewMatrix; 38: uniform mat3 normalMatrix; 39: uniform vec3 cameraPosition; 40: attribute vec3 position; 41: attribute vec3 normal; 42: attribute vec2 uv; 43: attribute vec2 uv2; 44: #ifdef USE_COLOR 45: attribute vec3 color; 46: #endif 47: #ifdef USE_MORPHTARGETS 48: attribute vec3 morphTarget0; 49: attribute vec3 morphTarget1; 50: attribute vec3 morphTarget2; 51: attribute vec3 morphTarget3; 52: #ifdef USE_MORPHNORMALS 53: attribute vec3 morphNormal0; 54: attribute vec3 morphNormal1; 55: … app.js:15:30457 THREE.WebGLShader: gl.getShaderInfoLog() 0:2(12): warning: extension `GL_ARB_gpu_shader5' unsupported in fragment shader app.js:15:30378 1: precision highp float; 2: precision highp int; 3: 4: 5: #define MAX_DIR_LIGHTS 1 6: #define MAX_POINT_LIGHTS 0 7: #define MAX_SPOT_LIGHTS 0 8: #define MAX_HEMI_LIGHTS 0 9: #define MAX_SHADOWS 1 10: 11: 12: 13: 14: 15: #define USE_MAP 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: uniform mat4 viewMatrix; 33: uniform vec3 cameraPosition; 34: uniform float opacity; 35: varying vec3 vLightFront; 36: #ifdef DOUBLE_SIDED 37: varying vec3 vLightBack; 38: #endif 39: #ifdef USE_COLOR 40: 41: varying vec3 vColor; 42: 43: #endif 44: 45: #if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) 46: 47: varying vec2 vUv; 48: 49: #endif 50: 51: #ifdef USE_MAP 52: 53: uniform sampler2D map; 54: 55: #endif 56: #ifdef USE_ALPHAMAP 57: 58: uniform sampler2D alphaMap; 59: 60: #endif 61: 62: #ifdef USE_LIGHTMAP 63: 64: varying vec2 vUv2; 65: uniform sampler2D light… app.js:15:30457 Error: WebGL warning: linkProgram: Must have an compiled fragment shader attached. app.js:15:28806 Error: WebGL warning: getUniformLocation: `program` must be linked. app.js:15:24467 Error: WebGL: No further warnings will be reported for this WebGL context. (already reported 32 warnings) app.js:15:24467 remote Roll! app.js:102:28297 We're allowed to roll this already! app.js:102:28749 Incoming app.js:102:28911 Already rendering, ignoring. app.js:102:29077 skip this one! app.js:102:32336 returned all current rolls app.js:102:32369 Finsihed after 41 calculations. app.js:102:32416 all done! cleanup!
1526534881
GenKitty
Roll20 Mod Team
While it is good you went through the triage checklist, 'Chromium' is not the same as 'Chrome' and we only support Chrome and Firefox.  Would you be willing to do a quick check to see if this happens in Chrome the same as it does in Firefox? https://linuxhint.com/install-google-chrome-on-arch-linux/ is a guide recommended, on the off-chance such is needed :)
The issues are also present in chrome.
1526573976
Drespar
Roll20 Team
Hi sensei, What is the name of the game that you are running into the start point issue? Does that persist in a new game? In regards to the invisible wall, it is actually an intentional inclusion. Similar to a dice box in meat space it is just there to keep dice from flying off the screen :)
This is present in all games. I imagine the wall is on purpose, but it is way smaller than the tabletop viewport, which means the dice almost always land behind some UI element.
1526657688
Drespar
Roll20 Team
Gotcha. I have submitted a tickets to the dev team so they can have a look at the console log and glean some more info.
1526750293
Drespar
Roll20 Team
A few more questions for you about this: Can you reproduce this on a different OS? OSX or Windows for instance. Does this occur with a different computer on the same network? Are you aware of any 3rd party processes that might be interfering with javascript? Such as an antivirus? In Chrome, there's an option to view graphics/WebGL info. Can you have the user go here to collect that information for us? chrome://gpu/