var camera, scene, renderer;
var geometry, material, mesh;
var dispSize = {x:window.innerWidth, y:window.innerHeight};
camera = new THREE.PerspectiveCamera( 45, dispSize.x/dispSize.y, 0.1, 100 );
scene = new THREE.Scene();
posScene = new THREE.Scene();
setScene = new THREE.Scene();
geometry = new THREE.SphereGeometry( 0.2, 15, 15 );
console.log(geometry.vertices.length);
var a = new Float32Array(geometry.vertices.length * 4);
for(var k=0; k<geometry.vertices.length; k++) {
a[ k*4 + 0 ] = geometry.vertices[k].x;
a[ k*4 + 1 ] = geometry.vertices[k].y;
a[ k*4 + 2 ] = geometry.vertices[k].z;
posTexture[2] = new THREE.DataTexture(a, 16, 16, THREE.RGBAFormat, THREE.FloatType);
posTexture[2].needsUpdate = true;
posTexture[2].minFilter = THREE.NearestFilter;
posTexture[2].magFilter = THREE.NearestFilter;
posTexture[2].flipY = false;
posTexture[0] = new THREE.WebGLRenderTarget(16, 16, {
magFilter: THREE.NearestFilter,
posTexture[1] = new THREE.WebGLRenderTarget(16, 16, {
magFilter: THREE.NearestFilter,
processCamera = new THREE.OrthographicCamera(-16/2,
posTexture: {type: "t", value: posTexture[2]}
var setMaterial = new THREE.ShaderMaterial({
vertexShader: document.getElementById('setVert').textContent,
fragmentShader: document.getElementById('setFrag').textContent,
var setPlane = new THREE.Mesh(new THREE.PlaneGeometry(16,16), setMaterial);
var shaderMaterial = new THREE.ShaderMaterial({
vertexShader: document.getElementById('vertexshader').textContent,
fragmentShader: document.getElementById('fragmentshader').textContent,
var posPlane = new THREE.Mesh(new THREE.PlaneGeometry(16,16), shaderMaterial);
var dispVert = document.getElementById('dispVert').textContent;
var dispFrag = document.getElementById('dispFrag').textContent;
posTexture: {type: "t", value: posTexture[0]}
var dispMaterial = new THREE.ShaderMaterial( {
blending: THREE.AdditiveBlending
mesh = new THREE.ParticleSystem(geometry, dispMaterial);
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
requestAnimationFrame(animate);
renderer.setViewport(0,0,16, 16);
renderer.render(setScene, processCamera, posTexture[a]);
posUniforms.posTexture.value = posTexture[a];
renderer.render(posScene, processCamera, posTexture[b])
dispUniforms.posTexture.value = posTexture[b];
renderer.setViewport(0,0,dispSize.x, dispSize.y);
renderer.render(scene, camera);