Autodesk / molecular-simulation-tools

Web applications for molecular modeling using the Molecular Design Toolkit
http://molsim.bionano.autodesk.com
Apache License 2.0
16 stars 10 forks source link

molecular-simulation fails in Firefox after clicking "load molecule" #214

Closed avirshup closed 7 years ago

avirshup commented 7 years ago

Firefox 52.0 (on a mac) fails after clicking "Load molecule". Logs below:


          No viewer version specified, will implicitly use @build_version@  firefly.min.js:21:15435
THREE.WebGLRenderer 71  three.min.js:2:178
ID buffer requested, but MRT is not supported. Some features will not work.  firefly.min.js:1:24454
THREE.WebGLShader: gl.getShaderInfoLog() WARNING: 0:1: extension 'GL_ARB_gpu_shader5' is not supported
  firefly.min.js:1:24454
1: precision highp float;
2: precision highp int;
3: 
4: #define VERTEX_TEXTURES
5: 
6: 
7: #define GAMMA_FACTOR 1
8: 
9: 
10: #define MAX_DIR_LIGHTS 0
11: #define MAX_POINT_LIGHTS 0
12: #define MAX_SPOT_LIGHTS 0
13: #define MAX_HEMI_LIGHTS 0
14: #define MAX_BONES undefined
15: #define NUM_CUTPLANES 0
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: uniform mat4 modelMatrix;
41: uniform mat4 modelViewMatrix;
42: uniform mat4 projectionMatrix;
43: uniform mat4 viewMatrix;
44: uniform mat3 normalMatrix;
45: uniform vec3 cameraPosition;
46: attribute vec3 position;
47: #ifdef UNPACK_NORMALS
48: attribute vec2 normal;
49: #else
50: attribute vec3 normal;
51: #endif
52: attribute vec2 uv;
53: attribute vec2 uv2;
54: #ifdef PRISMWOOD
55: attribute vec3 uvw;
56: #endif
57: #ifdef USE_COLOR
58:     attribute vec3 color;
59: #endif
60: varying vec2 vUv;

61: 

62: void main() {

63: 

64:     vUv = uv;

65:     gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );

66: 

67: }

68:   firefly.min.js:1:24472
THREE.WebGLShader: gl.getShaderInfoLog() WARNING: 0:1: extension 'GL_ARB_gpu_shader5' is not supported
  firefly.min.js:1:24454
1: 
2: 
3: 
4: #define HAVE_TEXTURE_LOD
5: 
6: #define MAX_DIR_LIGHTS 0
7: #define MAX_POINT_LIGHTS 0
8: #define MAX_SPOT_LIGHTS 0
9: #define MAX_HEMI_LIGHTS 0
10: #define NUM_CUTPLANES 0
11: 
12: 
13: 
14: #define GAMMA_FACTOR 1
15: 
16: 
17: 
18: #define TONEMAP_OUTPUT 0
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: #define GET_MAP(UV) (texture2D(map, (UV)))
48: #define GET_BUMPMAP(UV) (texture2D(bumpMap, (UV)))
49: #define GET_NORMALMAP(UV) (texture2D(normalMap, (UV)))
50: #define GET_SPECULARMAP(UV) (texture2D(specularMap, (UV)))
51: #define GET_ALPHAMAP(UV) (texture2D(alphaMap, (UV)))
52: #ifdef USE_ENVMAP
53: #ifdef HAVE_TEXTURE_LOD
54: #extension GL_EXT_shader_texture_lod : enable
55: #endif
56: #endif
57: #extension GL_OES_standard_derivatives : enable
58: precision highp float;
59: precision highp int;
60: uniform highp mat4 viewMatrix;
61: uniform highp mat4 projectionMatrix;
62: uniform highp vec3 cameraPosition;
63: #ifdef USE_ENVMAP
64: uniform mat4 viewMatrixInverse;
65: #endif
66: uniform sampler2D tDiffuse;

67: uniform sampler2D tAO;

68: uniform int useAO;

69: uniform sampler2D tOverlay;

70: uniform int useOverlay;

71: uniform vec2 resolution;

72: 

73: 

74: uniform int objID;

75: uniform vec3 objIDv3;

76: uniform sampler2D tID;

77: uniform float highlightIntensity;

78: 

79: uniform int highlightRange;

80: uniform int objIDStart;

81: uniform int objIDEnd;

82: 

83: varying vec2 vUv;

84: 

85: 
86: float luminance_post(vec3 rgb) {
87:     return dot(rgb, vec3(0.299, 0.587, 0.114));
88: }
89: float luminance_pre(vec3 rgb) {
90:     return dot(rgb, vec3(0.212671, 0.715160, 0.072169));
91: }
92: vec3 xyz2rgb(vec3 xyz) {
93:     vec3 R = vec3( 3.240479, -1.537150, -0.498535);
94:     vec3 G = vec3(-0.969256,  1.875992,  0.041556);
95:     vec3 B = vec3( 0.055648, -0.204043,  1.057311);
96:     vec3 rgb;
97:     rgb.b = dot(xyz, B);
98:     rgb.g = dot(xyz, G);
99:     rgb.r = dot(xyz, R);
100:     return rgb;
101: }
102: vec3 rgb2xyz(vec3 rgb) {
103:     vec3 X = vec3(0.412453, 0.35758, 0.180423);
104:     vec3 Y = vec3(0.212671, 0.71516, 0.0721688);
105:     vec3 Z = vec3(0.0193338, 0.119194, 0.950227);
106:     vec3 xyz;
107:     xyz.x = dot(rgb, X);
108:     xyz.y = dot(rgb, Y);
109:     xyz.z = dot(rgb, Z);
110:     return xyz;
111: }
112: vec3 xyz2xyY(vec3 xyz) {
113:     float sum = xyz.x + xyz.y + xyz.z;
114:     sum = 1.0 / sum;
115:     vec3 xyY;
116:     xyY.z = xyz.y;
117:     xyY.x = xyz.x * sum;
118:     xyY.y = xyz.y * sum;
119:     return xyY;
120: }
121: vec3 xyY2xyz(vec3 xyY) {
122:     float x = xyY.x;
123:     float y = xyY.y;
124:     float Y = xyY.z;
125:     vec3 xyz;
126:     xyz.y = Y;
127:     xyz.x = x * (Y / y);
128:     xyz.z = (1.0 - x - y) * (Y / y);
129:     return xyz;
130: }
131: float toneMapCanon_T(float x)
132: {
133:     float xpow = pow(x, 1.60525727);
134:     float tmp = ((1.05542877*4.68037409)*xpow) / (4.68037409*xpow + 1.0);
135:     return clamp(tmp, 0.0, 1.0);
136: }
137: const float Shift = 1.0 / 0.18;
138: float toneMapCanonFilmic_NoGamma(float x) {
139:     x *= Shift;
140:     const float A = 0.2;
141:     const float B = 0.34;
142:     const float C = 0.002;
143:     const float D = 1.68;
144:     const float E = 0.0005;
145:     const float F = 0.252;
146:     const float scale = 1.0/0.833837;
147:     return (((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F) * scale;
148: }
149: vec3 toneMapCanonFilmic_WithGamma(vec3 x) {
150:     x *= Shift;
151:     const float A = 0.27;
152:     const float B = 0.29;
153:     const float C = 0.052;
154:     const float D = 0.2;
155:     const float F = 0.18;
156:     const float scale = 1.0/0.897105;
157:     return (((x*(A*x+C*B))/(x*(A*x+B)+D*F))) * scale;
158: }
159: vec3 toneMapCanonOGS_WithGamma_WithColorPerserving(vec3 x) {
160:     vec3 outColor = x.rgb;
161:     outColor = min(outColor, vec3(3.0));
162:     float inLum = luminance_pre(outColor);
163:     if (inLum > 0.0) {
164:         float outLum = toneMapCanon_T(inLum);
165:         outColor = outColor * (outLum / inLum);
166:         outColor = clamp(outColor, vec3(0.0), vec3(1.0));
167:     }
168:     float gamma = 1.0/2.2;
169:     outColor = pow(outColor, vec3(gamma));
170:     return outColor;
171: }
172: 

173: 

174: 

175: 

176: 

177: vec4 overlayEdgeDetect(vec2 vUv) {

178: #define IS_SELECTION(C) ( (C).b > (C).r && (C).b > (C).g )

179: #define CHECK_EDGE_ALPHA(I, J)     { vec4 c = texture2D( tOverlay, vUv+resolution*vec2((I),(J)) ); maxAlpha = max(maxAlpha, c.a); if (c.a > 0.0 && IS_SELECTION(c)) { hasEdge++; selectionPixel = c; } }

180: #define CHECK_EDGE_SELECTION(I, J) { vec4 c = texture2D( tOverlay, vUv+resolution*vec2((I),(J)) ); maxAlpha = max(maxAlpha, c.a); if (c.a <= 0.0) hasEdge++; }

181: 

182:     int hasEdge = 0;

183:     vec4 center = texture2D(tOverlay, vUv);

184:     vec4 selectionPixel = vec4(0.0);

185:     float maxAlpha = 0.0;

186:     bool paintOutline = false;

187: 

188:     if (center.a <= 0.0) {

189:         CHECK_EDGE_ALPHA(-1.0,-1.0);

190:         CHECK_EDGE_ALPHA( 0.0,-1.0);

191:         CHECK_EDGE_ALPHA( 1.0,-1.0);

192:         CHECK_EDGE_ALPHA(-1.0, 0.0);

193:         CHECK_EDGE_ALPHA( 1.0, 0.0);

194:         CHECK_EDGE_ALPHA(-1.0, 1.0);

195:         CHECK_EDGE_ALPHA( 0.0, 1.0);

196:         CHECK_EDGE_ALPHA( 1.0, 1.0);

197:         if (hasEdge != 0) {

198:             center = selectionPixel;

199:             paintOutline = true;

200:         }

201:     }

202:     else if (center.a > 0.0 && IS_SELECTION(center)) {

203:         CHECK_EDGE_SELECTION(-1.0,-1.0);

204:         CHECK_EDGE_SELECTION( 0.0,-1.0);

205:         CHECK_EDGE_SELECTION( 1.0,-1.0);

206:         CHECK_EDGE_SELECTION(-1.0, 0.0);

207:         CHECK_EDGE_SELECTION( 1.0, 0.0);

208:         CHECK_EDGE_SELECTION(-1.0, 1.0);

209:         CHECK_EDGE_SELECTION( 0.0, 1.0);

210:         CHECK_EDGE_SELECTION( 1.0, 1.0);

211:         if (hasEdge != 0)

212:             paintOutline = true;

213:         else

214:             center.a = -center.a;

215:     }

216: 

217: 

218:     if (paintOutline) {

219:         float maxComponent = max(center.r, max(center.g, center.b));

220:         center.rgb /= maxComponent;

221:         center.rgb = sqrt(center.rgb);

222:         center.a = 0.5 + 0.5 * maxAlpha * 0.125 * float(hasEdge);

223:     }

224: 

225:     return center;

226: }

227: 

228: vec4 sampleColor() {

229:     return texture2D( tDiffuse, vUv );

230: }

231: 

232: float sampleAO() {

233: 

234:     return (useAO != 0) ? sqrt(texture2D(tAO, vUv).r) : 1.0;

235: }

236: 

237: void main() {

238: 

239:     vec4 texel = sampleColor();

240: 

241: 

242: 

243: 

244: 

245:     texel.rgb *= sampleAO();

246: 

247: 

248:     if (useOverlay != 0) {

249:         vec4 overlay = overlayEdgeDetect(vUv);

250: 

251:         if (overlay.a < 0.0) {

252:             overlay.a = -overlay.a;

253: 

254:             if (overlay.a >= 0.99) {

255: 

256: 

257:                 overlay.a = 0.75;

258:                 texel.rgb = vec3(luminance_post(texel.rgb));

259:             }

260:         }

261: 

262:         texel.rgb = mix(texel.rgb, sqrt(overlay.rgb), overlay.a);

263:     }

264: 

265:     if (highlightRange == 0) {

266:         if (objID != 0) {

267: 

268:             vec4 idAtPixel = texture2D(tID, vUv);

269: 

270:             vec3 idDelta = abs(idAtPixel.rgb - objIDv3.rgb);

271:             if (max(max(idDelta.r, idDelta.g), idDelta.b) < 1e-3) {

272: #ifdef IS_2D

273:                 texel.rgb = mix(texel.rgb, vec3(1.0,1.0,0.0), highlightIntensity * 0.25);

274: #else

275:                 texel.rgb += highlightIntensity * 0.2;

276: #endif

277:             }

278: 

279:         }

280:     } else {

281:         vec4 idAtPixel = texture2D(tID, vUv);

282:         int dbId = int(idAtPixel.r * 255.0 + idAtPixel.g * 255.0 * 256.0 + idAtPixel.b * 255.0 * 256.0 * 256.0);

283:         if (dbId >= objIDStart && dbId <= objIDEnd) {

284: #ifdef IS_2D

285:             texel.rgb = mix(texel.rgb, vec3(1.0,1.0,0.0), highlightIntensity * 0.25);

286: #else

287:             texel.rgb += highlightIntensity * 0.2;

288: #endif

289:         }

290:     }

291: 

292:     gl_FragColor = texel;

293: }

294:   firefly.min.js:1:24472
THREE.WebGLShader: gl.getShaderInfoLog() WARNING: 0:1: extension 'GL_ARB_gpu_shader5' is not supported
  firefly.min.js:1:24454
1: precision highp float;
2: precision highp int;
3: 
4: #define VERTEX_TEXTURES
5: 
6: 
7: #define GAMMA_FACTOR 1
8: 
9: 
10: #define MAX_DIR_LIGHTS 0
11: #define MAX_POINT_LIGHTS 0
12: #define MAX_SPOT_LIGHTS 0
13: #define MAX_HEMI_LIGHTS 0
14: #define MAX_BONES undefined
15: #define NUM_CUTPLANES 0
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: uniform mat4 modelMatrix;
41: uniform mat4 modelViewMatrix;
42: uniform mat4 projectionMatrix;
43: uniform mat4 viewMatrix;
44: uniform mat3 normalMatrix;
45: uniform vec3 cameraPosition;
46: attribute vec3 position;
47: #ifdef UNPACK_NORMALS
48: attribute vec2 normal;
49: #else
50: attribute vec3 normal;
51: #endif
52: attribute vec2 uv;
53: attribute vec2 uv2;
54: #ifdef PRISMWOOD
55: attribute vec3 uvw;
56: #endif
57: #ifdef USE_COLOR
58:     attribute vec3 color;
59: #endif
60: uniform vec2 uResolution;
61: varying vec2 vPos;
62: varying vec4 vPosPos;
63: void main() {
64:     vPos = uv;
65:     vPosPos.xy = uv + vec2(-0.5, -0.5) * uResolution;
66:     vPosPos.zw = uv + vec2( 0.5,  0.5) * uResolution;
67:     gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
68: }
69:   firefly.min.js:1:24472
THREE.WebGLShader: gl.getShaderInfoLog() WARNING: 0:1: extension 'GL_ARB_gpu_shader5' is not supported
  firefly.min.js:1:24454
1: 
2: 
3: 
4: #define HAVE_TEXTURE_LOD
5: 
6: #define MAX_DIR_LIGHTS 0
7: #define MAX_POINT_LIGHTS 0
8: #define MAX_SPOT_LIGHTS 0
9: #define MAX_HEMI_LIGHTS 0
10: #define NUM_CUTPLANES 0
11: 
12: 
13: 
14: #define GAMMA_FACTOR 1
15: 
16: 
17: 
18: #define TONEMAP_OUTPUT 0
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: #define GET_MAP(UV) (texture2D(map, (UV)))
48: #define GET_BUMPMAP(UV) (texture2D(bumpMap, (UV)))
49: #define GET_NORMALMAP(UV) (texture2D(normalMap, (UV)))
50: #define GET_SPECULARMAP(UV) (texture2D(specularMap, (UV)))
51: #define GET_ALPHAMAP(UV) (texture2D(alphaMap, (UV)))
52: #ifdef USE_ENVMAP
53: #ifdef HAVE_TEXTURE_LOD
54: #extension GL_EXT_shader_texture_lod : enable
55: #endif
56: #endif
57: #extension GL_OES_standard_derivatives : enable
58: precision highp float;
59: precision highp int;
60: uniform highp mat4 viewMatrix;
61: uniform highp mat4 projectionMatrix;
62: uniform highp vec3 cameraPosition;
63: #ifdef USE_ENVMAP
64: uniform mat4 viewMatrixInverse;
65: #endif
66: #define FXAA_EDGE_SHARPNESS (8.0)
67: #define FXAA_EDGE_THRESHOLD (0.125)
68: #define FXAA_EDGE_THRESHOLD_MIN (0.05)
69: #define FXAA_RCP_FRAME_OPT (0.50)
70: #define FXAA_RCP_FRAME_OPT2 (2.0)
71: uniform sampler2D tDiffuse;
72: uniform highp vec2 uResolution;
73: varying vec2 vPos;
74: varying vec4 vPosPos;
75: float FxaaLuma(vec3 rgb) {
76:     return dot(rgb, vec3(0.299, 0.587, 0.114));
77: }
78: void main() {
79:     float lumaNw = FxaaLuma(texture2D(tDiffuse, vPosPos.xy).rgb);
80:     float lumaSw = FxaaLuma(texture2D(tDiffuse, vPosPos.xw).rgb);
81:     float lumaNe = FxaaLuma(texture2D(tDiffuse, vPosPos.zy).rgb) + 1.0/384.0;
82:     float lumaSe = FxaaLuma(texture2D(tDiffuse, vPosPos.zw).rgb);
83:     vec3 rgbM = texture2D(tDiffuse, vPos.xy).rgb;
84:     float lumaM = FxaaLuma(rgbM.rgb);
85:     float lumaMax = max(max(lumaNe, lumaSe), max(lumaNw, lumaSw));
86:     float lumaMin = min(min(lumaNe, lumaSe), min(lumaNw, lumaSw));
87:     float lumaMaxSubMinM = max(lumaMax, lumaM) - min(lumaMin, lumaM);
88:     float lumaMaxScaledClamped = max(FXAA_EDGE_THRESHOLD_MIN, lumaMax * FXAA_EDGE_THRESHOLD);
89:     if (lumaMaxSubMinM < lumaMaxScaledClamped) {
90:         gl_FragColor = vec4(rgbM, 1.0);
91:         return;
92:     }
93:     float dirSwMinusNe = lumaSw - lumaNe;
94:     float dirSeMinusNw = lumaSe - lumaNw;
95:     vec2 dir1 = normalize(vec2(dirSwMinusNe + dirSeMinusNw, dirSwMinusNe - dirSeMinusNw));
96:     vec3 rgbN1 = texture2D(tDiffuse, vPos.xy - dir1 * FXAA_RCP_FRAME_OPT*uResolution).rgb;
97:     vec3 rgbP1 = texture2D(tDiffuse, vPos.xy + dir1 * FXAA_RCP_FRAME_OPT*uResolution).rgb;
98:     float dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * FXAA_EDGE_SHARPNESS;
99:     vec2 dir2 = clamp(dir1.xy / dirAbsMinTimesC, -2.0, 2.0);
100:     vec3 rgbN2 = texture2D(tDiffuse, vPos.xy - dir2 * FXAA_RCP_FRAME_OPT2*uResolution).rgb;
101:     vec3 rgbP2 = texture2D(tDiffuse, vPos.xy + dir2 * FXAA_RCP_FRAME_OPT2*uResolution).rgb;
102:     vec3 rgbA = rgbN1 + rgbP1;
103:     vec3 rgbB = ((rgbN2 + rgbP2) * 0.25) + (rgbA * 0.25);
104:     float lumaB = FxaaLuma(rgbB);
105:     if ((lumaB < lumaMin) || (lumaB > lumaMax))
106:         gl_FragColor = vec4(rgbA * 0.5, 1.0);
107:     else
108:         gl_FragColor = vec4(rgbB, 1.0);
109: }
110:   firefly.min.js:1:24472
THREE.WebGLShader: gl.getShaderInfoLog() WARNING: 0:1: extension 'GL_ARB_gpu_shader5' is not supported
  firefly.min.js:1:24454
1: precision highp float;
2: precision highp int;
3: 
4: #define VERTEX_TEXTURES
5: 
6: 
7: #define GAMMA_FACTOR 1
8: 
9: 
10: #define MAX_DIR_LIGHTS 1
11: #define MAX_POINT_LIGHTS 0
12: #define MAX_SPOT_LIGHTS 0
13: #define MAX_HEMI_LIGHTS 0
14: #define MAX_BONES undefined
15: #define NUM_CUTPLANES 0
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: uniform mat4 modelMatrix;
41: uniform mat4 modelViewMatrix;
42: uniform mat4 projectionMatrix;
43: uniform mat4 viewMatrix;
44: uniform mat3 normalMatrix;
45: uniform vec3 cameraPosition;
46: attribute vec3 position;
47: #ifdef UNPACK_NORMALS
48: attribute vec2 normal;
49: #else
50: attribute vec3 normal;
51: #endif
52: attribute vec2 uv;
53: attribute vec2 uv2;
54: #ifdef PRISMWOOD
55: attribute vec3 uvw;
56: #endif
57: #ifdef USE_COLOR
58:     attribute vec3 color;
59: #endif
60: uniform vec2 uResolution;
61: varying vec2 vPos;
62: varying vec4 vPosPos;
63: void main() {
64:     vPos = uv;
65:     vPosPos.xy = uv + vec2(-0.5, -0.5) * uResolution;
66:     vPosPos.zw = uv + vec2( 0.5,  0.5) * uResolution;
67:     gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
68: }
69:   firefly.min.js:1:24472
THREE.WebGLShader: gl.getShaderInfoLog() WARNING: 0:1: extension 'GL_ARB_gpu_shader5' is not supported
  firefly.min.js:1:24454
1: 
2: 
3: 
4: #define HAVE_TEXTURE_LOD
5: 
6: #define MAX_DIR_LIGHTS 1
7: #define MAX_POINT_LIGHTS 0
8: #define MAX_SPOT_LIGHTS 0
9: #define MAX_HEMI_LIGHTS 0
10: #define NUM_CUTPLANES 0
11: 
12: 
13: 
14: #define GAMMA_FACTOR 1
15: 
16: 
17: 
18: #define TONEMAP_OUTPUT 0
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: #define GET_MAP(UV) (texture2D(map, (UV)))
48: #define GET_BUMPMAP(UV) (texture2D(bumpMap, (UV)))
49: #define GET_NORMALMAP(UV) (texture2D(normalMap, (UV)))
50: #define GET_SPECULARMAP(UV) (texture2D(specularMap, (UV)))
51: #define GET_ALPHAMAP(UV) (texture2D(alphaMap, (UV)))
52: #ifdef USE_ENVMAP
53: #ifdef HAVE_TEXTURE_LOD
54: #extension GL_EXT_shader_texture_lod : enable
55: #endif
56: #endif
57: #extension GL_OES_standard_derivatives : enable
58: precision highp float;
59: precision highp int;
60: uniform highp mat4 viewMatrix;
61: uniform highp mat4 projectionMatrix;
62: uniform highp vec3 cameraPosition;
63: #ifdef USE_ENVMAP
64: uniform mat4 viewMatrixInverse;
65: #endif
66: #define FXAA_EDGE_SHARPNESS (8.0)
67: #define FXAA_EDGE_THRESHOLD (0.125)
68: #define FXAA_EDGE_THRESHOLD_MIN (0.05)
69: #define FXAA_RCP_FRAME_OPT (0.50)
70: #define FXAA_RCP_FRAME_OPT2 (2.0)
71: uniform sampler2D tDiffuse;
72: uniform highp vec2 uResolution;
73: varying vec2 vPos;
74: varying vec4 vPosPos;
75: float FxaaLuma(vec3 rgb) {
76:     return dot(rgb, vec3(0.299, 0.587, 0.114));
77: }
78: void main() {
79:     float lumaNw = FxaaLuma(texture2D(tDiffuse, vPosPos.xy).rgb);
80:     float lumaSw = FxaaLuma(texture2D(tDiffuse, vPosPos.xw).rgb);
81:     float lumaNe = FxaaLuma(texture2D(tDiffuse, vPosPos.zy).rgb) + 1.0/384.0;
82:     float lumaSe = FxaaLuma(texture2D(tDiffuse, vPosPos.zw).rgb);
83:     vec3 rgbM = texture2D(tDiffuse, vPos.xy).rgb;
84:     float lumaM = FxaaLuma(rgbM.rgb);
85:     float lumaMax = max(max(lumaNe, lumaSe), max(lumaNw, lumaSw));
86:     float lumaMin = min(min(lumaNe, lumaSe), min(lumaNw, lumaSw));
87:     float lumaMaxSubMinM = max(lumaMax, lumaM) - min(lumaMin, lumaM);
88:     float lumaMaxScaledClamped = max(FXAA_EDGE_THRESHOLD_MIN, lumaMax * FXAA_EDGE_THRESHOLD);
89:     if (lumaMaxSubMinM < lumaMaxScaledClamped) {
90:         gl_FragColor = vec4(rgbM, 1.0);
91:         return;
92:     }
93:     float dirSwMinusNe = lumaSw - lumaNe;
94:     float dirSeMinusNw = lumaSe - lumaNw;
95:     vec2 dir1 = normalize(vec2(dirSwMinusNe + dirSeMinusNw, dirSwMinusNe - dirSeMinusNw));
96:     vec3 rgbN1 = texture2D(tDiffuse, vPos.xy - dir1 * FXAA_RCP_FRAME_OPT*uResolution).rgb;
97:     vec3 rgbP1 = texture2D(tDiffuse, vPos.xy + dir1 * FXAA_RCP_FRAME_OPT*uResolution).rgb;
98:     float dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * FXAA_EDGE_SHARPNESS;
99:     vec2 dir2 = clamp(dir1.xy / dirAbsMinTimesC, -2.0, 2.0);
100:     vec3 rgbN2 = texture2D(tDiffuse, vPos.xy - dir2 * FXAA_RCP_FRAME_OPT2*uResolution).rgb;
101:     vec3 rgbP2 = texture2D(tDiffuse, vPos.xy + dir2 * FXAA_RCP_FRAME_OPT2*uResolution).rgb;
102:     vec3 rgbA = rgbN1 + rgbP1;
103:     vec3 rgbB = ((rgbN2 + rgbP2) * 0.25) + (rgbA * 0.25);
104:     float lumaB = FxaaLuma(rgbB);
105:     if ((lumaB < lumaMin) || (lumaB > lumaMax))
106:         gl_FragColor = vec4(rgbA * 0.5, 1.0);
107:     else
108:         gl_FragColor = vec4(rgbB, 1.0);
109: }
110:   firefly.min.js:1:24472
importing globa.js and simulation.js  worker.js:6:1
importing emscripten.js  worker.js:9:1
trying binaryen method: native-wasm  emscripten.js:125:4
Assertion failed: on the web, we need the wasm binary to be preloaded and set on Module['wasmBinary']. emcc.py will do that for you when generating HTML (but not JS)  emscripten.js:122:4
Assertion failed: on the web, we need the wasm binary to be preloaded and set on Module['wasmBinary']. emcc.py will do that for you when generating HTML (but not JS)  emscripten.js:125:4
failed to compile wasm module: abort("Assertion failed: on the web, we need the wasm binary to be preloaded and set on Module['wasmBinary']. emcc.py will do that for you when generating HTML (but not JS)") at jsStackTrace@http://localhost:5000/lammps/emscripten.js:794:12
stackTrace@http://localhost:5000/lammps/emscripten.js:808:11
abort@http://localhost:5000/lammps/emscripten.js:8581:43
assert@http://localhost:5000/lammps/emscripten.js:332:3
getBinary@http://localhost:5000/lammps/emscripten.js:1170:4
doNativeWasm@http://localhost:5000/lammps/emscripten.js:1215:63
integrateWasmJS/Module.asm@http://localhost:5000/lammps/emscripten.js:1331:19
@http://localhost:5000/lammps/emscripten.js:8303:10
@http://localhost:5000/lammps/worker.js:10:1

If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.  emscripten.js:125:4
trying binaryen method: asmjs  emscripten.js:125:4
XML Parsing Error: no root element found
Location: https://ase-stg.autodesk.com/adp/v1/analytics/upload
Line Number 1, Column 1:  upload:1:1
binaryen method succeeded.  emscripten.js:125:4
ID buffer requested, but MRT is not supported. Some features will not work. firefly.min.js:1:24454
VIEWER: Inside molview initialized  viewer.js:77:2
6973  viewer.js:78:2
cPromise resolved  molview.min.js:4:16850
2 ms to build arrays  molview.min.js:3:7739
undefined  firefly.min.js:19:21732
VIEWER: About to change representation!  viewer.js:32:2
saveSession Socket-ID is  389D068E-A38B-4FF4-A648-678D07C3B83E  nanocore.min.js:9:10532
GET 
XHR 
http://localhost:5000/checkS3Url/94604504d07c7ec9d9b83d7fbd3dc798 [HTTP/1.0 404 File not found 0ms]
Unable to find VR supported display.  firefly.min.js:1:24454
TypeError: Module.get_dir_path is not a function  simulation.js:4
POST 
XHR 
http://localhost:5000/savesession/ [HTTP/1.0 501 Unsupported method ('POST') 1ms]
command: timestep 0.5  worker.js:157:4
TypeError: Module.exec_cmd is not a function  worker.js:158
error  501  nanocore.min.js:9:10958
There was an error saving the session: Error: Status code 501
Stack trace:
Autodesk.Nano.ApiConnector.prototype.saveSession/</i.onload@http://localhost:5000/tmp/nanocore.min.js:9:10994
  nanocore.min.js:9:11208
TypeError: Module.apply_nvt_settings is not a function  simulation.js:27
TypeError: Module.run_simulation is not a function