WebGLRenderStates.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /**
  2. * @author Mugen87 / https://github.com/Mugen87
  3. */
  4. import { WebGLLights } from './WebGLLights.js';
  5. function WebGLRenderState() {
  6. var lights = new WebGLLights();
  7. var lightsArray = [];
  8. var shadowsArray = [];
  9. function init() {
  10. lightsArray.length = 0;
  11. shadowsArray.length = 0;
  12. }
  13. function pushLight( light ) {
  14. lightsArray.push( light );
  15. }
  16. function pushShadow( shadowLight ) {
  17. shadowsArray.push( shadowLight );
  18. }
  19. function setupLights( camera ) {
  20. lights.setup( lightsArray, shadowsArray, camera );
  21. }
  22. var state = {
  23. lightsArray: lightsArray,
  24. shadowsArray: shadowsArray,
  25. lights: lights
  26. };
  27. return {
  28. init: init,
  29. state: state,
  30. setupLights: setupLights,
  31. pushLight: pushLight,
  32. pushShadow: pushShadow
  33. };
  34. }
  35. function WebGLRenderStates() {
  36. var renderStates = {};
  37. function get( scene, camera ) {
  38. var renderState;
  39. if ( renderStates[ scene.id ] === undefined ) {
  40. renderState = new WebGLRenderState();
  41. renderStates[ scene.id ] = {};
  42. renderStates[ scene.id ][ camera.id ] = renderState;
  43. } else {
  44. if ( renderStates[ scene.id ][ camera.id ] === undefined ) {
  45. renderState = new WebGLRenderState();
  46. renderStates[ scene.id ][ camera.id ] = renderState;
  47. } else {
  48. renderState = renderStates[ scene.id ][ camera.id ];
  49. }
  50. }
  51. return renderState;
  52. }
  53. function dispose() {
  54. renderStates = {};
  55. }
  56. return {
  57. get: get,
  58. dispose: dispose
  59. };
  60. }
  61. export { WebGLRenderStates };