/bin-release/srcview/source/away3d/materials/GlassMaterial.as.html

https://github.com/davidcoleman007/AS3MazeSolver · HTML · 228 lines · 193 code · 34 blank · 1 comment · 0 complexity · 5cabc464c5c9e937a70818d9f1a1454c MD5 · raw file

  1. <!-- saved from url=(0014)about:internet -->
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  6. <title>GlassMaterial.as</title>
  7. <link rel="stylesheet" type="text/css" href="../../../SourceStyles.css"/>
  8. </head>
  9. <body><pre><span class="ActionScriptpackage">package</span> <span class="ActionScriptDefault_Text">away3d</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">materials</span>
  10. <span class="ActionScriptBracket/Brace">{</span>
  11. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">away3d</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">cameras</span><span class="ActionScriptOperator">.</span><span class="ActionScriptOperator">*</span>;
  12. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">away3d</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">containers</span><span class="ActionScriptOperator">.</span><span class="ActionScriptOperator">*</span>;
  13. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">away3d</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">core</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">base</span><span class="ActionScriptOperator">.</span><span class="ActionScriptOperator">*</span>;
  14. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">display</span><span class="ActionScriptOperator">.</span><span class="ActionScriptOperator">*</span>;
  15. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">utils</span><span class="ActionScriptOperator">.</span><span class="ActionScriptOperator">*</span>;
  16. <span class="ActionScriptASDoc">/**
  17. * BitmapData material which creates reflections based on a cube map.
  18. * The reflection strength changes based on the refraction of the material and its environment,
  19. * as well as the angle of view. This can be used to create water-like reflections.
  20. */</span>
  21. <span class="ActionScriptReserved">public</span> <span class="ActionScriptclass">class</span> <span class="ActionScriptDefault_Text">GlassMaterial</span> <span class="ActionScriptReserved">extends</span> <span class="ActionScriptDefault_Text">SinglePassShaderMaterial</span>
  22. <span class="ActionScriptBracket/Brace">{</span>
  23. <span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptMetadata">Embed</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"../pbks/GlassShader.pbj"</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">mimeType</span><span class="ActionScriptOperator">=</span><span class="ActionScriptString">"application/octet-stream"</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">]</span>
  24. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">KernelBasic</span> : <span class="ActionScriptDefault_Text">Class</span>;
  25. <span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptMetadata">Embed</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"../pbks/GlassShaderChrDisp.pbj"</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">mimeType</span><span class="ActionScriptOperator">=</span><span class="ActionScriptString">"application/octet-stream"</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">]</span>
  26. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">KernelChroma</span> : <span class="ActionScriptDefault_Text">Class</span>;
  27. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_envMapAlpha</span> : <span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 1;
  28. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_outerRefraction</span> : <span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 1.0002926;
  29. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_innerRefraction</span> : <span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 1.330;
  30. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_fresnelMap</span> : <span class="ActionScriptDefault_Text">BitmapData</span>;
  31. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_glassColor</span> : <span class="ActionScriptDefault_Text">uint</span>;
  32. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_dispersionR</span> : <span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 1;
  33. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_dispersionG</span> : <span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 1;
  34. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_dispersionB</span> : <span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 1;
  35. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_chromaticDispersion</span> : <span class="ActionScriptDefault_Text">Boolean</span>;
  36. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_exponent</span> : <span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 5;
  37. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_fresnelMapDirty</span> : <span class="ActionScriptDefault_Text">Boolean</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">true</span>;
  38. <span class="ActionScriptASDoc">/**
  39. * Creates a new GlassMaterial object.
  40. *
  41. * @param normalMap An object-space normal map
  42. * @param envMap The spherical environment map used for reflections
  43. * @param targetModel The target mesh for which this shader is applied
  44. * @param init An initialisation object
  45. */</span>
  46. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">GlassMaterial</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">normalMap</span>:<span class="ActionScriptDefault_Text">BitmapData</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">envMap</span> : <span class="ActionScriptDefault_Text">BitmapData</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">targetModel</span>:<span class="ActionScriptDefault_Text">Mesh</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">chromaticDispersion</span> : <span class="ActionScriptDefault_Text">Boolean</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">false</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">init</span>:<span class="ActionScriptDefault_Text">Object</span><span class="ActionScriptOperator">=</span><span class="ActionScriptReserved">null</span><span class="ActionScriptBracket/Brace">)</span>
  47. <span class="ActionScriptBracket/Brace">{</span>
  48. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">kernel</span> : <span class="ActionScriptDefault_Text">ByteArray</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">chromaticDispersion</span> <span class="ActionScriptOperator">?</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">KernelChroma</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">KernelBasic</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  49. <span class="ActionScriptReserved">super</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">BitmapData</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">normalMap</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">width</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">normalMap</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">height</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptReserved">false</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">normalMap</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Shader</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">kernel</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">targetModel</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">init</span><span class="ActionScriptBracket/Brace">)</span>;
  50. <span class="ActionScriptDefault_Text">_useWorldCoords</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">true</span>;
  51. <span class="ActionScriptDefault_Text">_envMapAlpha</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">ini</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getNumber</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"envMapAlpha"</span><span class="ActionScriptOperator">,</span> 1<span class="ActionScriptBracket/Brace">)</span>;
  52. <span class="ActionScriptDefault_Text">_outerRefraction</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">ini</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getNumber</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"outerRefraction"</span><span class="ActionScriptOperator">,</span> 1.0008<span class="ActionScriptBracket/Brace">)</span>;
  53. <span class="ActionScriptDefault_Text">_innerRefraction</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">ini</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getNumber</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"innerRefraction"</span><span class="ActionScriptOperator">,</span> 1.330<span class="ActionScriptBracket/Brace">)</span>;
  54. <span class="ActionScriptDefault_Text">_dispersionR</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">ini</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getNumber</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"dispersionR"</span><span class="ActionScriptOperator">,</span> 1<span class="ActionScriptBracket/Brace">)</span>;
  55. <span class="ActionScriptDefault_Text">_dispersionG</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">ini</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getNumber</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"dispersionG"</span><span class="ActionScriptOperator">,</span> .95<span class="ActionScriptBracket/Brace">)</span>;
  56. <span class="ActionScriptDefault_Text">_dispersionB</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">ini</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getNumber</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"dispersionB"</span><span class="ActionScriptOperator">,</span> .9<span class="ActionScriptBracket/Brace">)</span>;
  57. <span class="ActionScriptDefault_Text">_exponent</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">ini</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getNumber</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"exponent"</span><span class="ActionScriptOperator">,</span> 5<span class="ActionScriptBracket/Brace">)</span>;
  58. <span class="ActionScriptDefault_Text">_chromaticDispersion</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">chromaticDispersion</span>;
  59. <span class="ActionScriptDefault_Text">glassColor</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">ini</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getInt</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"glassColor"</span><span class="ActionScriptOperator">,</span> 0xffffff<span class="ActionScriptBracket/Brace">)</span>;
  60. <span class="ActionScriptDefault_Text">_pointLightShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">data</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">alpha</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">[</span> <span class="ActionScriptDefault_Text">_envMapAlpha</span> <span class="ActionScriptBracket/Brace">]</span>;
  61. <span class="ActionScriptDefault_Text">_pointLightShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">data</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">envMap</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">input</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">envMap</span>;
  62. <span class="ActionScriptDefault_Text">_pointLightShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">data</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">envMapDim</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">[</span> <span class="ActionScriptDefault_Text">envMap</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">width</span><span class="ActionScriptOperator">*</span>.5 <span class="ActionScriptBracket/Brace">]</span>;
  63. <span class="ActionScriptDefault_Text">_pointLightShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">data</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">refractionRatio</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">[</span> <span class="ActionScriptDefault_Text">_outerRefraction</span><span class="ActionScriptOperator">/</span><span class="ActionScriptDefault_Text">_innerRefraction</span> <span class="ActionScriptBracket/Brace">]</span>;
  64. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">chromaticDispersion</span><span class="ActionScriptBracket/Brace">)</span>
  65. <span class="ActionScriptDefault_Text">_pointLightShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">data</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">dispersion</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">[</span> <span class="ActionScriptDefault_Text">_dispersionR</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">_dispersionG</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">_dispersionB</span> <span class="ActionScriptBracket/Brace">]</span>;
  66. <span class="ActionScriptBracket/Brace">}</span>
  67. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">get</span> <span class="ActionScriptDefault_Text">glassColor</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptDefault_Text">uint</span>
  68. <span class="ActionScriptBracket/Brace">{</span>
  69. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">_glassColor</span>;
  70. <span class="ActionScriptBracket/Brace">}</span>
  71. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">set</span> <span class="ActionScriptDefault_Text">glassColor</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> : <span class="ActionScriptDefault_Text">uint</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptReserved">void</span>
  72. <span class="ActionScriptBracket/Brace">{</span>
  73. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">r</span> : <span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">&gt;&gt;</span> 16<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">&amp;</span> 0xff<span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">/</span>0xff;
  74. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">g</span> : <span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">&gt;&gt;</span> 8<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">&amp;</span> 0xff<span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">/</span>0xff;
  75. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">b</span> : <span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">&amp;</span> 0xff<span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">/</span>0xff;
  76. <span class="ActionScriptDefault_Text">_glassColor</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>;
  77. <span class="ActionScriptDefault_Text">_pointLightShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">data</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">color</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">[</span> <span class="ActionScriptDefault_Text">r</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">g</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">b</span> <span class="ActionScriptBracket/Brace">]</span>;
  78. <span class="ActionScriptBracket/Brace">}</span>
  79. <span class="ActionScriptASDoc">/**
  80. * The scale of dispersion for the red channel. For best results, use value close to but lower than 1.
  81. */</span>
  82. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">get</span> <span class="ActionScriptDefault_Text">dispersionR</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptDefault_Text">Number</span>
  83. <span class="ActionScriptBracket/Brace">{</span>
  84. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">_dispersionR</span>;
  85. <span class="ActionScriptBracket/Brace">}</span>
  86. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">set</span> <span class="ActionScriptDefault_Text">dispersionR</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> : <span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptReserved">void</span>
  87. <span class="ActionScriptBracket/Brace">{</span>
  88. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_chromaticDispersion</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptDefault_Text">_pointLightShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">data</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">dispersion</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">value</span><span class="ActionScriptBracket/Brace">[</span>0<span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>;
  89. <span class="ActionScriptDefault_Text">_dispersionR</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>;
  90. <span class="ActionScriptBracket/Brace">}</span>
  91. <span class="ActionScriptASDoc">/**
  92. * The scale of dispersion for the green channel. For best results, use value close to but lower than 1.
  93. */</span>
  94. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">get</span> <span class="ActionScriptDefault_Text">dispersionG</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptDefault_Text">Number</span>
  95. <span class="ActionScriptBracket/Brace">{</span>
  96. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">_dispersionG</span>;
  97. <span class="ActionScriptBracket/Brace">}</span>
  98. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">set</span> <span class="ActionScriptDefault_Text">dispersionG</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> : <span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptReserved">void</span>
  99. <span class="ActionScriptBracket/Brace">{</span>
  100. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_chromaticDispersion</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptDefault_Text">_pointLightShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">data</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">dispersion</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">value</span><span class="ActionScriptBracket/Brace">[</span>1<span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>;
  101. <span class="ActionScriptDefault_Text">_dispersionG</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>;
  102. <span class="ActionScriptBracket/Brace">}</span>
  103. <span class="ActionScriptASDoc">/**
  104. * The scale of dispersion for the blue channel. For best results, use value close to but lower than 1.
  105. */</span>
  106. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">get</span> <span class="ActionScriptDefault_Text">dispersionB</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptDefault_Text">Number</span>
  107. <span class="ActionScriptBracket/Brace">{</span>
  108. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">_dispersionB</span>;
  109. <span class="ActionScriptBracket/Brace">}</span>
  110. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">set</span> <span class="ActionScriptDefault_Text">dispersionB</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> : <span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptReserved">void</span>
  111. <span class="ActionScriptBracket/Brace">{</span>
  112. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_chromaticDispersion</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptDefault_Text">_pointLightShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">data</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">dispersion</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">value</span><span class="ActionScriptBracket/Brace">[</span>2<span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>;
  113. <span class="ActionScriptDefault_Text">_dispersionB</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>;
  114. <span class="ActionScriptBracket/Brace">}</span>
  115. <span class="ActionScriptASDoc">/**
  116. * The refractive index of the outer medium (where the view ray starts)
  117. */</span>
  118. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">get</span> <span class="ActionScriptDefault_Text">outerRefraction</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptDefault_Text">Number</span>
  119. <span class="ActionScriptBracket/Brace">{</span>
  120. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">_outerRefraction</span>;
  121. <span class="ActionScriptBracket/Brace">}</span>
  122. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">set</span> <span class="ActionScriptDefault_Text">outerRefraction</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> : <span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptReserved">void</span>
  123. <span class="ActionScriptBracket/Brace">{</span>
  124. <span class="ActionScriptDefault_Text">_outerRefraction</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>;
  125. <span class="ActionScriptDefault_Text">_fresnelMapDirty</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">true</span>;
  126. <span class="ActionScriptBracket/Brace">}</span>
  127. <span class="ActionScriptASDoc">/**
  128. * The refractive index of the inner medium (ie the material itself)
  129. */</span>
  130. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">get</span> <span class="ActionScriptDefault_Text">innerRefraction</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptDefault_Text">Number</span>
  131. <span class="ActionScriptBracket/Brace">{</span>
  132. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">_innerRefraction</span>;
  133. <span class="ActionScriptBracket/Brace">}</span>
  134. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">set</span> <span class="ActionScriptDefault_Text">innerRefraction</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> : <span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptReserved">void</span>
  135. <span class="ActionScriptBracket/Brace">{</span>
  136. <span class="ActionScriptDefault_Text">_innerRefraction</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>;
  137. <span class="ActionScriptDefault_Text">_fresnelMapDirty</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">true</span>;
  138. <span class="ActionScriptBracket/Brace">}</span>
  139. <span class="ActionScriptASDoc">/**
  140. * The exponent of the calculated fresnel term. Lower values will only show reflections at steeper view angles.
  141. */</span>
  142. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">get</span> <span class="ActionScriptDefault_Text">exponent</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptDefault_Text">Number</span>
  143. <span class="ActionScriptBracket/Brace">{</span>
  144. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">_exponent</span>;
  145. <span class="ActionScriptBracket/Brace">}</span>
  146. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">set</span> <span class="ActionScriptDefault_Text">exponent</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> : <span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptReserved">void</span>
  147. <span class="ActionScriptBracket/Brace">{</span>
  148. <span class="ActionScriptDefault_Text">_exponent</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>;
  149. <span class="ActionScriptDefault_Text">_fresnelMapDirty</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">true</span>;
  150. <span class="ActionScriptBracket/Brace">}</span>
  151. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">initFresnelMap</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptReserved">void</span>
  152. <span class="ActionScriptBracket/Brace">{</span>
  153. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">i</span> : <span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 256;
  154. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">fres</span> : <span class="ActionScriptDefault_Text">Number</span>;
  155. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">vec</span> : <span class="ActionScriptDefault_Text">Vector</span><span class="ActionScriptBracket/Brace">.&lt;</span><span class="ActionScriptDefault_Text">uint</span><span class="ActionScriptBracket/Brace">&gt;</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Vector</span><span class="ActionScriptBracket/Brace">.&lt;</span><span class="ActionScriptDefault_Text">uint</span><span class="ActionScriptBracket/Brace">&gt;</span><span class="ActionScriptBracket/Brace">(</span>256<span class="ActionScriptBracket/Brace">)</span>;
  156. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">dot</span> : <span class="ActionScriptDefault_Text">Number</span>;
  157. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">r0</span> : <span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_outerRefraction</span><span class="ActionScriptOperator">-</span><span class="ActionScriptDefault_Text">_innerRefraction</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">*</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_outerRefraction</span><span class="ActionScriptOperator">-</span><span class="ActionScriptDefault_Text">_innerRefraction</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">/</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_outerRefraction</span><span class="ActionScriptOperator">+</span><span class="ActionScriptDefault_Text">_innerRefraction</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">*</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_outerRefraction</span><span class="ActionScriptOperator">+</span><span class="ActionScriptDefault_Text">_innerRefraction</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">)</span>;
  158. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">!</span><span class="ActionScriptDefault_Text">_fresnelMap</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptDefault_Text">_fresnelMap</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">BitmapData</span><span class="ActionScriptBracket/Brace">(</span>256<span class="ActionScriptOperator">,</span> 1<span class="ActionScriptOperator">,</span> <span class="ActionScriptReserved">false</span><span class="ActionScriptOperator">,</span> 1<span class="ActionScriptBracket/Brace">)</span>;
  159. <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">--</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  160. <span class="ActionScriptComment">// view vector is inverted in pixel shader (and so is dot product), hence no 1-i/256 as is usual
  161. </span> <span class="ActionScriptDefault_Text">dot</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">/</span>256;
  162. <span class="ActionScriptDefault_Text">fres</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">r0</span><span class="ActionScriptOperator">+</span><span class="ActionScriptBracket/Brace">(</span>1<span class="ActionScriptOperator">-</span><span class="ActionScriptDefault_Text">r0</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">pow</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">dot</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">_exponent</span><span class="ActionScriptBracket/Brace">)</span>;
  163. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">fres</span> <span class="ActionScriptOperator">&gt;</span> 1.0<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptDefault_Text">fres</span> <span class="ActionScriptOperator">=</span> 1.0;
  164. <span class="ActionScriptReserved">else</span> <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">fres</span> <span class="ActionScriptOperator">&lt;</span> 0.0<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptDefault_Text">fres</span> <span class="ActionScriptOperator">=</span> 0.0;
  165. <span class="ActionScriptDefault_Text">vec</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">int</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">fres</span><span class="ActionScriptOperator">*</span>0xff<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">&lt;&lt;</span> 16;
  166. <span class="ActionScriptBracket/Brace">}</span>
  167. <span class="ActionScriptDefault_Text">_fresnelMap</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">setVector</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_fresnelMap</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">rect</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">vec</span><span class="ActionScriptBracket/Brace">)</span>;
  168. <span class="ActionScriptDefault_Text">_pointLightShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">data</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">fresnelMap</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">input</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">_fresnelMap</span>;
  169. <span class="ActionScriptBracket/Brace">}</span>
  170. <span class="ActionScriptASDoc">/**
  171. * The opacity of the environment map, ie: how reflective the surface is. 1 is a perfect mirror.
  172. */</span>
  173. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">get</span> <span class="ActionScriptDefault_Text">envMapAlpha</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptDefault_Text">Number</span>
  174. <span class="ActionScriptBracket/Brace">{</span>
  175. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">_envMapAlpha</span>;
  176. <span class="ActionScriptBracket/Brace">}</span>
  177. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">set</span> <span class="ActionScriptDefault_Text">envMapAlpha</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> : <span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptReserved">void</span>
  178. <span class="ActionScriptBracket/Brace">{</span>
  179. <span class="ActionScriptDefault_Text">_envMapAlpha</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>;
  180. <span class="ActionScriptDefault_Text">_pointLightShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">data</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">alpha</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">[</span> <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptBracket/Brace">]</span>;
  181. <span class="ActionScriptBracket/Brace">}</span>
  182. <span class="ActionScriptReserved">override</span> <span class="ActionScriptReserved">protected</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">updatePixelShader</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">source</span>:<span class="ActionScriptDefault_Text">Object3D</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">view</span>:<span class="ActionScriptDefault_Text">View3D</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span>
  183. <span class="ActionScriptBracket/Brace">{</span>
  184. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_fresnelMapDirty</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  185. <span class="ActionScriptDefault_Text">initFresnelMap</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  186. <span class="ActionScriptDefault_Text">_fresnelMapDirty</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">false</span>;
  187. <span class="ActionScriptBracket/Brace">}</span>
  188. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">camera</span> : <span class="ActionScriptDefault_Text">Camera3D</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">view</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">camera</span>;
  189. <span class="ActionScriptDefault_Text">_pointLightShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">data</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">viewPos</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">[</span> <span class="ActionScriptDefault_Text">camera</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">camera</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">camera</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptBracket/Brace">]</span>;
  190. <span class="ActionScriptReserved">super</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">updatePixelShader</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">source</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">view</span><span class="ActionScriptBracket/Brace">)</span>;
  191. <span class="ActionScriptBracket/Brace">}</span>
  192. <span class="ActionScriptBracket/Brace">}</span>
  193. <span class="ActionScriptBracket/Brace">}</span></pre></body>
  194. </html>