javascript - Three.js glow shader front face not rendering in chrome, works in other browsers -


i running issue trying apply custom shader material series of nested objects simulate glow effect around each node. effect works on home laptop (windows 8.1 latest chrome), work computer not render frontface of glowing object, backface. have checked against few systems , seems chrome rendering issue on windows devices. http://i.imgur.com/uyltoxm.gif

i have included codepen example shifted glow off side , can see in versions not rendering front group of normals. red dots should have glow applied each of them shows on front , back(left , right in example). appreciated, stumped going on.

here shader material settings local.glownodemat = new three.shadermaterial(          {             uniforms:              {                  "c":   { type: "f", value: 0 },                 "p":   { type: "f", value: 5.5 },                 glowcolor: { type: "c", value: new three.color(0xaaccff) },                 viewvector: { type: "v3", value: local.camera.position }             },             vertexshader:   document.getelementbyid( 'vertexshader'   ).textcontent,             fragmentshader: document.getelementbyid( 'fragmentshader' ).textcontent,             side: three.frontside,             blending: three.additiveblending,             transparent: true         });  

http://codepen.io/sniejadlik/pen/odare

/////////////////// fixed volune. help!

fixed vertex shader

<script id="vertexshader" type="x-shader/x-vertex">     uniform vec3 viewvector;     uniform float c;     uniform float p;     varying float intensity;     void main()      {         vec3 vnormal = normalize( normalmatrix * normal );         vec3 vnormel = normalize( normalmatrix * viewvector );         // incorrect intensity = pow( c - dot(vnormal, vnormel), p );         intensity = pow( abs(c - dot(vnormal, vnormel) ), p );          gl_position = projectionmatrix * modelviewmatrix * vec4( position, 1.0 );     }     </script>      <!-- fragment shader a.k.a. pixel shader -->     <script id="fragmentshader" type="x-shader/x-vertex">      uniform vec3 glowcolor;     varying float intensity;     void main()      {         vec3 glow = glowcolor * intensity;         gl_fragcolor = vec4( glow, 1.0 );     } </script> 

the error in vertex shader:

intensity = pow( c - dot(vnormal, vnormel), p ); 

you have c = 0 , p = 0.5. c - dot(vnormal, vnormel) may negative (when dot product returns positive value), you're trying square of negative value.

for unknown reason, fallback in firefox looks pow( abs(...), 0.5 ), while fallback in chrome seems 0.0.

try fix shader this:

intensity = pow( abs( c - dot(vnormal, vnormel) ), p ); 

Comments

Popular posts from this blog

java - How to specify maven bin in eclipse maven plugin? -

single sign on - Logging into Plone site with credentials passed through HTTP -

php - Why does AJAX not process login form? -