Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 12 additions & 40 deletions examples/webgl2_rendertarget_texture2darray.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,12 @@

uniform sampler2DArray uTexture;
uniform int uDepth;
uniform float uSampleLeft;
uniform float uSampleWidth;
uniform float uIntensity;

void main()
{
float voxel = texture(uTexture, vec3( vUv, uDepth )).r;
gl_FragColor.r = (voxel - uSampleLeft) / uSampleWidth;
gl_FragColor.r = voxel * uIntensity;
}

</script>
Expand Down Expand Up @@ -87,8 +86,7 @@

<p>
This example shows how to render to an array of 2D texture.</br>
WebGL2 allows to render to specific "layers" in 3D texture and array of textures.</br>
You can use the mouse left click to change the intensity of the render target.
WebGL2 allows to render to specific "layers" in 3D texture and array of textures.
</p>

Scanned head data by
Expand All @@ -103,6 +101,7 @@

import Stats from './jsm/libs/stats.module.js';
import { unzipSync } from './jsm/libs/fflate.module.min.js';
import { GUI } from './jsm/libs/dat.gui.module.js';

import { WEBGL } from './jsm/WebGL.js';

Expand All @@ -118,8 +117,8 @@
depth: 109
};

const App = {
mousePrevious: new THREE.Vector2()
const params = {
intensity: 1
};

/** Post-processing objects */
Expand All @@ -139,8 +138,7 @@
uniforms: {
uTexture: { value: null },
uDepth: { value: 55 },
uSampleLeft: { value: 0 },
uSampleWidth: { value: 1.0 },
uIntensity: { value: 1.0 }
},
vertexShader: document.getElementById( 'vertex-postprocess' ).textContent.trim(),
fragmentShader: document.getElementById( 'fragment-postprocess' ).textContent.trim()
Expand Down Expand Up @@ -178,13 +176,16 @@
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );

renderer.domElement.addEventListener( 'mousedown', onMouseDown );

stats = new Stats();
container.appendChild( stats.dom );

window.addEventListener( 'resize', onWindowResize, false );

const gui = new GUI();

gui.add( params, 'intensity', 0, 1 ).step( 0.01 ).onChange( value => postProcessMaterial.uniforms.uIntensity.value = value );
gui.open();

// width 256, height 256, depth 109, 8-bit, zip archived raw data

new THREE.FileLoader()
Expand Down Expand Up @@ -222,35 +223,6 @@

}

function onMouseDown(e) {

renderer.domElement.addEventListener('mouseup', onMouseUp);
renderer.domElement.addEventListener('mousemove', onMouseMove);

App.mousePrevious.set(e.clientX, e.clientY);

}

function onMouseUp() {

renderer.domElement.removeEventListener('mousemove', onMouseMove);
renderer.domElement.removeEventListener('mouseup', onMouseUp);

}

function onMouseMove(e) {

const x = e.clientX;
const y = e.clientY;
const deltaX = ( x - App.mousePrevious.x ) * 0.001;
const deltaY = ( y - App.mousePrevious.y ) * 0.001;
postProcessMaterial.uniforms.uSampleLeft.value += deltaX;
postProcessMaterial.uniforms.uSampleWidth.value += deltaY;

App.mousePrevious.set( x, y );

}

function onWindowResize() {

camera.aspect = window.innerWidth / window.innerHeight;
Expand Down