Sha256: 05fdeb3573b3013e3c9f671ee14f4c4c60e1e033423a0edb4e0b900492874d61

Contents?: true

Size: 938 Bytes

Versions: 2

Compression:

Stored size: 938 Bytes

Contents

class Jax.ShadowMap.Directional extends Jax.ShadowMap
  
  center = vec3.create()
  setupProjection: (projection, context) ->
    center[0] = center[1] = center[2] = 0
    count = 0
    for obj in context.world.getObjects()
      continue unless obj.castShadow
      count += 1
      vec3.add obj.camera.position, center, center
      
    if count > 0
      vec3.scale center, 1 / count
      @light.camera.position = center
      
      sceneRadius = 0
      dist = vec3.create()
      for obj in context.world.getObjects()
        continue unless obj.castShadow
        length = vec3.length(vec3.subtract center, obj.camera.position, dist) + obj.mesh?.bounds.radius
        sceneRadius = length if sceneRadius < length
      
      sceneRadius = 1 if sceneRadius is 0
      mat4.ortho -sceneRadius, sceneRadius, -sceneRadius, sceneRadius, -sceneRadius, sceneRadius, projection
    else
      mat4.ortho -1, 1, -1, 1, -1, 1, projection

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jax-3.0.0.rc2 lib/assets/javascripts/jax/shadow_map/directional.coffee
jax-3.0.0.rc1 lib/assets/javascripts/jax/shadow_map/directional.coffee