jax 0.0.0.8 → 0.0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. data/CHANGELOG +22 -0
  2. data/Rakefile +2 -1
  3. data/builtin/shaders/functions/noise.ejs +0 -3
  4. data/guides/assets/javascripts/syntaxhighlighter/shBrushCpp.js +31 -3
  5. data/guides/jax_guides/common.rb +1 -1
  6. data/guides/source/index.html.erb +4 -4
  7. data/guides/source/shaders.textile +496 -2
  8. data/lib/jax/generators/app/templates/public/javascripts/jax.js +130 -94
  9. data/lib/jax/generators/app/templates/spec/javascripts/support/spec_helpers/jax_spec_environment_helper.js +33 -0
  10. data/lib/jax/generators/app/templates/spec/javascripts/support/spec_layout.html.erb +1 -13
  11. data/lib/jax/generators/shader/templates/fragment.ejs.tt +2 -3
  12. data/lib/jax/generators/shader/templates/spec.js.tt +4 -11
  13. data/lib/jax/routes.rb +0 -3
  14. data/lib/jax/tasks/rake.rb +4 -0
  15. data/lib/jax/version.rb +1 -1
  16. data/spec/example_app/app/shaders/blob/vertex.ejs +2 -0
  17. data/spec/example_app/spec/javascripts/shaders/blob_spec.js +5 -8
  18. data/spec/example_app/spec/javascripts/support/spec_helpers/jax_spec_environment_helper.js +33 -0
  19. data/spec/example_app/spec/javascripts/support/spec_layout.html.erb +1 -13
  20. data/spec/generators/app_generator_spec.rb +1 -0
  21. data/spec/javascripts/helpers/jax_spec_environment_helper.js +33 -0
  22. data/spec/javascripts/helpers/{SpecHelper.js → jax_spec_helper.js} +0 -0
  23. data/spec/javascripts/jax/core/utils_spec.js +21 -2
  24. data/spec/lib/jax/tasks/jax_rake_spec.rb +13 -0
  25. data/src/jax/context.js +1 -1
  26. data/src/jax/core/util.js +12 -5
  27. data/src/jax/mvc/model.js +1 -0
  28. data/src/jax/webgl/scene/light_manager.js +58 -45
  29. data/src/jax/webgl/scene/light_source.js +49 -4
  30. data/src/jax/webgl/world.js +12 -46
  31. metadata +11 -6
@@ -41,7 +41,12 @@ Jax.World = (function() {
41
41
  * Adds the model to the world and then returns the model itself unchanged.
42
42
  *
43
43
  **/
44
- addObject: function(object) { this.objects.push(object); this.invalidate(); return object; },
44
+ addObject: function(object) {
45
+ this.objects.push(object);
46
+ if (object.isLit() || object.isShadowCaster())
47
+ this.lighting.addObject(object);
48
+ return object;
49
+ },
45
50
 
46
51
  /**
47
52
  * Jax.World#getObject(index) -> Jax.Model
@@ -62,7 +67,7 @@ Jax.World = (function() {
62
67
  if (this.objects[object_or_index]) {
63
68
  var obj = this.objects[object_or_index];
64
69
  this.objects.splice(object_or_index, 1);
65
- this.invalidate();
70
+ this.lighting.removeObject(obj);
66
71
  return obj;
67
72
  }
68
73
  else
@@ -70,7 +75,7 @@ Jax.World = (function() {
70
75
  if (this.objects[i] == object_or_index)
71
76
  {
72
77
  this.objects.splice(i, 1);
73
- this.invalidate();
78
+ this.lighting.removeObject(this.objects[i]);
74
79
  return this.objects[i];
75
80
  }
76
81
  },
@@ -183,32 +188,7 @@ Jax.World = (function() {
183
188
  return this.objects.length;
184
189
  },
185
190
 
186
- invalidate: function() {
187
- while (this.shadow_casters.length > 0) {
188
- /* TODO we still need to unregister the camera event listener */
189
- this.shadow_casters.pop();
190
- }
191
-
192
- var updated = function() { self.shadowmaps_valid = false; };
193
-
194
- var i;
195
- for (i = 0; i < this.objects.length; i++) {
196
- var self = this;
197
- if (this.objects[i].isShadowCaster()) {
198
- this.objects[i].camera.addEventListener('matrixUpdated', updated);
199
- this.shadow_casters.push(this.objects[i]);
200
- }
201
- }
202
-
203
- for (i = 0; i < this.lighting.count(); i++) {
204
- var light = this.lighting.getLight(i);
205
- if (light.isShadowcaster())
206
- light.camera.addEventListener('matrixUpdated', updated);
207
- }
208
- this.shadowmaps_valid = false;
209
- },
210
-
211
- getShadowCasters: function() { return this.shadow_casters; },
191
+ getShadowCasters: function() { return this.lighting.getShadowCasters(); },//return this.shadow_casters; },
212
192
 
213
193
  render: function(options) {
214
194
  var i;
@@ -220,30 +200,16 @@ Jax.World = (function() {
220
200
  var unlit = Jax.Util.normalizeOptions(options, {unlit:true});
221
201
 
222
202
  if (this.lighting.isEnabled() && (!unlit.material || unlit.material.supportsLighting())) {
223
- /* ambient pass */
224
- /*
225
- So.... I see a legit need for an ambient pass for A) unlit objects and B)
226
- scene lighting. But jax doesn't yet support scene lighting so really only
227
- unlit objects need an ambient pass. For lit objects, why not let
228
- lighting take care of (ambient + diffuse + specular) all at once?
229
- */
203
+ /* ambient pass - unlit objects only because lit objects get ambient+diffuse+specular in one pass */
230
204
  for (i = 0; i < this.objects.length; i++)
231
- if (!this.objects[i].lit) {
205
+ if (!this.objects[i].isLit()) {
232
206
  unlit.model_index = i;
233
207
  this.objects[i].render(this.context, unlit);
234
208
  }
235
- // this.lighting.ambient(this.context, this.objects);
236
209
 
237
- /* shadowgen pass */
238
- this.context.current_pass = Jax.Scene.SHADOWMAP_PASS;
239
- if (!this.shadowmaps_valid) {
240
- this.lighting.updateShadowMaps(this.context, this.shadow_casters);
241
- this.shadowmaps_valid = true;
242
- }
243
-
244
210
  /* illumination pass */
245
211
  this.context.current_pass = Jax.Scene.ILLUMINATION_PASS;
246
- this.lighting.illuminate(this.context, this.objects, options);
212
+ this.lighting.illuminate(this.context, options);
247
213
  } else {
248
214
  for (i = 0; i < this.objects.length; i++) {
249
215
  unlit.model_index = i;
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: jax
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.0.8
5
+ version: 0.0.0.9
6
6
  platform: ruby
7
7
  authors:
8
8
  - Colin MacKenzie IV
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-31 00:00:00 -04:00
13
+ date: 2011-06-02 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -381,6 +381,7 @@ files:
381
381
  - lib/jax/generators/app/templates/spec/javascripts/support/jasmine.yml
382
382
  - lib/jax/generators/app/templates/spec/javascripts/support/jasmine_config.rb
383
383
  - lib/jax/generators/app/templates/spec/javascripts/support/jasmine_runner.rb
384
+ - lib/jax/generators/app/templates/spec/javascripts/support/spec_helpers/jax_spec_environment_helper.js
384
385
  - lib/jax/generators/app/templates/spec/javascripts/support/spec_helpers/jax_spec_helper.js
385
386
  - lib/jax/generators/app/templates/spec/javascripts/support/spec_layout.html.erb
386
387
  - lib/jax/generators/commands.rb
@@ -491,6 +492,7 @@ files:
491
492
  - spec/example_app/spec/javascripts/shaders/blob_spec.js
492
493
  - spec/example_app/spec/javascripts/support/jasmine.yml
493
494
  - spec/example_app/spec/javascripts/support/jasmine_runner.rb
495
+ - spec/example_app/spec/javascripts/support/spec_helpers/jax_spec_environment_helper.js
494
496
  - spec/example_app/spec/javascripts/support/spec_helpers/jax_spec_helper.js
495
497
  - spec/example_app/spec/javascripts/support/spec_layout.html.erb
496
498
  - spec/generators/app_generator_spec.rb
@@ -498,7 +500,8 @@ files:
498
500
  - spec/generators/light_generator_spec.rb
499
501
  - spec/generators/material_generator_spec.rb
500
502
  - spec/generators/model_generator_spec.rb
501
- - spec/javascripts/helpers/SpecHelper.js
503
+ - spec/javascripts/helpers/jax_spec_environment_helper.js
504
+ - spec/javascripts/helpers/jax_spec_helper.js
502
505
  - spec/javascripts/jax/builtin/meshes/cube_spec.js
503
506
  - spec/javascripts/jax/builtin/meshes/plane_spec.js
504
507
  - spec/javascripts/jax/builtin/meshes/quad_spec.js
@@ -741,7 +744,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
741
744
  requirements:
742
745
  - - ">="
743
746
  - !ruby/object:Gem::Version
744
- hash: 4480914086446423946
747
+ hash: -4302524360687155854
745
748
  segments:
746
749
  - 0
747
750
  version: "0"
@@ -750,7 +753,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
750
753
  requirements:
751
754
  - - ">="
752
755
  - !ruby/object:Gem::Version
753
- hash: 4480914086446423946
756
+ hash: -4302524360687155854
754
757
  segments:
755
758
  - 0
756
759
  version: "0"
@@ -825,6 +828,7 @@ test_files:
825
828
  - spec/example_app/spec/javascripts/shaders/blob_spec.js
826
829
  - spec/example_app/spec/javascripts/support/jasmine.yml
827
830
  - spec/example_app/spec/javascripts/support/jasmine_runner.rb
831
+ - spec/example_app/spec/javascripts/support/spec_helpers/jax_spec_environment_helper.js
828
832
  - spec/example_app/spec/javascripts/support/spec_helpers/jax_spec_helper.js
829
833
  - spec/example_app/spec/javascripts/support/spec_layout.html.erb
830
834
  - spec/generators/app_generator_spec.rb
@@ -832,7 +836,8 @@ test_files:
832
836
  - spec/generators/light_generator_spec.rb
833
837
  - spec/generators/material_generator_spec.rb
834
838
  - spec/generators/model_generator_spec.rb
835
- - spec/javascripts/helpers/SpecHelper.js
839
+ - spec/javascripts/helpers/jax_spec_environment_helper.js
840
+ - spec/javascripts/helpers/jax_spec_helper.js
836
841
  - spec/javascripts/jax/builtin/meshes/cube_spec.js
837
842
  - spec/javascripts/jax/builtin/meshes/plane_spec.js
838
843
  - spec/javascripts/jax/builtin/meshes/quad_spec.js