PageRenderTime 63ms CodeModel.GetById 31ms RepoModel.GetById 0ms app.codeStats 0ms

/micropages/release_0_3/index.html

https://github.com/zauner/vvvv.js-website
HTML | 161 lines | 148 code | 11 blank | 2 comment | 0 complexity | a1212fdc6865904ce7d4699b8b50eb16 MD5 | raw file
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Clock Patterns: VVVV.js v0.3.0 Micropage</title>
  5. <link rel="stylesheet" type="text/css" href="../../vvvv_js/vvvviewer/vvvv.css"/>
  6. <link rel="stylesheet" type="text/css" href="main.css"/>
  7. <script language="JavaScript" src="../../vvvv_js/lib/jquery/jquery-1.8.2.min.js"></script>
  8. <script language="JavaScript" src="../../vvvv_js/lib/underscore/underscore-min.js"></script>
  9. <script language="JavaScript" src="../../vvvv_js/lib/glMatrix-0.9.5.min.js"></script>
  10. <script language="JavaScript" src="../../vvvv_js/vvvv.min.js"></script>
  11. <script language="JavaScript" src="../../vvvv_js/lib/d3-v1.14/d3.min.js"></script>
  12. <script language="JavaScript" src="../../vvvv_js/vvvviewer/vvvv.vvvviewer.js"></script>
  13. <script language="JavaScript">
  14. if (!$.browser.webkit && !$.browser.mozilla) {
  15. location.href = "../../notsupported.html";
  16. }
  17. $(document).ready(function() {
  18. VVVV.init('../../vvvv_js','full', function() {
  19. var patchfile = "index.v4p";
  20. $testcanvas = $('<canvas width="10" height="10"></canvas>');
  21. $('body').append($testcanvas);
  22. var webgl_enabled = false;
  23. try {
  24. var testctxt = $testcanvas.get(0).getContext("experimental-webgl");
  25. if (testctxt) {
  26. patchfile = "index_webgl.v4p";
  27. $('#the_patch img').attr('src', "index_webgl_v4p_preview.png");
  28. }
  29. }
  30. catch (x) { }
  31. $testcanvas.remove();
  32. if (patchfile=="index.v4p") {
  33. $('.no_webgl').show();
  34. window.setTimeout(function() {
  35. $('.no_webgl').fadeOut();
  36. }, 15000);
  37. }
  38. $('.loading .label').text("Loading Patches ...");
  39. patch = new VVVV.Core.Patch(patchfile, function() {
  40. $('.loading').hide();
  41. var mainloop = new VVVV.Core.MainLoop(patch, 30);
  42. mainloop.start();
  43. //var vvvviewer = new VVVV.VVVViewer(patch, '#the_patch');
  44. var vvvviewer = undefined;
  45. $('#the_patch').click(function() {
  46. if (!vvvviewer)
  47. var vvvviewer = new VVVV.VVVViewer(patch, '#the_patch');
  48. });
  49. });
  50. });
  51. })
  52. </script>
  53. </head>
  54. <body>
  55. <div id="main">
  56. <div id="header">
  57. <img class="loading default_pattern" src="static_pattern.png"/>
  58. <canvas id="pattern" width="920" height="320"></canvas>
  59. <div class="no_webgl">
  60. You are viewing the light version of this page, because your browser doesn't support WebGL. Find out
  61. more <a href="http://get.webgl.org">here</a>.
  62. </div>
  63. </div>
  64. <div id="headline">
  65. <h2>Clock Patterns</h2>
  66. VVVV.js v0.3.0 Micropage
  67. <div id="meta_links">
  68. <a href="../../download/vvvv_js-0.3.0.tar.gz">Download</a>
  69. <a href="http://github.com/zauner/vvvv.js">Github</a>
  70. <a href="http://vvvvjs.quasipartikel.at">Project Website</a>
  71. </div>
  72. </div>
  73. <p class="intro">
  74. You know what time it is? Exactly: subpatch time. The introduction of subpatches in this new version of VVVV.js is only one in a row of improvements under VVVV.js' hood. &mdash;
  75. improvements in performance, stability and functionality which bring VVVV.js a step closer to becoming a ready-for-production development tool.
  76. Here's what's new:
  77. </p>
  78. <div id="the_patch"><img src="index_v4p_preview.png"/></div>
  79. <h3>Subpatches</h2>
  80. <p class="left">
  81. The biggest addition in this version is the support for subpatches. If you are into VVVV or similar software, you already know how valuable these are. For those
  82. who are not familiar with the subpatch concept: you can now group together a patch and form a 'subpatch', which you can nest as a node into
  83. another patch. You can think of it as functions or classes/modules, if you like. This is great for modularizing your patches, hiding complexity (aka mess) and increasing
  84. reusability of your code. Read more about subpatches in the <a href="http://vvvv.org/documentation/subpatches">VVVV Documentation</a>.
  85. </p>
  86. <div class="patch_caption">
  87. <h4>The Clock Pattern Example</h4>
  88. If your browser is supported, you should see a pattern consisting of repeating clock designs at the top of this page (inspired by all the great projects, where
  89. clocks are mounted next to each other, like <a href="http://florianjenett.de/one-perfect-cube/">here</a> and everything from <a href="http://www.todayandtomorrow.net/?s=clock">here</a>) Click the patch on the right
  90. to activate the VVVViewer and observe the running patch. It uses subpatches to modularize the five different clock designs, and leaves only switching between
  91. them to the main patch. This is great for various reasons:
  92. <ul>
  93. <li>Clock designs can easily be added or removed</li>
  94. <li>
  95. The main patch does not have to deal with the complexity of the single clock implementations (double click on one of the
  96. subpatches to see what's going on inside)
  97. </li>
  98. <li>
  99. Reusability: there are two versions of this, a WebGL version and a pure canvas version. They only differ in the main patch. The same clock subpatches are
  100. used in both.
  101. </li>
  102. </ul>
  103. </div>
  104. <h3>Pin Types and "Node" pins</h3>
  105. <p class="left">
  106. Until now, VVVV.js was fine without distinguishing different types of pins. The introduction of subpatches raised the need
  107. for generic "Node" IOBoxes, which led to the decision, that now is the right time to add Pin Types.
  108. </p>
  109. <p>This allows us to port all the
  110. "Node"-nodes (!), like Switch (Node), GetSlice (Node), etc. Also, it's the foundation for type checking, which again is crucial for a future
  111. in-browser patch editor.
  112. </p>
  113. <h3>Performance Boost</h2>
  114. <p>
  115. VVVV.js uses underscore.js mainly for iterating through hashes. This is really great because it overcomes Javascript's lack
  116. of ordered hashes, and creates more verbous code.
  117. </p>
  118. <p>
  119. However, if used at a high frequency (as in every frame) it turns
  120. out to significantly throttle overall shmoofness. Replacing underscore.js calls with native loops at performance critical code locations brought
  121. a noticable performance boost and should drastically increase the average frame rate in most cases.
  122. </p>
  123. <h3>Editor Interface</h2>
  124. <p>
  125. VVVV.js now provides an interface for "Editors" &mdash; this can be any kind of program which manipulates the VVVV patches in
  126. the browser.
  127. </p>
  128. <p>
  129. In this version, the VVVVJsConnector (which connects classic VVVV and VVVV.js in the browser) has been decoupled from the core,
  130. and turned into such an "Editor". This paves the way for creating in-browser editors and plug them into VVVV.js effortlessly. In the near future
  131. there might be a tabular editor which lets you tweak pins during runtime, to begin with. And eventually, this should lead to a full-fledged patch
  132. editor running inside the browser.
  133. </p>
  134. </div>
  135. <!-- Start of StatCounter Code -->
  136. <script type="text/javascript">
  137. var sc_project=7067416;
  138. var sc_invisible=1;
  139. var sc_security="cfe91c6a";
  140. </script>
  141. <script type="text/javascript"
  142. src="http://www.statcounter.com/counter/counter.js"></script><noscript><div
  143. class="statcounter"><a title="free web stats"
  144. href="http://statcounter.com/" target="_blank"><img
  145. class="statcounter"
  146. src="http://c.statcounter.com/7067416/0/cfe91c6a/1/"
  147. alt="free web stats" ></a></div></noscript>
  148. <!-- End of StatCounter Code -->
  149. </body>
  150. </html>