addbackground.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. window.prepareBackgroundMaterial = function() {
  2. var backSky = new BABYLON.BackgroundMaterial("backSky", scene);
  3. var hdrTexture = BABYLON.CubeTexture.CreateFromPrefilteredData("/playground/textures/environment.dds", scene);
  4. hdrTexture.coordinatesMode = BABYLON.Texture.SKYBOX_MODE
  5. backSky.reflectionTexture = hdrTexture;
  6. backSky.backFaceCulling = false;
  7. var back = new BABYLON.BackgroundMaterial("back", scene);
  8. back.diffuseTexture = new BABYLON.Texture("/playground/textures/WhiteTransarentRamp.png", scene);
  9. back.diffuseTexture.hasAlpha = true;
  10. // Skybox
  11. backgroundSkybox = BABYLON.Mesh.CreateBox("hdrSkyBox", 1000.0, scene);
  12. backgroundSkybox.material = backSky;
  13. backgroundSkybox.setEnabled(false);
  14. var mirrorMesh = BABYLON.Mesh.CreateTorus("torus", 4, 2, 30, scene, false);
  15. mirrorMesh.setEnabled(false);
  16. mirrorMesh.position = new BABYLON.Vector3(0, 3, 0);
  17. mirrorMesh.material = new BABYLON.StandardMaterial("", scene);
  18. mirrorMesh.material.emissiveColor = BABYLON.Color3.Red();
  19. var mirror = new BABYLON.MirrorTexture("mirror", {ratio: 0.3}, scene, true);
  20. mirror.renderList = [mirrorMesh];
  21. mirror.clearColor = new BABYLON.Color4(1, 1, 1, 0.0);
  22. mirror.mirrorPlane = new BABYLON.Plane(0, -1.0, 0, 0.0);
  23. mirror.adaptiveBlurKernel = 64;
  24. registerRangeUI("background", "primaryColorR", 0, 1, function(value) {
  25. mirror.clearColor.r = value;
  26. back.primaryColor.r = value;
  27. backSky.primaryColor.r = value;
  28. }, function() {
  29. return back.primaryColor.r;
  30. });
  31. registerRangeUI("background", "primaryColorG", 0, 1, function(value) {
  32. mirror.clearColor.g = value;
  33. back.primaryColor.g = value;
  34. backSky.primaryColor.g = value;
  35. }, function() {
  36. return back.primaryColor.g;
  37. });
  38. registerRangeUI("background", "primaryColorB", 0, 1, function(value) {
  39. mirror.clearColor.b = value;
  40. back.primaryColor.b = value;
  41. backSky.primaryColor.b = value;
  42. }, function() {
  43. return back.primaryColor.b;
  44. });
  45. registerRangeUI("background", "primaryLevel", 0, 30, function(value) {
  46. back.primaryLevel = value;
  47. backSky.primaryLevel = value;
  48. }, function() {
  49. return back.primaryLevel;
  50. });
  51. registerRangeUI("background", "secondaryColorR", 0, 1, function(value) {
  52. back.secondaryColor.r = value;
  53. backSky.secondaryColor.r = value;
  54. }, function() {
  55. return back.secondaryColor.r;
  56. });
  57. registerRangeUI("background", "secondaryColorG", 0, 1, function(value) {
  58. back.secondaryColor.g = value;
  59. backSky.secondaryColor.g = value;
  60. }, function() {
  61. return back.secondaryColor.g;
  62. });
  63. registerRangeUI("background", "secondaryColorB", 0, 1, function(value) {
  64. back.secondaryColor.b = value;
  65. backSky.secondaryColor.b = value;
  66. }, function() {
  67. return back.secondaryColor.b;
  68. });
  69. registerRangeUI("background", "secondaryLevel", 0, 30, function(value) {
  70. back.secondaryLevel = value;
  71. backSky.secondaryLevel = value;
  72. }, function() {
  73. return back.secondaryLevel;
  74. });
  75. registerRangeUI("background", "tertiaryColorR", 0, 1, function(value) {
  76. back.tertiaryColor.r = value;
  77. backSky.tertiaryColor.r = value;
  78. }, function() {
  79. return back.tertiaryColor.r;
  80. });
  81. registerRangeUI("background", "tertiaryColorG", 0, 1, function(value) {
  82. back.tertiaryColor.g = value;
  83. backSky.tertiaryColor.g = value;
  84. }, function() {
  85. return back.tertiaryColor.g;
  86. });
  87. registerRangeUI("background", "tertiaryColorB", 0, 1, function(value) {
  88. back.tertiaryColor.b = value;
  89. backSky.tertiaryColor.b = value;
  90. }, function() {
  91. return back.tertiaryColor.b;
  92. });
  93. registerRangeUI("background", "tertiaryLevel", 0, 30, function(value) {
  94. back.tertiaryLevel = value;
  95. backSky.tertiaryLevel = value;
  96. }, function() {
  97. return back.tertiaryLevel;
  98. });
  99. registerRangeUI("background", "reflectionBlur", 0, 1, function(value) {
  100. backSky.reflectionBlur = value;
  101. }, function() {
  102. return backSky.reflectionBlur;
  103. });
  104. registerRangeUI("background", "shadowLevel", 0, 1, function(value) {
  105. back.shadowLevel = value;
  106. backSky.shadowLevel = value;
  107. }, function() {
  108. return back.shadowLevel;
  109. });
  110. registerRangeUI("background", "alpha", 0, 1, function(value) {
  111. back.alpha = value;
  112. }, function() {
  113. return back.alpha;
  114. });
  115. registerRangeUI("background", "mirrorAmount", 0, 10, function(value) {
  116. back.reflectionAmount = value;
  117. }, function() {
  118. return back.reflectionAmount;
  119. });
  120. registerRangeUI("background", "mirrorFalloff", 0, 5, function(value) {
  121. back.reflectionFalloffDistance = value;
  122. }, function() {
  123. return back.reflectionFalloffDistance;
  124. });
  125. registerButtonUI("background", "ToggleBackRGB", function() {
  126. back.useRGBColor = !back.useRGBColor;
  127. });
  128. registerButtonUI("background", "ToggleSkyRGB", function() {
  129. backSky.useRGBColor = !backSky.useRGBColor;
  130. });
  131. registerButtonUI("background", "ToggleMirror", function() {
  132. if (back.reflectionFresnel) {
  133. back.reflectionFresnel = false;
  134. back.reflectionTexture = null;
  135. mirrorMesh.setEnabled(false);
  136. }
  137. else {
  138. back.reflectionFresnel = true;
  139. back.reflectionTexture = mirror;
  140. mirrorMesh.setEnabled(true);
  141. }
  142. });
  143. return back;
  144. }