Guest User

Untitled

a guest
Aug 3rd, 2012
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.34 KB | None | 0 0
  1. 'problem_shader':{
  2. uniforms: {
  3. W: { type:"i", value:500}, // dimension de la fenêtre
  4. H: { type:"i", value:500}, // dimension de la fenêtre
  5. textu1: { type: "t", value: 1, texture: null },
  6. textu2: { type: "t", value: 1, texture: null }
  7. },
  8.  
  9. vertexShader: [
  10. "void main() {",
  11. "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
  12. "}"
  13.  
  14. ].join("\n"),
  15.  
  16. fragmentShader: [
  17. "uniform int W;",
  18. "uniform int H;",
  19. "uniform sampler2D textu1;",
  20. "uniform sampler2D textu2;",
  21. "float unpack (vec4 colour)",
  22. "{",
  23. "const vec4 bitShifts = vec4(1.0 / (256.0 * 256.0 * 256.0),1.0 / (256.0 * 256.0),1.0 / 256.0,1.0);",
  24. "return dot(colour , bitShifts);",
  25. "}",
  26.  
  27. "vec4 WHITE = vec4(1.,1.,1.,1.);",
  28. "vec4 RED = vec4(1.,0.,0.,1.);",
  29. "vec4 GREEN = vec4(0.,1.,0.,1.);",
  30. "vec4 BLUE = vec4(0.,0.,1.,1.);",
  31.  
  32. "void main(void){",
  33.  
  34. "vec2 pos_cour=vec2(gl_FragCoord.s/float(W),gl_FragCoord.t/float(H));",
  35. "vec4 FOCUS = texture2D(textu2, pos_cour);",
  36. "vec4 Z = texture2D(textu1, pos_cour);",
  37.  
  38.  
  39. "float z_min = Z.g;",
  40.  
  41. "vec4 col=vec4(0.0,0.0,0.0,0.0);",
  42. "if(z_min<0.6){if(FOCUS.a<0.3){col=RED;}else{col=WHITE;}}else{col=GREEN;};",
  43. //"if(z_min<0.6){col=RED;}else{col=GREEN;}",
  44. "gl_FragColor=col;",
  45. //"gl_FragColor=vec4(z_min,z_min,z_min,1.0);",
  46.  
  47.  
  48. "}"
  49. ].join("\n")
  50.  
  51. },
  52.  
  53.  
  54. 'create_color':{
  55. uniforms: {
  56.  
  57. },
  58.  
  59. vertexShader: [
  60. "void main() {",
  61. "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
  62. "}"
  63.  
  64. ].join("\n"),
  65.  
  66. fragmentShader: [
  67.  
  68. "void main(void){",
  69. "gl_FragColor=vec4(0.1,0.2,0.1,0.4);",
  70. "}"
  71. ].join("\n")
  72.  
  73. },
  74.  
  75.  
  76.  
  77. 'utilise_texture':{
  78. uniforms: {
  79. W: { type:"i", value:500}, // dimension de la fenêtre
  80. H: { type:"i", value:500}, // dimension de la fenêtre
  81. textu: { type: "t", value: 1, texture: null }
  82. },
  83.  
  84. vertexShader: [
  85. "void main() {",
  86. "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
  87. "}"
  88.  
  89. ].join("\n"),
  90.  
  91. fragmentShader: [
  92. "uniform int W;",
  93. "uniform int H;",
  94. "uniform sampler2D textu;",
  95. "float unpack (vec4 colour)",
  96. "{",
  97. "const vec4 bitShifts = vec4(1.0 / (256.0 * 256.0 * 256.0),1.0 / (256.0 * 256.0),1.0 / 256.0,1.0);",
  98. "return dot(colour , bitShifts);",
  99. "}",
  100.  
  101. "void main(void){",
  102. "vec2 pos_cour=vec2(gl_FragCoord.s/float(W),gl_FragCoord.t/float(H));",
  103. "if(gl_FragCoord.s>400.0 && gl_FragCoord.s<800.0 &&gl_FragCoord.t>300.0 && gl_FragCoord.t<500.0 ) {",
  104. "gl_FragColor=vec4(0.0,1.0,0.0,1.0);",
  105. "} else {",
  106. "gl_FragColor=vec4(0.0,0.0,1.0,1.0);",
  107. "}",
  108. "}"
  109.  
  110.  
  111. ==============================================================================================
  112. END OF SHADER
  113. ================================================================================================
  114.  
  115. <!doctype html>
  116. <html lang="en">
  117. <head>
  118. <title>Pompe</title>
  119. <meta charset="utf-8">
  120. <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  121. <style>
  122. body {
  123. font-family: Monospace;
  124. background-color: #000000;
  125. margin: 0px;
  126. overflow: hidden;
  127. }
  128.  
  129. #info {
  130. color: #fff;
  131. position: absolute;
  132. top: 10px;
  133. width: 100%;
  134. text-align: center;
  135. z-index: 100;
  136. display:block;
  137.  
  138. }
  139.  
  140. a { color: skyblue }
  141. </style>
  142. </head>
  143. <body>
  144.  
  145.  
  146. <script src="../build/Three.js"></script>
  147.  
  148. <script src="js/loaders/ColladaLoader.js"></script>
  149. <script src="js/ShaderExtras.js"></script>
  150. <script src="js/Detector.js"></script>
  151. <script src="js/Stats.js"></script>
  152.  
  153. <script>
  154.  
  155. if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
  156.  
  157. var container, stats;
  158.  
  159. var camera, scene, renderer, objects;
  160. var particleLight, pointLight;
  161. var dae, skin;
  162. var affich_panneau=false;
  163. var loader = new THREE.ColladaLoader();
  164. loader.options.convertUpAxis = true;
  165. loader.load( './models/collada/Object.dae', function colladaReady( collada ) {
  166.  
  167. dae = collada.scene;
  168. //ajout d'un materiau
  169. //var material = new THREE.MeshLambertMaterial({transparent: true,opacity:0.5});
  170.  
  171. //dae.children[0].material=new THREE.MeshPhongMaterial({transparent: true,opacity:0.7 });;
  172.  
  173. init();
  174. animate();
  175.  
  176. } );
  177. //gestion clavier
  178. function onKeyDown ( event ) {
  179.  
  180. switch( event.keyCode ) {
  181.  
  182. case 78: /*n*/ affich_panneau=!affich_panneau; break;
  183.  
  184.  
  185. }
  186.  
  187. };
  188. //
  189. function init() {
  190.  
  191. container = document.createElement( 'div' );
  192. document.body.appendChild( container );
  193.  
  194. scene = new THREE.Scene();
  195. //camera, clavier, souris trackball
  196. camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
  197. camera.position.set( 3, 3, 3 );
  198.  
  199. scene.add( camera );
  200.  
  201. controls = new THREE.TrackballControls( camera );
  202.  
  203. controls.rotateSpeed = 3.0;
  204. controls.zoomSpeed = 3.2;
  205. controls.panSpeed = 0.8;
  206.  
  207. controls.noZoom = false;
  208. controls.noPan = false;
  209.  
  210. controls.staticMoving = true;
  211. controls.dynamicDampingFactor = 0.3;
  212.  
  213. controls.keys = [ 65, 83, 68 ];
  214.  
  215. controls.addEventListener( 'change', render );
  216.  
  217. document.addEventListener( 'keydown', onKeyDown, false );
  218. // Add the COLLADA
  219.  
  220. scene.add( dae );
  221.  
  222.  
  223. // Lights
  224.  
  225.  
  226. pointLight = new THREE.PointLight( 0xffffff, 1.4,150000.0 );
  227. pointLight.position.x = 4;
  228. pointLight.position.y = 4;
  229. pointLight.position.z = 4;
  230. scene.add( pointLight );
  231.  
  232.  
  233.  
  234. renderer = new THREE.WebGLRenderer();
  235. renderer.setSize( window.innerWidth, window.innerHeight );
  236. renderer.autoClear=false;
  237. //renderer.setBlending(THREE.NoBlending);
  238. container.appendChild( renderer.domElement );
  239.  
  240. // ajout
  241. renderTargetParametersRGBA_float = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, type:THREE.FloatType, format: THREE.RGBAFormat,stencilBuffer: false };
  242. target_depth=new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, renderTargetParametersRGBA_float );
  243. target_color=new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, renderTargetParametersRGBA_float );
  244. target_position=new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, renderTargetParametersRGBA_float );
  245.  
  246.  
  247. var shader = THREE.ShaderExtras[ "utilise_texture" ];
  248. var uniforms = THREE.UniformsUtils.clone( shader.uniforms );
  249. //uniforms["textu"].texture=target;
  250. uniforms["W"]=window.innerWidth;
  251. uniforms["H"]=window.innerHeight;
  252. var parameters = { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms };
  253. material = new THREE.ShaderMaterial( parameters );
  254.  
  255. /*var shader_depth = THREE.ShaderExtras[ "depth_fragment" ];
  256. var uniforms_depth = THREE.UniformsUtils.clone( shader_depth.uniforms );
  257. var parameters_depth = { fragmentShader: shader_depth.fragmentShader, vertexShader: shader_depth.vertexShader, uniforms: uniforms_depth };
  258. material_depth = new THREE.ShaderMaterial( parameters_depth );
  259. material_depth.blending=THREE["NoBlending"];*/
  260. //
  261. var shader_color = THREE.ShaderExtras[ "create_color" ];
  262. var uniforms_color = THREE.UniformsUtils.clone( shader_color.uniforms );
  263. var parameters_color = { fragmentShader: shader_color.fragmentShader, vertexShader: shader_color.vertexShader, uniforms: uniforms_color };
  264. material_color = new THREE.ShaderMaterial( parameters_color );
  265. material_color.blending=THREE["NoBlending"];
  266. //
  267.  
  268. //
  269. var shader_problem = THREE.ShaderExtras[ "problem_shader" ];
  270. var uniforms_problem = THREE.UniformsUtils.clone( shader_problem.uniforms );
  271. uniforms_problem["W"].value=window.innerWidth;
  272. uniforms_problem["H"].value=window.innerHeight;
  273. uniforms_problem["textu1"].texture=target_position;
  274. uniforms_problem["textu2"].texture=target_color;
  275. var parameters_problem = { fragmentShader: shader_problem.fragmentShader, vertexShader: shader_problem.vertexShader, uniforms: uniforms_problem };
  276. material_problem = new THREE.ShaderMaterial( parameters_problem );
  277. material_problem.blending=THREE["NoBlending"];
  278.  
  279. //
  280.  
  281.  
  282. //
  283. stats = new Stats();
  284. stats.domElement.style.position = 'absolute';
  285. stats.domElement.style.top = '0px';
  286. container.appendChild( stats.domElement );
  287.  
  288. /*var gl = renderer.context;
  289. gl.depthFunc(gl.LEQUAL);
  290. gl.clearDepth(1.0);*/
  291. }
  292.  
  293. //
  294.  
  295. var t = 0;
  296. function animate() {
  297.  
  298. requestAnimationFrame( animate );
  299. controls.update();
  300.  
  301. render();
  302.  
  303. stats.update();
  304.  
  305. //la lumière se déplace avec la caméra
  306. pointLight.position.x = camera.position.x;
  307. pointLight.position.y = camera.position.y;
  308. pointLight.position.z = camera.position.z;
  309.  
  310. }
  311.  
  312. function render() {
  313. renderer.clear();
  314.  
  315. renderer.clearTarget(target_position,true,true,true);
  316. scene.overrideMaterial=material;
  317. renderer.render(scene,camera,target_position);
  318. renderer.clearTarget(target_color,true,true,true);
  319. scene.overrideMaterial=material_color;
  320. renderer.render(scene,camera,target_color);
  321. scene.overrideMaterial=material_problem;
  322. renderer.render(scene,camera);
  323. }
  324.  
  325. </script>
  326. </body>
  327. </html>
Advertisement
Add Comment
Please, Sign In to add comment