jax 0.0.0.8 → 0.0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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