post-processor_water.html 65 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <title>Rendering Water as Post-Process Effect :: jMonkeyEngine Docs</title>
  7. <link rel="canonical" href="https://wiki.jmonkeyengine.org/docs/3.8/core/effect/post-processor_water.html">
  8. <link rel="prev" href="water.html">
  9. <link rel="next" href="../renderer/camera.html">
  10. <meta name="generator" content="Antora 3.0.1">
  11. <link rel="stylesheet" href="../../../../_/css/site.css">
  12. <meta property="og:image" content="https://wiki.jmonkeyengine.org/_/img/iconx128.png">
  13. <meta property="og:description" content="Rendering Water as Post-Process Effect">
  14. <meta property="og:title" content="jMonkeyEngine Docs">
  15. <link rel="stylesheet" href="../../../../_/css/site-extra.css">
  16. <link rel="stylesheet" href="../../../../_/css/vendor/docsearch.min.css">
  17. <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css -->
  18. <link rel="icon" href="../../../../_/img/favicon.ico" type="image/x-icon">
  19. </head>
  20. <body class="article">
  21. <header class="header">
  22. <nav class="navbar">
  23. <div class="navbar-brand">
  24. <a class="navbar-item" href="https://wiki.jmonkeyengine.org">
  25. <img alt="" src="../../../../_/img/jme-logo.png" height="32" type="image/x-icon">
  26. </a>
  27. <div class="navbar-item hide-for-print">
  28. <input id="search-input" type="text" placeholder="Search docs">
  29. </div>
  30. <button class="navbar-burger" data-target="topbar-nav">
  31. <span></span>
  32. <span></span>
  33. <span></span>
  34. </button>
  35. </div>
  36. <div id="topbar-nav" class="navbar-menu">
  37. <div class="navbar-end">
  38. <div class="navbar-item theme-switch-wrapper">
  39. <label class="theme-switch" for="checkbox">
  40. <input type="checkbox" id="checkbox" />
  41. <div class="slider round"></div>
  42. </label>
  43. </div>
  44. <a class="navbar-item" href="https://github.com/jmonkeyengine/wiki">Github</a>
  45. </div>
  46. </div>
  47. </nav>
  48. </header>
  49. <div class="body">
  50. <div class="nav-container" data-component="docs" data-version="3.4">
  51. <aside class="nav">
  52. <div class="panels">
  53. <div class="nav-panel-menu is-active" data-panel="menu">
  54. <nav class="nav-menu">
  55. <h3 class="title"><a href="../../documentation.html">JME</a></h3>
  56. <ul class="nav-list">
  57. <li class="nav-item" data-depth="0">
  58. <ul class="nav-list">
  59. <li class="nav-item" data-depth="1">
  60. <a class="nav-link" href="../../documentation.html">Getting Started</a>
  61. </li>
  62. <li class="nav-item" data-depth="1">
  63. <a class="nav-link" href="https://javadoc.jmonkeyengine.org/v3.4.1-stable">JavaDoc</a>
  64. </li>
  65. <li class="nav-item" data-depth="1">
  66. <a class="nav-link" href="../../release.html">Release Guide</a>
  67. </li>
  68. </ul>
  69. </li>
  70. <li class="nav-item" data-depth="0">
  71. <ul class="nav-list">
  72. <li class="nav-item" data-depth="1">
  73. <button class="nav-item-toggle"></button>
  74. <a class="nav-link" href="../../tutorials/beginner/beginner.html">Beginner Tutorials</a>
  75. <ul class="nav-list">
  76. <li class="nav-item" data-depth="2">
  77. <a class="nav-link" href="../../tutorials/beginner/hello_simpleapplication.html">Hello SimpleApplication</a>
  78. </li>
  79. <li class="nav-item" data-depth="2">
  80. <a class="nav-link" href="../../tutorials/beginner/hello_node.html">Hello Node</a>
  81. </li>
  82. <li class="nav-item" data-depth="2">
  83. <a class="nav-link" href="../../tutorials/beginner/hello_asset.html">Hello Asset</a>
  84. </li>
  85. <li class="nav-item" data-depth="2">
  86. <a class="nav-link" href="../../tutorials/beginner/hello_main_event_loop.html">Hello Update Loop</a>
  87. </li>
  88. <li class="nav-item" data-depth="2">
  89. <a class="nav-link" href="../../tutorials/beginner/hello_input_system.html">Hello Input System</a>
  90. </li>
  91. <li class="nav-item" data-depth="2">
  92. <a class="nav-link" href="../../tutorials/beginner/hello_material.html">Hello Material</a>
  93. </li>
  94. <li class="nav-item" data-depth="2">
  95. <a class="nav-link" href="../../tutorials/beginner/hello_animation.html">Hello Animation</a>
  96. </li>
  97. <li class="nav-item" data-depth="2">
  98. <a class="nav-link" href="../../tutorials/beginner/hello_picking.html">Hello Picking</a>
  99. </li>
  100. <li class="nav-item" data-depth="2">
  101. <a class="nav-link" href="../../tutorials/beginner/hello_collision.html">Hello Collision</a>
  102. </li>
  103. <li class="nav-item" data-depth="2">
  104. <a class="nav-link" href="../../tutorials/beginner/hello_terrain.html">Hello Terrain</a>
  105. </li>
  106. <li class="nav-item" data-depth="2">
  107. <a class="nav-link" href="../../tutorials/beginner/hello_audio.html">Hello Audio</a>
  108. </li>
  109. <li class="nav-item" data-depth="2">
  110. <a class="nav-link" href="../../tutorials/beginner/hello_effects.html">Hello Effects</a>
  111. </li>
  112. <li class="nav-item" data-depth="2">
  113. <a class="nav-link" href="../../tutorials/beginner/hello_physics.html">Hello Physics</a>
  114. </li>
  115. </ul>
  116. </li>
  117. <li class="nav-item" data-depth="1">
  118. <button class="nav-item-toggle"></button>
  119. <span class="nav-text">Key Concepts</span>
  120. <ul class="nav-list">
  121. <li class="nav-item" data-depth="2">
  122. <a class="nav-link" href="../../tutorials/concepts/best_practices.html">Best Practices</a>
  123. </li>
  124. <li class="nav-item" data-depth="2">
  125. <a class="nav-link" href="../../tutorials/concepts/optimization.html">Optimization</a>
  126. </li>
  127. <li class="nav-item" data-depth="2">
  128. <a class="nav-link" href="../../tutorials/concepts/faq.html">Frequently Asked Questions</a>
  129. </li>
  130. <li class="nav-item" data-depth="2">
  131. <a class="nav-link" href="../../tutorials/concepts/math_for_dummies.html">Math for Dummies</a>
  132. </li>
  133. <li class="nav-item" data-depth="2">
  134. <a class="nav-link" href="../../tutorials/concepts/math.html">Math overview</a>
  135. </li>
  136. <li class="nav-item" data-depth="2">
  137. <a class="nav-link" href="../../tutorials/concepts/math_cheet_sheet.html">3D math "cheat sheet"</a>
  138. </li>
  139. <li class="nav-item" data-depth="2">
  140. <a class="nav-link" href="../../tutorials/concepts/rotate.html">3-D Rotation</a>
  141. </li>
  142. <li class="nav-item" data-depth="2">
  143. <a class="nav-link" href="../../tutorials/concepts/math_video_tutorials.html">Math video tutorial series</a>
  144. </li>
  145. <li class="nav-item" data-depth="2">
  146. <a class="nav-link" href="../../tutorials/concepts/multi-media_asset_pipeline.html">Multi-Media Asset Pipeline</a>
  147. </li>
  148. <li class="nav-item" data-depth="2">
  149. <a class="nav-link" href="../../tutorials/concepts/the_scene_graph.html">The Scene Graph</a>
  150. </li>
  151. <li class="nav-item" data-depth="2">
  152. <a class="nav-link" href="../../tutorials/concepts/scenegraph_for_dummies.html">Scene Graph for Dummies</a>
  153. </li>
  154. <li class="nav-item" data-depth="2">
  155. <a class="nav-link" href="../../tutorials/concepts/terminology.html">3D Graphics Terminology</a>
  156. </li>
  157. <li class="nav-item" data-depth="2">
  158. <a class="nav-link" href="../../tutorials/concepts/transparency_sorting.html">Transparency Sorting</a>
  159. </li>
  160. </ul>
  161. </li>
  162. <li class="nav-item" data-depth="1">
  163. <button class="nav-item-toggle"></button>
  164. <span class="nav-text">Articles and How-to&#8217;s</span>
  165. <ul class="nav-list">
  166. <li class="nav-item" data-depth="2">
  167. <button class="nav-item-toggle"></button>
  168. <span class="nav-text">How to Model</span>
  169. <ul class="nav-list">
  170. <li class="nav-item" data-depth="3">
  171. <a class="nav-link" href="../../tutorials/how-to/modeling/3dsmax/3dsmax.html">3dsmax</a>
  172. </li>
  173. <li class="nav-item" data-depth="3">
  174. <button class="nav-item-toggle"></button>
  175. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/blender.html">Blender</a>
  176. <ul class="nav-list">
  177. <li class="nav-item" data-depth="4">
  178. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/blender_buffer_clearing.html">Buffer Clearing</a>
  179. </li>
  180. <li class="nav-item" data-depth="4">
  181. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/blender_gltf.html">Export as GlTF</a>
  182. </li>
  183. <li class="nav-item" data-depth="4">
  184. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/blender_ogre_export.html">Export as Ogre XML</a>
  185. </li>
  186. <li class="nav-item" data-depth="4">
  187. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/blender_ogre_compatibility.html">Ogre Compatibility</a>
  188. </li>
  189. <li class="nav-item" data-depth="4">
  190. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/makehuman.html">MakeHuman</a>
  191. </li>
  192. <li class="nav-item" data-depth="4">
  193. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/makehuman_blender_ogrexml_toolchain.html">MakeHuman toolchain</a>
  194. </li>
  195. </ul>
  196. </li>
  197. </ul>
  198. </li>
  199. <li class="nav-item" data-depth="2">
  200. <button class="nav-item-toggle"></button>
  201. <span class="nav-text">How to Animate</span>
  202. <ul class="nav-list">
  203. <li class="nav-item" data-depth="3">
  204. <button class="nav-item-toggle"></button>
  205. <span class="nav-text">Mixamo</span>
  206. <ul class="nav-list">
  207. <li class="nav-item" data-depth="4">
  208. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/mixamo.html">Blender Models</a>
  209. </li>
  210. <li class="nav-item" data-depth="4">
  211. <button class="nav-item-toggle"></button>
  212. <span class="nav-text">Video</span>
  213. <ul class="nav-list">
  214. <li class="nav-item" data-depth="5">
  215. <a class="nav-link" href="https://youtu.be/jHgAgTWIers?list=PLv6qR9TGkz8RcUr-fOHI2SksWA4BAU9TS">Part 1- Download Model</a>
  216. </li>
  217. <li class="nav-item" data-depth="5">
  218. <a class="nav-link" href="https://youtu.be/GQJSrOpNQwI?list=PLv6qR9TGkz8RcUr-fOHI2SksWA4BAU9TS">Part 2- Rig and Animate</a>
  219. </li>
  220. <li class="nav-item" data-depth="5">
  221. <a class="nav-link" href="https://youtu.be/JzRe2Dxbcmc?list=PLv6qR9TGkz8RcUr-fOHI2SksWA4BAU9TS">Part 3- Import to JME</a>
  222. </li>
  223. <li class="nav-item" data-depth="5">
  224. <a class="nav-link" href="https://youtu.be/8wwDRDJop7k?list=PLv6qR9TGkz8RcUr-fOHI2SksWA4BAU9TS">Part 4- Play Animation</a>
  225. </li>
  226. </ul>
  227. </li>
  228. </ul>
  229. </li>
  230. </ul>
  231. </li>
  232. <li class="nav-item" data-depth="2">
  233. <a class="nav-link" href="../../tutorials/how-to/debugging.html">Debugging with Wireframes</a>
  234. </li>
  235. <li class="nav-item" data-depth="2">
  236. <a class="nav-link" href="../../tutorials/how-to/util/free_skymaps.html">How to create free skymaps</a>
  237. </li>
  238. <li class="nav-item" data-depth="2">
  239. <button class="nav-item-toggle"></button>
  240. <span class="nav-text">Java Tips</span>
  241. <ul class="nav-list">
  242. <li class="nav-item" data-depth="3">
  243. <a class="nav-link" href="../../tutorials/how-to/java/localization.html">Localization</a>
  244. </li>
  245. <li class="nav-item" data-depth="3">
  246. <a class="nav-link" href="../../tutorials/how-to/java/swing_canvas.html">Swing Canvas</a>
  247. </li>
  248. <li class="nav-item" data-depth="3">
  249. <a class="nav-link" href="../../tutorials/how-to/java/logging.html">Logging</a>
  250. </li>
  251. <li class="nav-item" data-depth="3">
  252. <a class="nav-link" href="../../tutorials/how-to/java/read_graphic_card_capabilites.html">Read Graphics Capabilities</a>
  253. </li>
  254. </ul>
  255. </li>
  256. <li class="nav-item" data-depth="2">
  257. <button class="nav-item-toggle"></button>
  258. <span class="nav-text">Articles</span>
  259. <ul class="nav-list">
  260. <li class="nav-item" data-depth="3">
  261. <button class="nav-item-toggle"></button>
  262. <span class="nav-text">Physically Based Rendering</span>
  263. <ul class="nav-list">
  264. <li class="nav-item" data-depth="4">
  265. <a class="nav-link" href="../../tutorials/how-to/articles/pbr/pbr_part1.html">PBR – Part one</a>
  266. </li>
  267. <li class="nav-item" data-depth="4">
  268. <a class="nav-link" href="../../tutorials/how-to/articles/pbr/pbr_part2.html">PBR – Part two</a>
  269. </li>
  270. <li class="nav-item" data-depth="4">
  271. <a class="nav-link" href="../../tutorials/how-to/articles/pbr/pbr_part3.html">PBR – Part three</a>
  272. </li>
  273. </ul>
  274. </li>
  275. </ul>
  276. </li>
  277. </ul>
  278. </li>
  279. </ul>
  280. </li>
  281. <li class="nav-item" data-depth="0">
  282. <ul class="nav-list">
  283. <li class="nav-item" data-depth="1">
  284. <button class="nav-item-toggle"></button>
  285. <span class="nav-text">Core Engine</span>
  286. <ul class="nav-list">
  287. <li class="nav-item" data-depth="2">
  288. <a class="nav-link" href="../app/simpleapplication.html">SimpleApplication</a>
  289. </li>
  290. <li class="nav-item" data-depth="2">
  291. <a class="nav-link" href="../system/appsettings.html">AppSettings</a>
  292. </li>
  293. </ul>
  294. </li>
  295. <li class="nav-item" data-depth="1">
  296. <button class="nav-item-toggle"></button>
  297. <span class="nav-text">Controlling Game Logic</span>
  298. <ul class="nav-list">
  299. <li class="nav-item" data-depth="2">
  300. <a class="nav-link" href="../app/update_loop.html">Update Loop</a>
  301. </li>
  302. <li class="nav-item" data-depth="2">
  303. <a class="nav-link" href="../app/state/application_states.html">Application States</a>
  304. </li>
  305. <li class="nav-item" data-depth="2">
  306. <button class="nav-item-toggle"></button>
  307. <a class="nav-link" href="../scene/control/custom_controls.html">Custom Controls</a>
  308. <ul class="nav-list">
  309. <li class="nav-item" data-depth="3">
  310. <button class="nav-item-toggle"></button>
  311. <span class="nav-text">Video</span>
  312. <ul class="nav-list">
  313. <li class="nav-item" data-depth="4">
  314. <a class="nav-link" href="https://www.youtube.com/watch?v=MNDiZ9YHIpM">Control any scene node</a>
  315. </li>
  316. <li class="nav-item" data-depth="4">
  317. <a class="nav-link" href="https://www.youtube.com/watch?v=-OzRZscLlHY">Control a character</a>
  318. </li>
  319. <li class="nav-item" data-depth="4">
  320. <a class="nav-link" href="https://wiki.jmonkeyengine.org/Scenes/SDK-UsecaseDemo_1.zip">Video Source Code</a>
  321. </li>
  322. </ul>
  323. </li>
  324. </ul>
  325. </li>
  326. <li class="nav-item" data-depth="2">
  327. <a class="nav-link" href="../app/multithreading.html">Multithreading</a>
  328. </li>
  329. </ul>
  330. </li>
  331. <li class="nav-item" data-depth="1">
  332. <button class="nav-item-toggle"></button>
  333. <span class="nav-text">Scene Graph</span>
  334. <ul class="nav-list">
  335. <li class="nav-item" data-depth="2">
  336. <a class="nav-link" href="../scene/traverse_scenegraph.html">Traverse SceneGraph</a>
  337. </li>
  338. <li class="nav-item" data-depth="2">
  339. <a class="nav-link" href="../scene/spatial.html">Spatial: Node vs Geometry</a>
  340. </li>
  341. <li class="nav-item" data-depth="2">
  342. <button class="nav-item-toggle"></button>
  343. <a class="nav-link" href="../scene/mesh.html">Mesh</a>
  344. <ul class="nav-list">
  345. <li class="nav-item" data-depth="3">
  346. <a class="nav-link" href="../scene/custom_meshes.html">Custom Meshes</a>
  347. </li>
  348. <li class="nav-item" data-depth="3">
  349. <a class="nav-link" href="../scene/shape/shape.html">Shape</a>
  350. </li>
  351. <li class="nav-item" data-depth="3">
  352. <a class="nav-link" href="../scene/3d_models.html">3D Models</a>
  353. </li>
  354. </ul>
  355. </li>
  356. <li class="nav-item" data-depth="2">
  357. <a class="nav-link" href="../asset/asset_manager.html">Asset Manager</a>
  358. </li>
  359. <li class="nav-item" data-depth="2">
  360. <a class="nav-link" href="../export/save_and_load.html">Saving and Loading Nodes</a>
  361. </li>
  362. <li class="nav-item" data-depth="2">
  363. <a class="nav-link" href="../collision/collision_and_intersection.html">Collision and Intersection</a>
  364. </li>
  365. <li class="nav-item" data-depth="2">
  366. <a class="nav-link" href="../scene/control/level_of_detail.html">Level of Detail</a>
  367. </li>
  368. </ul>
  369. </li>
  370. <li class="nav-item" data-depth="1">
  371. <button class="nav-item-toggle"></button>
  372. <span class="nav-text">Animation, Scene</span>
  373. <ul class="nav-list">
  374. <li class="nav-item" data-depth="2">
  375. <a class="nav-link" href="../animation/animation.html">Animation-Old</a>
  376. </li>
  377. <li class="nav-item" data-depth="2">
  378. <a class="nav-link" href="../cinematic/cinematics.html">Cinematics (cutscenes, fake destruction physics)</a>
  379. </li>
  380. <li class="nav-item" data-depth="2">
  381. <a class="nav-link" href="../cinematic/motionpath.html">MotionPaths and Waypoints</a>
  382. </li>
  383. </ul>
  384. </li>
  385. <li class="nav-item" data-depth="1">
  386. <button class="nav-item-toggle"></button>
  387. <span class="nav-text">Material, Light, Shadow</span>
  388. <ul class="nav-list">
  389. <li class="nav-item" data-depth="2">
  390. <a class="nav-link" href="../material/how_to_use_materials.html">How to use Materials</a>
  391. </li>
  392. <li class="nav-item" data-depth="2">
  393. <a class="nav-link" href="../material/j3m_material_files.html">.j3m Material Files</a>
  394. </li>
  395. <li class="nav-item" data-depth="2">
  396. <a class="nav-link" href="../material/material_definitions.html">.j3md Material Definitions</a>
  397. </li>
  398. <li class="nav-item" data-depth="2">
  399. <a class="nav-link" href="../material/materials_overview.html">.j3md Properties</a>
  400. </li>
  401. <li class="nav-item" data-depth="2">
  402. <a class="nav-link" href="../shader/jme3_shaders.html">Shaders and JME3</a>
  403. </li>
  404. <li class="nav-item" data-depth="2">
  405. <a class="nav-link" href="../shader/jme3_shadernodes.html">Shader Node System</a>
  406. </li>
  407. <li class="nav-item" data-depth="2">
  408. <a class="nav-link" href="../shader/shader_video_tutorials.html">Shader Video Tutorials</a>
  409. </li>
  410. <li class="nav-item" data-depth="2">
  411. <a class="nav-link" href="../light/light_and_shadow.html">Light and Shadow</a>
  412. </li>
  413. <li class="nav-item" data-depth="2">
  414. <a class="nav-link" href="../texture/anisotropic_filtering.html">Anisotropic Filtering</a>
  415. </li>
  416. <li class="nav-item" data-depth="2">
  417. <a class="nav-link" href="../system/jme3_srgbpipeline.html">Gamma Correction</a>
  418. </li>
  419. </ul>
  420. </li>
  421. <li class="nav-item" data-depth="1">
  422. <button class="nav-item-toggle"></button>
  423. <span class="nav-text">Audio, Video</span>
  424. <ul class="nav-list">
  425. <li class="nav-item" data-depth="2">
  426. <a class="nav-link" href="../audio/audio.html">Playing Sounds</a>
  427. </li>
  428. <li class="nav-item" data-depth="2">
  429. <a class="nav-link" href="../audio/audio_environment_presets.html">Audio Environment Presets</a>
  430. </li>
  431. <li class="nav-item" data-depth="2">
  432. <a class="nav-link" href="../app/state/screenshots.html">Capture Screenshots</a>
  433. </li>
  434. <li class="nav-item" data-depth="2">
  435. <a class="nav-link" href="../app/state/capture_audio_video_to_a_file.html">Capture Audio/Video</a>
  436. </li>
  437. </ul>
  438. </li>
  439. <li class="nav-item" data-depth="1">
  440. <button class="nav-item-toggle"></button>
  441. <span class="nav-text">Filter, Effect</span>
  442. <ul class="nav-list">
  443. <li class="nav-item" data-depth="2">
  444. <a class="nav-link" href="effects_overview.html">Overview</a>
  445. </li>
  446. <li class="nav-item" data-depth="2">
  447. <a class="nav-link" href="bloom_and_glow.html">Bloom and Glow</a>
  448. </li>
  449. <li class="nav-item" data-depth="2">
  450. <a class="nav-link" href="particle_emitters.html">Particle Emitters</a>
  451. </li>
  452. </ul>
  453. </li>
  454. <li class="nav-item" data-depth="1">
  455. <button class="nav-item-toggle"></button>
  456. <span class="nav-text">Landscapes</span>
  457. <ul class="nav-list">
  458. <li class="nav-item" data-depth="2">
  459. <a class="nav-link" href="../util/sky.html">Sky</a>
  460. </li>
  461. <li class="nav-item" data-depth="2">
  462. <a class="nav-link" href="../terrain/terrain.html">Terrain (TerraMonkey)</a>
  463. </li>
  464. <li class="nav-item" data-depth="2">
  465. <a class="nav-link" href="../collision/terrain_collision.html">Terrain Collision</a>
  466. </li>
  467. <li class="nav-item" data-depth="2">
  468. <a class="nav-link" href="water.html">Simple Water</a>
  469. </li>
  470. <li class="nav-item is-current-page" data-depth="2">
  471. <a class="nav-link" href="post-processor_water.html">Post-Processor Water</a>
  472. </li>
  473. </ul>
  474. </li>
  475. <li class="nav-item" data-depth="1">
  476. <button class="nav-item-toggle"></button>
  477. <span class="nav-text">Camera</span>
  478. <ul class="nav-list">
  479. <li class="nav-item" data-depth="2">
  480. <a class="nav-link" href="../renderer/camera.html">Camera</a>
  481. </li>
  482. <li class="nav-item" data-depth="2">
  483. <a class="nav-link" href="../renderer/making_the_camera_follow_a_character.html">Follow a Character</a>
  484. </li>
  485. <li class="nav-item" data-depth="2">
  486. <a class="nav-link" href="../renderer/remote-controlling_the_camera.html">Remote-Controlling</a>
  487. </li>
  488. <li class="nav-item" data-depth="2">
  489. <a class="nav-link" href="../renderer/multiple_camera_views.html">Multiple Camera Views</a>
  490. </li>
  491. <li class="nav-item" data-depth="2">
  492. <a class="nav-link" href="../renderer/jme3_renderbuckets.html">Render Buckets</a>
  493. </li>
  494. </ul>
  495. </li>
  496. <li class="nav-item" data-depth="1">
  497. <button class="nav-item-toggle"></button>
  498. <span class="nav-text">User Interaction</span>
  499. <ul class="nav-list">
  500. <li class="nav-item" data-depth="2">
  501. <a class="nav-link" href="../input/input_handling.html">Input Handling</a>
  502. </li>
  503. <li class="nav-item" data-depth="2">
  504. <a class="nav-link" href="../input/combo_moves.html">Combo Moves</a>
  505. </li>
  506. <li class="nav-item" data-depth="2">
  507. <a class="nav-link" href="../input/mouse_picking.html">Mouse Picking</a>
  508. </li>
  509. </ul>
  510. </li>
  511. <li class="nav-item" data-depth="1">
  512. <button class="nav-item-toggle"></button>
  513. <a class="nav-link" href="../gui/topic_gui.html">Graphical User Interface</a>
  514. <ul class="nav-list">
  515. <li class="nav-item" data-depth="2">
  516. <button class="nav-item-toggle"></button>
  517. <span class="nav-text">Nifty GUI</span>
  518. <ul class="nav-list">
  519. <li class="nav-item" data-depth="3">
  520. <a class="nav-link" href="../gui/nifty_gui.html">Integration Tutorial</a>
  521. </li>
  522. <li class="nav-item" data-depth="3">
  523. <a class="nav-link" href="../gui/nifty_gui_best_practices.html">Best Practices</a>
  524. </li>
  525. <li class="nav-item" data-depth="3">
  526. <a class="nav-link" href="../gui/nifty_gui_scenarios.html">Scenarios</a>
  527. </li>
  528. </ul>
  529. </li>
  530. <li class="nav-item" data-depth="2">
  531. <a class="nav-link" href="../ui/hud.html">Head-Up Display (HUD)</a>
  532. </li>
  533. </ul>
  534. </li>
  535. <li class="nav-item" data-depth="1">
  536. <button class="nav-item-toggle"></button>
  537. <span class="nav-text">Virtual Reality</span>
  538. <ul class="nav-list">
  539. <li class="nav-item" data-depth="2">
  540. <a class="nav-link" href="../vr/virtualreality.html">Virtual Reality</a>
  541. </li>
  542. <li class="nav-item" data-depth="2">
  543. <a class="nav-link" href="../vr/virtualrealitycontrollers.html">Virtual Reality Controllers</a>
  544. </li>
  545. </ul>
  546. </li>
  547. </ul>
  548. </li>
  549. <li class="nav-item" data-depth="0">
  550. <ul class="nav-list">
  551. <li class="nav-item" data-depth="1">
  552. <button class="nav-item-toggle"></button>
  553. <a class="nav-link" href="../../physics/physics.html">Physics</a>
  554. <ul class="nav-list">
  555. <li class="nav-item" data-depth="2">
  556. <a class="nav-link" href="../../physics/bullet_multithreading.html">Multi-Threaded Physics</a>
  557. </li>
  558. <li class="nav-item" data-depth="2">
  559. <a class="nav-link" href="../../physics/collision/physics_listeners.html">Collision Detection</a>
  560. </li>
  561. <li class="nav-item" data-depth="2">
  562. <a class="nav-link" href="../../physics/joint/hinges_and_joints.html">Hinges and Joints</a>
  563. </li>
  564. <li class="nav-item" data-depth="2">
  565. <a class="nav-link" href="../../physics/control/walking_character.html">Walking Character</a>
  566. </li>
  567. <li class="nav-item" data-depth="2">
  568. <a class="nav-link" href="../../physics/control/ragdoll.html">Ragdoll</a>
  569. </li>
  570. <li class="nav-item" data-depth="2">
  571. <a class="nav-link" href="../../physics/control/vehicles.html">Vehicles</a>
  572. </li>
  573. <li class="nav-item" data-depth="2">
  574. <a class="nav-link" href="../../physics/control/softbody.html">Softbody</a>
  575. </li>
  576. <li class="nav-item" data-depth="2">
  577. <a class="nav-link" href="../../physics/bullet_pitfalls.html">Bullet Physics Pitfalls</a>
  578. </li>
  579. </ul>
  580. </li>
  581. </ul>
  582. </li>
  583. <li class="nav-item" data-depth="0">
  584. <ul class="nav-list">
  585. <li class="nav-item" data-depth="1">
  586. <button class="nav-item-toggle"></button>
  587. <span class="nav-text">Networking</span>
  588. <ul class="nav-list">
  589. <li class="nav-item" data-depth="2">
  590. <a class="nav-link" href="../../networking/networking.html">Networking (SpiderMonkey)</a>
  591. </li>
  592. <li class="nav-item" data-depth="2">
  593. <a class="nav-link" href="../../networking/headless_server.html">Headless Server</a>
  594. </li>
  595. <li class="nav-item" data-depth="2">
  596. <a class="nav-link" href="../../networking/monkey_zone.html">Multi-Player Demo Code</a>
  597. </li>
  598. <li class="nav-item" data-depth="2">
  599. <a class="nav-link" href="../../networking/networking_video_tutorials.html">Networking Video Tutorials</a>
  600. </li>
  601. </ul>
  602. </li>
  603. </ul>
  604. </li>
  605. <li class="nav-item" data-depth="0">
  606. <ul class="nav-list">
  607. <li class="nav-item" data-depth="1">
  608. <button class="nav-item-toggle"></button>
  609. <span class="nav-text">User Contributions</span>
  610. <ul class="nav-list">
  611. <li class="nav-item" data-depth="2">
  612. <a class="nav-link" href="../../contributions/contributions.html">User Made Utilities</a>
  613. </li>
  614. <li class="nav-item" data-depth="2">
  615. <button class="nav-item-toggle"></button>
  616. <span class="nav-text">Shader</span>
  617. <ul class="nav-list">
  618. <li class="nav-item" data-depth="3">
  619. <a class="nav-link" href="../../contributions/shader/shaderblow_project.html">ShaderBlow Project</a>
  620. </li>
  621. </ul>
  622. </li>
  623. <li class="nav-item" data-depth="2">
  624. <button class="nav-item-toggle"></button>
  625. <span class="nav-text">Landscapes</span>
  626. <ul class="nav-list">
  627. <li class="nav-item" data-depth="3">
  628. <a class="nav-link" href="../../contributions/lanscapes/vegetationsystem/vegetationsystem.html">Vegetation System</a>
  629. </li>
  630. </ul>
  631. </li>
  632. <li class="nav-item" data-depth="2">
  633. <button class="nav-item-toggle"></button>
  634. <span class="nav-text">Networking</span>
  635. <ul class="nav-list">
  636. <li class="nav-item" data-depth="3">
  637. <a class="nav-link" href="../../contributions/networking/open_game_finder.html">Open Game Finder</a>
  638. </li>
  639. </ul>
  640. </li>
  641. <li class="nav-item" data-depth="2">
  642. <button class="nav-item-toggle"></button>
  643. <span class="nav-text">Entity System</span>
  644. <ul class="nav-list">
  645. <li class="nav-item" data-depth="3">
  646. <a class="nav-link" href="#es/entitysystem.adoc">The Zay-ES Entity System</a>
  647. </li>
  648. </ul>
  649. </li>
  650. <li class="nav-item" data-depth="2">
  651. <button class="nav-item-toggle"></button>
  652. <span class="nav-text">Artificial Intelligence</span>
  653. <ul class="nav-list">
  654. <li class="nav-item" data-depth="3">
  655. <a class="nav-link" href="../../contributions/ai/recast.html">Recast Navigation</a>
  656. </li>
  657. <li class="nav-item" data-depth="3">
  658. <a class="nav-link" href="../../contributions/ai/building_recast.html">Updating and building Recast Native Bindings</a>
  659. </li>
  660. <li class="nav-item" data-depth="3">
  661. <a class="nav-link" href="../../contributions/ai/monkey_brains.html">Monkey Brains</a>
  662. </li>
  663. <li class="nav-item" data-depth="3">
  664. <a class="nav-link" href="../../contributions/ai/steer_behaviours.html">Steer Behaviours</a>
  665. </li>
  666. <li class="nav-item" data-depth="3">
  667. <a class="nav-link" href="../../contributions/ai/jme3_ai.html">jME3 Artificial Intelligence</a>
  668. </li>
  669. </ul>
  670. </li>
  671. <li class="nav-item" data-depth="2">
  672. <button class="nav-item-toggle"></button>
  673. <a class="nav-link" href="../../contributions/gui/topic_contributions_gui.html">GUI</a>
  674. <ul class="nav-list">
  675. <li class="nav-item" data-depth="3">
  676. <a class="nav-link" href="../../contributions/contributions.html#lemur-gui-library">Lemur - a native jME3 GUI library with scene graph tools</a>
  677. </li>
  678. <li class="nav-item" data-depth="3">
  679. <a class="nav-link" href="../../contributions/contributions.html#tonegodgui">tonegodGUI - a native jME3 GUI library</a>
  680. </li>
  681. <li class="nav-item" data-depth="3">
  682. <a class="nav-link" href="../../contributions/contributions.html#immediate-graphical-user-interface">Immediate graphical user interface</a>
  683. </li>
  684. </ul>
  685. </li>
  686. <li class="nav-item" data-depth="2">
  687. <button class="nav-item-toggle"></button>
  688. <span class="nav-text">Tools</span>
  689. <ul class="nav-list">
  690. <li class="nav-item" data-depth="3">
  691. <a class="nav-link" href="../../contributions/tools/navigation.html">Mercator Projection Tool (Marine Navigation)</a>
  692. </li>
  693. <li class="nav-item" data-depth="3">
  694. <a class="nav-link" href="../../contributions/tools/charts.html">Visualizing Maps in JME3 (Marine Charts)</a>
  695. </li>
  696. </ul>
  697. </li>
  698. <li class="nav-item" data-depth="2">
  699. <button class="nav-item-toggle"></button>
  700. <span class="nav-text">Projects</span>
  701. <ul class="nav-list">
  702. <li class="nav-item" data-depth="3">
  703. <a class="nav-link" href="../../contributions/projects/rise_of_mutants_project.html">Rise of Mutants Project</a>
  704. </li>
  705. </ul>
  706. </li>
  707. </ul>
  708. </li>
  709. </ul>
  710. </li>
  711. <li class="nav-item" data-depth="0">
  712. <ul class="nav-list">
  713. <li class="nav-item" data-depth="1">
  714. <button class="nav-item-toggle"></button>
  715. <a class="nav-link" href="../../sdk/sdk.html">SDK</a>
  716. <ul class="nav-list">
  717. <li class="nav-item" data-depth="2">
  718. <button class="nav-item-toggle"></button>
  719. <span class="nav-text">Video Tutorials</span>
  720. <ul class="nav-list">
  721. <li class="nav-item" data-depth="3">
  722. <button class="nav-item-toggle"></button>
  723. <span class="nav-text">SDK Use Case Tutorials</span>
  724. <ul class="nav-list">
  725. <li class="nav-item" data-depth="4">
  726. <a class="nav-link" href="http://www.youtube.com/watch?v=-OzRZscLlHY">Demo 1 (Quixote demo)</a>
  727. </li>
  728. <li class="nav-item" data-depth="4">
  729. <a class="nav-link" href="http://www.youtube.com/watch?v=6-YWxD3JByE">Demo 2 (Models and Materials)</a>
  730. </li>
  731. </ul>
  732. </li>
  733. <li class="nav-item" data-depth="3">
  734. <button class="nav-item-toggle"></button>
  735. <span class="nav-text">SDK Tutorials</span>
  736. <ul class="nav-list">
  737. <li class="nav-item" data-depth="4">
  738. <a class="nav-link" href="http://www.youtube.com/watch?v=M1_0pbeyJzI">Basics</a>
  739. </li>
  740. <li class="nav-item" data-depth="4">
  741. <a class="nav-link" href="http://www.youtube.com/watch?v=nL7woH40i5c">Importing Models</a>
  742. </li>
  743. <li class="nav-item" data-depth="4">
  744. <a class="nav-link" href="http://www.youtube.com/watch?v=DUmgAjiNzhY">Dragging&amp;Dropping Nodes</a>
  745. </li>
  746. <li class="nav-item" data-depth="4">
  747. <a class="nav-link" href="http://www.youtube.com/watch?v=ntPAmtsQ6eM">Scene Composing</a>
  748. </li>
  749. <li class="nav-item" data-depth="4">
  750. <a class="nav-link" href="http://www.youtube.com/watch?v=zgPV3W6dD4s">Terrain with Collision Shape</a>
  751. </li>
  752. <li class="nav-item" data-depth="4">
  753. <a class="nav-link" href="http://www.youtube.com/watch?v=Feu3-mrpolc">Working with Materials</a>
  754. </li>
  755. <li class="nav-item" data-depth="4">
  756. <a class="nav-link" href="http://www.youtube.com/watch?v=MNDiZ9YHIpM">Custom Controls</a>
  757. </li>
  758. <li class="nav-item" data-depth="4">
  759. <a class="nav-link" href="http://www.youtube.com/watch?v=oZnssg8TBWQ">WebStart Deployment</a>
  760. </li>
  761. <li class="nav-item" data-depth="4">
  762. <a class="nav-link" href="http://www.youtube.com/watch?v=D7JM4VMKqPc">Animation and Effect TrackEditing</a>
  763. </li>
  764. </ul>
  765. </li>
  766. </ul>
  767. </li>
  768. <li class="nav-item" data-depth="2">
  769. <button class="nav-item-toggle"></button>
  770. <span class="nav-text">Getting Started</span>
  771. <ul class="nav-list">
  772. <li class="nav-item" data-depth="3">
  773. <a class="nav-link" href="../../sdk/update_center.html">Updating jMonkeyEngine SDK</a>
  774. </li>
  775. <li class="nav-item" data-depth="3">
  776. <a class="nav-link" href="../../sdk/troubleshooting.html">Troubleshooting</a>
  777. </li>
  778. </ul>
  779. </li>
  780. <li class="nav-item" data-depth="2">
  781. <button class="nav-item-toggle"></button>
  782. <span class="nav-text">Java Development Features</span>
  783. <ul class="nav-list">
  784. <li class="nav-item" data-depth="3">
  785. <a class="nav-link" href="../../sdk/project_creation.html">Project Creation</a>
  786. </li>
  787. <li class="nav-item" data-depth="3">
  788. <a class="nav-link" href="../../sdk/code_editor.html">Code Editor and Palette</a>
  789. </li>
  790. <li class="nav-item" data-depth="3">
  791. <a class="nav-link" href="../../sdk/version_control.html">File Version Control</a>
  792. </li>
  793. <li class="nav-item" data-depth="3">
  794. <a class="nav-link" href="../../sdk/debugging_profiling_testing.html">Debug, Profile, Test</a>
  795. </li>
  796. <li class="nav-item" data-depth="3">
  797. <button class="nav-item-toggle"></button>
  798. <a class="nav-link" href="../../sdk/application_deployment.html">Application Deployment</a>
  799. <ul class="nav-list">
  800. <li class="nav-item" data-depth="4">
  801. <a class="nav-link" href="../../sdk/default_build_script.html">Default Build Script</a>
  802. </li>
  803. <li class="nav-item" data-depth="4">
  804. <a class="nav-link" href="../../sdk/android.html">Android</a>
  805. </li>
  806. <li class="nav-item" data-depth="4">
  807. <a class="nav-link" href="../../sdk/android_cheat_sheet.html">Android Cheat Sheet</a>
  808. </li>
  809. <li class="nav-item" data-depth="4">
  810. <a class="nav-link" href="../../sdk/ios.html">iOS</a>
  811. </li>
  812. </ul>
  813. </li>
  814. </ul>
  815. </li>
  816. <li class="nav-item" data-depth="2">
  817. <button class="nav-item-toggle"></button>
  818. <span class="nav-text">Unique Features</span>
  819. <ul class="nav-list">
  820. <li class="nav-item" data-depth="3">
  821. <button class="nav-item-toggle"></button>
  822. <a class="nav-link" href="../../sdk/model_loader_and_viewer.html">Import, View, Convert Models</a>
  823. <ul class="nav-list">
  824. <li class="nav-item" data-depth="4">
  825. <a class="nav-link" href="../../sdk/asset_packs.html">Asset Packs</a>
  826. </li>
  827. </ul>
  828. </li>
  829. <li class="nav-item" data-depth="3">
  830. <a class="nav-link" href="../../sdk/scene_explorer.html">The SceneExplorer</a>
  831. </li>
  832. <li class="nav-item" data-depth="3">
  833. <a class="nav-link" href="../../sdk/scene_composer.html">Composing a Scene</a>
  834. </li>
  835. <li class="nav-item" data-depth="3">
  836. <a class="nav-link" href="../../sdk/terrain_editor.html">Terrain Editor</a>
  837. </li>
  838. <li class="nav-item" data-depth="3">
  839. <a class="nav-link" href="../../sdk/sample_code.html">Sample Code</a>
  840. </li>
  841. <li class="nav-item" data-depth="3">
  842. <a class="nav-link" href="../../sdk/material_editing.html">Material Editing</a>
  843. </li>
  844. <li class="nav-item" data-depth="3">
  845. <a class="nav-link" href="../../sdk/font_creation.html">Creating Bitmap Fonts</a>
  846. </li>
  847. <li class="nav-item" data-depth="3">
  848. <button class="nav-item-toggle"></button>
  849. <a class="nav-link" href="https://hub.jmonkeyengine.org/t/effecttrack-and-audiotrack-editing-in-the-sdk/23378">Audio and Effect Track Editing</a>
  850. <ul class="nav-list">
  851. <li class="nav-item" data-depth="4">
  852. <a class="nav-link" href="https://www.youtube.com/watch?v=D7JM4VMKqPc">Video: Effect and AudioTrack editing in jMonkeyEngine 3 sdk</a>
  853. </li>
  854. </ul>
  855. </li>
  856. <li class="nav-item" data-depth="3">
  857. <a class="nav-link" href="../../sdk/filters.html">Post-Processor Filter Editor and Viewer</a>
  858. </li>
  859. <li class="nav-item" data-depth="3">
  860. <a class="nav-link" href="../app/state/application_states.html">Application States</a>
  861. </li>
  862. <li class="nav-item" data-depth="3">
  863. <a class="nav-link" href="../scene/control/custom_controls.html">Custom Controls</a>
  864. </li>
  865. <li class="nav-item" data-depth="3">
  866. <a class="nav-link" href="../../sdk/vehicle_creator.html">Vehicle Creator</a>
  867. </li>
  868. </ul>
  869. </li>
  870. <li class="nav-item" data-depth="2">
  871. <button class="nav-item-toggle"></button>
  872. <span class="nav-text">Advanced Usage</span>
  873. <ul class="nav-list">
  874. <li class="nav-item" data-depth="3">
  875. <a class="nav-link" href="../../sdk/build_platform.html">Building jMonkeyEngine SDK</a>
  876. </li>
  877. <li class="nav-item" data-depth="3">
  878. <a class="nav-link" href="../../sdk/use_own_jme.html#.adoc">Using your own (modified) version of jME3 in jMonkeyEngine SDK</a>
  879. </li>
  880. <li class="nav-item" data-depth="3">
  881. <a class="nav-link" href="../../sdk/increasing_heap_memory.html">Increasing Heap Memory</a>
  882. </li>
  883. <li class="nav-item" data-depth="3">
  884. <a class="nav-link" href="../../sdk/log_files.html">Log Files</a>
  885. </li>
  886. </ul>
  887. </li>
  888. <li class="nav-item" data-depth="2">
  889. <button class="nav-item-toggle"></button>
  890. <span class="nav-text">Available external plugins</span>
  891. <ul class="nav-list">
  892. <li class="nav-item" data-depth="3">
  893. <a class="nav-link" href="../../contributions/contributions.html">Contributions</a>
  894. </li>
  895. <li class="nav-item" data-depth="3">
  896. <a class="nav-link" href="../../sdk/neotexture.html">Neo Texture Editor for procedural textures</a>
  897. </li>
  898. <li class="nav-item" data-depth="3">
  899. <a class="nav-link" href="http://www.youtube.com/watch?v=yS9a9o4WzL8">Video: Mesh Tool &amp; Physics Editor</a>
  900. </li>
  901. </ul>
  902. </li>
  903. <li class="nav-item" data-depth="2">
  904. <button class="nav-item-toggle"></button>
  905. <a class="nav-link" href="../../sdk/development.html">Developing plugins for jMonkeyEngine SDK</a>
  906. <ul class="nav-list">
  907. <li class="nav-item" data-depth="3">
  908. <a class="nav-link" href="../../sdk/development/setup.html">Creating a plugin</a>
  909. </li>
  910. <li class="nav-item" data-depth="3">
  911. <a class="nav-link" href="../../sdk/development/general.html">Creating components</a>
  912. </li>
  913. <li class="nav-item" data-depth="3">
  914. <a class="nav-link" href="../../sdk/development/scene.html">The Main Scene</a>
  915. </li>
  916. <li class="nav-item" data-depth="3">
  917. <a class="nav-link" href="../../sdk/development/sceneexplorer.html">The Scene Explorer</a>
  918. </li>
  919. <li class="nav-item" data-depth="3">
  920. <a class="nav-link" href="../../sdk/development/projects_assets.html">Projects and Assets</a>
  921. </li>
  922. <li class="nav-item" data-depth="3">
  923. <a class="nav-link" href="../../sdk/development/extension_library.html">Create a library plugin from a jar file</a>
  924. </li>
  925. <li class="nav-item" data-depth="3">
  926. <a class="nav-link" href="../../sdk/development/model_loader.html">Create a new or custom model filetype and loader</a>
  927. </li>
  928. </ul>
  929. </li>
  930. </ul>
  931. </li>
  932. </ul>
  933. </li>
  934. </ul>
  935. </nav>
  936. </div>
  937. <div class="nav-panel-explore" data-panel="explore">
  938. <div class="context">
  939. <span class="title">JME</span>
  940. <span class="version">3.4</span>
  941. </div>
  942. <ul class="components">
  943. <li class="component is-current">
  944. <span class="title">JME</span>
  945. <ul class="versions">
  946. <li class="version">
  947. <a href="../../../3.8/documentation.html">3.8</a>
  948. </li>
  949. <li class="version is-current">
  950. <a href="../../documentation.html">3.4</a>
  951. </li>
  952. <li class="version">
  953. <a href="../../../3.3/documentation.html">3.3</a>
  954. </li>
  955. <li class="version">
  956. <a href="../../../3.2/documentation.html">3.2</a>
  957. </li>
  958. </ul>
  959. </li>
  960. <li class="component">
  961. <span class="title">Wiki Contribution</span>
  962. <ul class="versions">
  963. <li class="version">
  964. <a href="../../../../docs-wiki/3.8/wiki_contributor.html">3.8</a>
  965. </li>
  966. </ul>
  967. </li>
  968. <li class="component">
  969. <span class="title">Wiki UI</span>
  970. <ul class="versions">
  971. <li class="version">
  972. <a href="../../../../wiki-ui/index.html">master</a>
  973. </li>
  974. </ul>
  975. </li>
  976. </ul>
  977. </div>
  978. </div>
  979. </aside>
  980. </div>
  981. <main class="article">
  982. <div class="toolbar" role="navigation">
  983. <button class="nav-toggle"></button>
  984. <nav class="breadcrumbs" aria-label="breadcrumbs">
  985. <ul>
  986. <li><a href="../../documentation.html">JME</a></li>
  987. <li>Landscapes</li>
  988. <li><a href="post-processor_water.html">Post-Processor Water</a></li>
  989. </ul>
  990. </nav>
  991. <div class="page-versions">
  992. <button class="version-menu-toggle" title="Show other versions of page">3.4</button>
  993. <div class="version-menu">
  994. <a class="version" href="../../../3.8/core/effect/post-processor_water.html">3.8</a>
  995. <a class="version is-current" href="post-processor_water.html">3.4</a>
  996. <a class="version" href="../../../3.3/core/effect/post-processor_water.html">3.3</a>
  997. <a class="version" href="../../../3.2/core/effect/post-processor_water.html">3.2</a>
  998. </div>
  999. </div>
  1000. <div class="edit-this-page"><a href="https://github.com/jMonkeyEngine/wiki/edit/v3.4/docs/modules/core/pages/effect/post-processor_water.adoc">Edit this Page</a></div>
  1001. </div>
  1002. <div class="content">
  1003. <article class="doc">
  1004. <h1 class="page">Rendering Water as Post-Process Effect</h1>
  1005. <div id="preamble">
  1006. <div class="sectionbody">
  1007. <div class="paragraph">
  1008. <p>The awesome SeaMonkey WaterFilter is highly configurable. It can render any type of water and also simulates the underwater part of the effect, including light effects called caustics. The effect is based on <a href="https://www.gamedev.net/articles/programming/graphics/rendering-water-as-a-post-process-effect-r2642/">Wojciech Toman’s Rendering Water as a Post-process Effect</a>
  1009. published on gamedev.net. Here&#8217;s a video:</p>
  1010. </div>
  1011. <div class="imageblock text-center">
  1012. <div class="content">
  1013. <a class="image" href="https://youtu.be/AWlUzgRN3Pc"><img src="../_images/effect/water-post.png" alt="water-post.png" width="" height=""></a>
  1014. </div>
  1015. </div>
  1016. <div class="admonitionblock note">
  1017. <table>
  1018. <tr>
  1019. <td class="icon">
  1020. <i class="fa icon-note" title="Note"></i>
  1021. </td>
  1022. <td class="content">
  1023. <div class="paragraph">
  1024. <p>The SeaMonkey WaterFilter is ideal for oceans and lakes, and especially for under-water scenes. If you only need a small simple water surface, such as a water trough or a shallow fountain, the <a href="water.html" class="xref page">SimpleWaterProcessor</a> may already be all you need.</p>
  1025. </div>
  1026. </td>
  1027. </tr>
  1028. </table>
  1029. </div>
  1030. </div>
  1031. </div>
  1032. <div class="sect1">
  1033. <h2 id="the-theory"><a class="anchor" href="#the-theory"></a>The Theory</h2>
  1034. <div class="sectionbody">
  1035. <div class="paragraph">
  1036. <p>The effect is part of a deferred rendering process, taking advantage of the pre-computed position buffer and back buffer (a texture representing the screen’s pixels position in view space, and a texture of the rendered scene).</p>
  1037. </div>
  1038. <div class="paragraph">
  1039. <p>After some calculation, this allows to reconstruct the position in world space for each pixel on the screen. If a pixel is under a given water height, let’s render it as a blue pixel! Blue pixel? Not exactly, we want waves, we want ripples, we want foam, we want reflection and refraction.</p>
  1040. </div>
  1041. <div class="paragraph">
  1042. <p>The GameDev.net article describes how those effects are achieved, but the main idea is to generate waves from a height map, create ripples from a normal map, blend in the foam texture when the water depth is below a certain height, compute the refraction color with a clever color extinction algorithm, and then, display the reflection and specular effect by computing a Fresnel term (like in the simple water effect). In addition, this effect allows to blend the water shore with the ground to avoid the hard edges of classic water effects based on grids or quads.</p>
  1043. </div>
  1044. </div>
  1045. </div>
  1046. <div class="sect1">
  1047. <h2 id="how-did-we-implement-it-in-jme3"><a class="anchor" href="#how-did-we-implement-it-in-jme3"></a>How Did We Implement it in jME3?</h2>
  1048. <div class="sectionbody">
  1049. <div class="paragraph">
  1050. <p>jME3 default behavior is to use a forward rendering process, so there is no position buffer rendered that we can take advantage of. But while rendering the main scene to a frame buffer in the FilterPostProcessor, we can write the hardware depth buffer to a texture, with nearly no additional cost.</p>
  1051. </div>
  1052. <div class="paragraph">
  1053. <p>There are several ways of reconstructing the world space position of a pixel from the depth buffer. The computational cost is higher than just fetching the position from a position buffer, but the bandwidth and the memory required is a lot lower.</p>
  1054. </div>
  1055. <div class="paragraph">
  1056. <p>Now we have the rendered scene in a texture, and we can reconstruct the position in world space of each pixel. We’re good to go!</p>
  1057. </div>
  1058. <div class="paragraph">
  1059. <p>– Nehon</p>
  1060. </div>
  1061. </div>
  1062. </div>
  1063. <div class="sect1">
  1064. <h2 id="sample-code"><a class="anchor" href="#sample-code"></a>Sample Code</h2>
  1065. <div class="sectionbody">
  1066. <div class="paragraph">
  1067. <p>These are test cases in the jME3 repository:</p>
  1068. </div>
  1069. <div class="ulist">
  1070. <ul>
  1071. <li>
  1072. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-examples/src/main/java/jme3test/water/TestPostWater.java">TestPostWater.java</a> (ocean island)</p>
  1073. </li>
  1074. <li>
  1075. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-examples/src/main/java/jme3test/water/TestPostWaterLake.java">TestPostWaterLake.java</a> (calm and muddy water pond)</p>
  1076. </li>
  1077. <li>
  1078. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-examples/src/main/java/jme3test/water/TestMultiPostWater.java">TestMultiPostWater.java</a> (several ponds of different sizes at different heights etc)</p>
  1079. </li>
  1080. </ul>
  1081. </div>
  1082. <div class="sect2">
  1083. <h3 id="using-the-water-filter"><a class="anchor" href="#using-the-water-filter"></a>Using the Water Filter</h3>
  1084. <div class="paragraph">
  1085. <p>In the <code>simpleInitApp()</code> method, you attach your scene to the rootNode, typically a terrain with a sky. Remember to add a directional light, since the water relies on the light direction vector. The WaterFilter constructor expects a node with the scene attached that should be reflected in the water, and vector information from the light source&#8217;s direction.</p>
  1086. </div>
  1087. <div class="paragraph">
  1088. <p>This is how you use the water filter post-processor code in your code:</p>
  1089. </div>
  1090. <div class="listingblock">
  1091. <div class="content">
  1092. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">private FilterPostProcessor fpp;
  1093. private WaterFilter water;
  1094. private Vector3f lightDir = new Vector3f(-4.9f, -1.3f, 5.9f); // same as light source
  1095. private float initialWaterHeight = 0.8f; // choose a value for your scene
  1096. ...
  1097. public void simpleInitApp() {
  1098. ...
  1099. fpp = new FilterPostProcessor(assetManager);
  1100. water = new WaterFilter(rootNode, lightDir);
  1101. water.setWaterHeight(initialWaterHeight);
  1102. fpp.addFilter(water);
  1103. viewPort.addProcessor(fpp);
  1104. ...
  1105. }</code></pre>
  1106. </div>
  1107. </div>
  1108. <div class="paragraph">
  1109. <p>Usually you make the water reflect everything attached to the rootNode. But you can also give a custom node (a subnode of the rootNode) to the WaterFilter constructor that has only a subset of scene nodes attached. This would be a relevant optimization if you have lots of nodes that are far away from the water, or covered, and will never be reflected.</p>
  1110. </div>
  1111. </div>
  1112. <div class="sect2">
  1113. <h3 id="optional-waves"><a class="anchor" href="#optional-waves"></a>Optional: Waves</h3>
  1114. <div class="paragraph">
  1115. <p>If you want waves, set the water height in the update loop. We reuse the initialWaterHeight variable, and repeatedly reset the waterHeight value according to time. This causes the waves.</p>
  1116. </div>
  1117. <div class="listingblock">
  1118. <div class="content">
  1119. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">private float time = 0.0f;
  1120. private float waterHeight = 0.0f;
  1121. @Override
  1122. public void simpleUpdate(float tpf) {
  1123. super.simpleUpdate(tpf);
  1124. time += tpf;
  1125. waterHeight = (float) Math.cos(((time * 0.6f) % FastMath.TWO_PI)) * 1.5f;
  1126. water.setWaterHeight(initialWaterHeight + waterHeight);
  1127. }</code></pre>
  1128. </div>
  1129. </div>
  1130. </div>
  1131. <div class="sect2">
  1132. <h3 id="optional-water-wave-and-color-effects"><a class="anchor" href="#optional-water-wave-and-color-effects"></a>Optional: Water Wave and Color Effects</h3>
  1133. <div class="imageblock">
  1134. <div class="content">
  1135. <img src="../_images/effect/water-post-muddy.png" alt="water-post-muddy.png" width="220" height="172">
  1136. </div>
  1137. </div>
  1138. <div class="paragraph">
  1139. <p>All these effects are optional. Every setter also has a getter.</p>
  1140. </div>
  1141. <table class="tableblock frame-all grid-all stretch">
  1142. <colgroup>
  1143. <col style="width: 33.3333%;">
  1144. <col style="width: 33.3333%;">
  1145. <col style="width: 33.3334%;">
  1146. </colgroup>
  1147. <thead>
  1148. <tr>
  1149. <th class="tableblock halign-left valign-top">Water method example</th>
  1150. <th class="tableblock halign-left valign-top">Effects: Waves</th>
  1151. <th class="tableblock halign-left valign-top">Default</th>
  1152. </tr>
  1153. </thead>
  1154. <tbody>
  1155. <tr>
  1156. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1157. <p>water.setWaterHeight(-6);</p>
  1158. </div></div></td>
  1159. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1160. <p>Use this waterheight method for causing waves.</p>
  1161. </div></div></td>
  1162. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1163. <p>0.0f</p>
  1164. </div></div></td>
  1165. </tr>
  1166. <tr>
  1167. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1168. <p>water.setMaxAmplitude(0.3f);</p>
  1169. </div></div></td>
  1170. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1171. <p>How high the highest waves are.</p>
  1172. </div></div></td>
  1173. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1174. <p>1.0f</p>
  1175. </div></div></td>
  1176. </tr>
  1177. <tr>
  1178. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1179. <p>water.setWaveScale(0.008f);</p>
  1180. </div></div></td>
  1181. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1182. <p>Sets the scale factor of the waves height map. The smaller the value, the bigger the waves!</p>
  1183. </div></div></td>
  1184. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1185. <p>0.005f</p>
  1186. </div></div></td>
  1187. </tr>
  1188. <tr>
  1189. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1190. <p>water.setWindDirection(new Vector2f(0,1))</p>
  1191. </div></div></td>
  1192. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1193. <p>Sets the wind direction, which is the direction where the waves move</p>
  1194. </div></div></td>
  1195. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1196. <p>Vector2f(0.0f, -1.0f)</p>
  1197. </div></div></td>
  1198. </tr>
  1199. <tr>
  1200. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1201. <p>water.setSpeed(0.7f);</p>
  1202. </div></div></td>
  1203. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1204. <p>How fast the waves move. Set it to 0.0f for still water.</p>
  1205. </div></div></td>
  1206. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1207. <p>1.0f</p>
  1208. </div></div></td>
  1209. </tr>
  1210. <tr>
  1211. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1212. <p>water.setHeightTexture( (Texture2D)<br>
  1213. manager.loadTexture("Textures/waveheight.png") )</p>
  1214. </div></div></td>
  1215. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1216. <p>This height map describes the shape of the waves</p>
  1217. </div></div></td>
  1218. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1219. <p>"Common/MatDefs/Water/Textures/heightmap.jpg"</p>
  1220. </div></div></td>
  1221. </tr>
  1222. <tr>
  1223. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1224. <p>water.setNormalTexture( (Texture2D)<br>
  1225. manager.loadTexture("Textures/wavenormals.png") )</p>
  1226. </div></div></td>
  1227. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1228. <p>This normal map describes the shape of the waves</p>
  1229. </div></div></td>
  1230. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1231. <p>"Common/MatDefs/Water/Textures/gradient_map.jpg"</p>
  1232. </div></div></td>
  1233. </tr>
  1234. <tr>
  1235. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1236. <p>water.setUseRipples(false);</p>
  1237. </div></div></td>
  1238. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1239. <p>Switches the ripples effect on or off.</p>
  1240. </div></div></td>
  1241. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1242. <p>true</p>
  1243. </div></div></td>
  1244. </tr>
  1245. <tr>
  1246. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1247. <p>water.setNormalScale(0.5f)</p>
  1248. </div></div></td>
  1249. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1250. <p>Sets the normal scaling factors to apply to the normal map. The higher the value, the more small ripples will be visible on the waves.</p>
  1251. </div></div></td>
  1252. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1253. <p>1.0f</p>
  1254. </div></div></td>
  1255. </tr>
  1256. </tbody>
  1257. </table>
  1258. <table class="tableblock frame-all grid-all stretch">
  1259. <colgroup>
  1260. <col style="width: 33.3333%;">
  1261. <col style="width: 33.3333%;">
  1262. <col style="width: 33.3334%;">
  1263. </colgroup>
  1264. <thead>
  1265. <tr>
  1266. <th class="tableblock halign-left valign-top">Water method example</th>
  1267. <th class="tableblock halign-left valign-top">Effects: Color</th>
  1268. <th class="tableblock halign-left valign-top">Default</th>
  1269. </tr>
  1270. </thead>
  1271. <tbody>
  1272. <tr>
  1273. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1274. <p>water.setLightDirection(new Vector3f(-0.37f,-0.50f,-0.78f))</p>
  1275. </div></div></td>
  1276. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1277. <p>Usually you set this to the same as the light source&#8217;s direction. Use this to set the light direction if the sun is moving.</p>
  1278. </div></div></td>
  1279. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1280. <p>Value given to WaterFilter() constructor.</p>
  1281. </div></div></td>
  1282. </tr>
  1283. <tr>
  1284. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1285. <p>water.setLightColor(ColorRGBA.White)</p>
  1286. </div></div></td>
  1287. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1288. <p>Usually you set this to the same as the light source&#8217;s color.</p>
  1289. </div></div></td>
  1290. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1291. <p>RGBA.White</p>
  1292. </div></div></td>
  1293. </tr>
  1294. <tr>
  1295. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1296. <p>water.setWaterColor(ColorRGBA.Brown.mult(2.0f));</p>
  1297. </div></div></td>
  1298. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1299. <p>Sets the main water color.</p>
  1300. </div></div></td>
  1301. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1302. <p>greenish blue<br>
  1303. ColorRGBA(0.0f,0.5f,0.5f,1.0f)</p>
  1304. </div></div></td>
  1305. </tr>
  1306. <tr>
  1307. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1308. <p>water.setDeepWaterColor(ColorRGBA.Brown);</p>
  1309. </div></div></td>
  1310. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1311. <p>Sets the deep water color.</p>
  1312. </div></div></td>
  1313. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1314. <p>dark blue<br>
  1315. ColorRGBA(0.0f, 0.0f,0.2f,1.0f)</p>
  1316. </div></div></td>
  1317. </tr>
  1318. <tr>
  1319. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1320. <p>water.setWaterTransparency(0.2f);</p>
  1321. </div></div></td>
  1322. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1323. <p>Sets how fast colors fade out. use this to control how clear (e.g. 0.05f) or muddy (0.2f) water is.</p>
  1324. </div></div></td>
  1325. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1326. <p>0.1f</p>
  1327. </div></div></td>
  1328. </tr>
  1329. <tr>
  1330. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1331. <p>water.setColorExtinction(new Vector3f(10f,20f,30f));</p>
  1332. </div></div></td>
  1333. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1334. <p>Sets At what depth the refraction color extincts. The three values are RGB (red, green, blue) in this order. Play with these parameters to &#8220;muddy&#8221; the water.</p>
  1335. </div></div></td>
  1336. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1337. <p>Vector3f(5f,20f,30f)</p>
  1338. </div></div></td>
  1339. </tr>
  1340. </tbody>
  1341. </table>
  1342. <table class="tableblock frame-all grid-all stretch">
  1343. <colgroup>
  1344. <col style="width: 33.3333%;">
  1345. <col style="width: 33.3333%;">
  1346. <col style="width: 33.3334%;">
  1347. </colgroup>
  1348. <thead>
  1349. <tr>
  1350. <th class="tableblock halign-left valign-top">Water method example</th>
  1351. <th class="tableblock halign-left valign-top">Effects: Shore</th>
  1352. <th class="tableblock halign-left valign-top">Default</th>
  1353. </tr>
  1354. </thead>
  1355. <tbody>
  1356. <tr>
  1357. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1358. <p>water.setCenter(Vector3f.ZERO);<br>
  1359. water.setRadius(260);</p>
  1360. </div></div></td>
  1361. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1362. <p>Limit the water filter to a hemisphere with the given center and radius. Use this for lakes and smaller bodies of water. Skip this for oceans.</p>
  1363. </div></div></td>
  1364. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1365. <p>unused</p>
  1366. </div></div></td>
  1367. </tr>
  1368. <tr>
  1369. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1370. <p>water.setShoreHardness(1.0f);</p>
  1371. </div></div></td>
  1372. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1373. <p>Sets how soft the transition between shore and water should be. High values mean a harder transition between shore and water.</p>
  1374. </div></div></td>
  1375. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1376. <p>0.1f</p>
  1377. </div></div></td>
  1378. </tr>
  1379. <tr>
  1380. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1381. <p>water.setUseHQShoreline(false);</p>
  1382. </div></div></td>
  1383. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1384. <p>Renders shoreline with better quality ?</p>
  1385. </div></div></td>
  1386. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1387. <p>true</p>
  1388. </div></div></td>
  1389. </tr>
  1390. </tbody>
  1391. </table>
  1392. <table class="tableblock frame-all grid-all stretch">
  1393. <colgroup>
  1394. <col style="width: 33.3333%;">
  1395. <col style="width: 33.3333%;">
  1396. <col style="width: 33.3334%;">
  1397. </colgroup>
  1398. <thead>
  1399. <tr>
  1400. <th class="tableblock halign-left valign-top">Water method example</th>
  1401. <th class="tableblock halign-left valign-top">Effects: Foam</th>
  1402. <th class="tableblock halign-left valign-top">Default</th>
  1403. </tr>
  1404. </thead>
  1405. <tbody>
  1406. <tr>
  1407. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1408. <p>water.setUseFoam(false);</p>
  1409. </div></div></td>
  1410. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1411. <p>Switches the white foam on or off</p>
  1412. </div></div></td>
  1413. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1414. <p>true</p>
  1415. </div></div></td>
  1416. </tr>
  1417. <tr>
  1418. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1419. <p>water.setFoamHardness(0.5f)</p>
  1420. </div></div></td>
  1421. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1422. <p>Sets how much the foam will blend with the shore to avoid a hard edged water plane.</p>
  1423. </div></div></td>
  1424. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1425. <p>1.0f</p>
  1426. </div></div></td>
  1427. </tr>
  1428. <tr>
  1429. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1430. <p>water.setFoamExistence(new Vector3f(0.5f,5f,1.0f))</p>
  1431. </div></div></td>
  1432. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1433. <p>The three values describe what depth foam starts to fade out, at what depth it is completely invisible, at what height foam for waves appears (+ waterHeight).</p>
  1434. </div></div></td>
  1435. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1436. <p>Vector3f(0.45f,4.35f,1.0f)</p>
  1437. </div></div></td>
  1438. </tr>
  1439. <tr>
  1440. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1441. <p>water.setFoamTexture( (Texture2D)<br>
  1442. manager.loadTexture("Textures/foam.png") )</p>
  1443. </div></div></td>
  1444. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1445. <p>This foam texture will be used with WrapMode.Repeat</p>
  1446. </div></div></td>
  1447. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1448. <p>"Common/MatDefs/Water/Textures/foam.jpg"</p>
  1449. </div></div></td>
  1450. </tr>
  1451. </tbody>
  1452. </table>
  1453. <table class="tableblock frame-all grid-all stretch">
  1454. <colgroup>
  1455. <col style="width: 33.3333%;">
  1456. <col style="width: 33.3333%;">
  1457. <col style="width: 33.3334%;">
  1458. </colgroup>
  1459. <thead>
  1460. <tr>
  1461. <th class="tableblock halign-left valign-top">Water method example</th>
  1462. <th class="tableblock halign-left valign-top">Effects: Light</th>
  1463. <th class="tableblock halign-left valign-top">Default</th>
  1464. </tr>
  1465. </thead>
  1466. <tbody>
  1467. <tr>
  1468. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1469. <p>water.setSunScale(1f);</p>
  1470. </div></div></td>
  1471. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1472. <p>Sets how big the sun should appear in the light&#8217;s specular effect on the water.</p>
  1473. </div></div></td>
  1474. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1475. <p>3.0f</p>
  1476. </div></div></td>
  1477. </tr>
  1478. <tr>
  1479. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1480. <p>water.setUseSpecular(false)</p>
  1481. </div></div></td>
  1482. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1483. <p>Switches specular effect on or off</p>
  1484. </div></div></td>
  1485. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1486. <p>true</p>
  1487. </div></div></td>
  1488. </tr>
  1489. <tr>
  1490. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1491. <p>water.setShininess(0.8f)</p>
  1492. </div></div></td>
  1493. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1494. <p>Sets the shininess of the water reflections</p>
  1495. </div></div></td>
  1496. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1497. <p>0.7f</p>
  1498. </div></div></td>
  1499. </tr>
  1500. <tr>
  1501. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1502. <p>water.setUseRefraction(true)</p>
  1503. </div></div></td>
  1504. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1505. <p>Switches the refraction effect on or off.</p>
  1506. </div></div></td>
  1507. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1508. <p>true</p>
  1509. </div></div></td>
  1510. </tr>
  1511. <tr>
  1512. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1513. <p>water.setRefractionConstant(0.2f);</p>
  1514. </div></div></td>
  1515. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1516. <p>The lower the value, the less reflection can be seen on water. This is a constant related to the index of refraction (IOR) used to compute the fresnel term.</p>
  1517. </div></div></td>
  1518. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1519. <p>0.3f</p>
  1520. </div></div></td>
  1521. </tr>
  1522. <tr>
  1523. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1524. <p>water.setRefractionStrength(-0.1)</p>
  1525. </div></div></td>
  1526. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1527. <p>This value modifies the current Fresnel term. If you want to weaken reflections use bigger value. If you want to emphasize them, use a value smaller than 0.</p>
  1528. </div></div></td>
  1529. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1530. <p>0.0f</p>
  1531. </div></div></td>
  1532. </tr>
  1533. <tr>
  1534. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1535. <p>water.setReflectionMapSize(256)</p>
  1536. </div></div></td>
  1537. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1538. <p>Sets the size of the reflection map. The higher, the better the quality, but the slower the effect.</p>
  1539. </div></div></td>
  1540. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1541. <p>512</p>
  1542. </div></div></td>
  1543. </tr>
  1544. </tbody>
  1545. </table>
  1546. </div>
  1547. <div class="sect2">
  1548. <h3 id="sound-effects"><a class="anchor" href="#sound-effects"></a>Sound Effects</h3>
  1549. <div class="paragraph">
  1550. <p>You should also add audio nodes with water sounds to complete the effect.</p>
  1551. </div>
  1552. <div class="listingblock">
  1553. <div class="content">
  1554. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">AudioNode waves = new AudioNode(assetManager, "Sounds/Environment/Ocean Waves.ogg", false);
  1555. waves.setLooping(true);
  1556. audioRenderer.playSource(waves);</code></pre>
  1557. </div>
  1558. </div>
  1559. <div class="paragraph">
  1560. <p>See also: <a href="../audio/audio.html" class="xref page">audio</a>.</p>
  1561. </div>
  1562. <hr>
  1563. <div class="paragraph">
  1564. <p>See also:</p>
  1565. </div>
  1566. <div class="ulist">
  1567. <ul>
  1568. <li>
  1569. <p><a href="https://hub.jmonkeyengine.org/t/monkeys-at-the-beach/15000">JME3&#8217;s Water Post-Process Effect</a> by Nehon</p>
  1570. </li>
  1571. <li>
  1572. <p><a href="water.html" class="xref page">Simple water</a></p>
  1573. </li>
  1574. </ul>
  1575. </div>
  1576. </div>
  1577. </div>
  1578. </div>
  1579. <nav class="pagination">
  1580. <span class="prev"><a href="water.html">Simple Water</a></span>
  1581. <span class="next"><a href="../renderer/camera.html">Camera</a></span>
  1582. </nav>
  1583. </article>
  1584. <aside class="toc sidebar" data-title="Contents" data-levels="2">
  1585. <div class="toc-menu"></div>
  1586. </aside>
  1587. </div>
  1588. </main>
  1589. </div>
  1590. <footer class="footer">
  1591. <p>Copyright 2020 jMonkeyEngine Wiki Contributors. Licensed BSD-3.</p>
  1592. </footer>
  1593. <script src="../../../../_/js/vendor/docsearch.min.js"></script>
  1594. <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js -->
  1595. <script>
  1596. var search = docsearch({
  1597. apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
  1598. indexName: 'jmonkeyengine',
  1599. inputSelector: '#search-input',
  1600. autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
  1601. algoliaOptions: { hitsPerPage: 10 }
  1602. }).autocomplete
  1603. search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
  1604. function focusSearchInput () { document.querySelector('#search-input').focus() }
  1605. if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput)
  1606. </script>
  1607. <script src="../../../../_/js/site.js"></script>
  1608. <script async src="../../../../_/js/vendor/highlight.js"></script>
  1609. </body>
  1610. </html>