three#PlaneBufferGeometry JavaScript Examples
The following examples show how to use
three#PlaneBufferGeometry.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: PostEffectBright.js From sketch-webcam with MIT License | 6 votes |
constructor() {
// Define Geometry
const geometry = new PlaneBufferGeometry(2, 2);
// Define Material
const material = new RawShaderMaterial({
uniforms: {
minBright: {
value: 0.25
},
texture: {
value: null
}
},
vertexShader: vs,
fragmentShader: fs
});
// Create Object3D
super(geometry, material);
this.name = 'PostEffectBright';
}
Example #2
Source File: Video.js From sketch-webcam with MIT License | 6 votes |
constructor() {
// Define Geometry
const geometry = new PlaneBufferGeometry(1, 1);
// Define Material
const material = new RawShaderMaterial({
uniforms: {
resolution: {
value: store.state.resolution
},
video: {
value: null
},
imgRatio: {
value: new Vector2()
}
},
vertexShader: vs,
fragmentShader: fs
});
super(geometry, material);
this.size = new Vector3();
this.position.z = -5;
}
Example #3
Source File: PostEffectTotal.js From sketch-webcam with MIT License | 6 votes |
constructor() {
// Define Geometry
const geometry = new PlaneBufferGeometry(2, 2);
// Define Material
const material = new RawShaderMaterial({
uniforms: {
texture1: {
value: null
},
texture2: {
value: null
}
},
vertexShader: vs,
fragmentShader: fs
});
// Create Object3D
super(geometry, material);
this.name = 'PostEffectTotal';
}
Example #4
Source File: PostEffectGodray.js From sketch-webcam with MIT License | 6 votes |
constructor() {
// Define Geometry
const geometry = new PlaneBufferGeometry(2, 2);
// Define Material
const material = new RawShaderMaterial({
uniforms: {
godrayCenter: {
value: new Vector2(0.5, 0.5)
},
texture1: {
value: null
},
texture2: {
value: null
}
},
vertexShader: vs,
fragmentShader: fs
});
// Create Object3D
super(geometry, material);
this.name = 'PostEffectGodray';
}
Example #5
Source File: FireBallAura.js From sketch-webcam with MIT License | 6 votes |
constructor() {
const geometry = new PlaneBufferGeometry(6, 6, 1, 1);
const material = new RawShaderMaterial({
uniforms: {
time: {
value: 0
},
alphaShow: {
value: 0
},
alphaHide: {
value: 0
}
},
vertexShader: vs,
fragmentShader: fs,
transparent: true,
depthWrite: false
});
super(geometry, material);
}
Example #6
Source File: Video.js From sketch-webcam with MIT License | 6 votes |
constructor() {
// Define Geometry
const geometry = new PlaneBufferGeometry(1, 1);
// Define Material
const material = new RawShaderMaterial({
uniforms: {
resolution: {
value: store.state.resolution
},
video: {
value: null
},
imgRatio: {
value: new Vector2()
}
},
vertexShader: vs,
fragmentShader: fs,
depthTest: false
});
super(geometry, material);
this.size = new Vector3();
}
Example #7
Source File: VideoBack.js From sketch-webcam with MIT License | 6 votes |
constructor() {
// Define Geometry
const geometry = new PlaneBufferGeometry(1, 1);
// Define Material
const material = new RawShaderMaterial({
uniforms: {
resolution: {
value: store.state.resolution
},
video: {
value: null
},
texture: {
value: null
},
imgRatio: {
value: new Vector2()
}
},
vertexShader: vs,
fragmentShader: fs,
transparent: true
});
super(geometry, material);
this.size = new Vector3();
}
Example #8
Source File: Video.js From sketch-webcam with MIT License | 6 votes |
constructor() {
// Define Geometry
const geometry = new PlaneBufferGeometry(1, 1);
// Define Material
const material = new RawShaderMaterial({
uniforms: {
resolution: {
value: store.state.resolution
},
video: {
value: null
},
texture: {
value: null
},
imgRatio: {
value: new Vector2()
}
},
vertexShader: vs,
fragmentShader: fs,
transparent: true
});
super(geometry, material);
this.size = new Vector3();
}
Example #9
Source File: Body.js From sketch-webcam with MIT License | 6 votes |
constructor() {
// Define Geometry
const geometry = new PlaneBufferGeometry(1, 1);
// Define Material
const material = new RawShaderMaterial({
uniforms: {
resolution: {
value: store.state.resolution
},
segmentation: {
value: null
},
imgRatio: {
value: new Vector2()
}
},
vertexShader: vs,
fragmentShader: fs
});
super(geometry, material);
this.size = new Vector3();
}
Example #10
Source File: View.js From sketch-webcam with MIT License | 6 votes |
constructor() {
// Define Geometry
const geometry = new PlaneBufferGeometry(2, 2);
// Define Material
const material = new RawShaderMaterial({
uniforms: {
timeShow: {
value: 0
},
timeHide: {
value: 0
},
resolution: {
value: store.state.resolution
},
texture1: {
value: null
},
texture2: {
value: null
}
},
vertexShader: vs,
fragmentShader: fs,
transparent: true
});
// Create Object3D
super(geometry, material);
this.name = 'View';
this.isShown = false;
this.isHidden = false;
}
Example #11
Source File: PostEffectBlur.js From sketch-webcam with MIT License | 6 votes |
constructor() {
// Define Geometry
const geometry = new PlaneBufferGeometry(2, 2);
// Define Material
const material = new RawShaderMaterial({
uniforms: {
resolution: {
value: new Vector2()
},
scale: {
value: new Vector2(0.3, 0.3)
},
direction: {
value: new Vector2()
},
texture: {
value: null
}
},
vertexShader: vs,
fragmentShader: fs
});
// Create Object3D
super(geometry, material);
this.name = 'PostEffectBlur';
}
Example #12
Source File: PostEffectBloom.js From sketch-webcam with MIT License | 6 votes |
constructor() {
// Define Geometry
const geometry = new PlaneBufferGeometry(2, 2);
// Define Material
const material = new RawShaderMaterial({
uniforms: {
time: {
value: 0
},
texture1: {
value: null
},
texture2: {
value: null
}
},
vertexShader: vs,
fragmentShader: fs
});
// Create Object3D
super(geometry, material);
this.name = 'PostEffectBloom';
}
Example #13
Source File: Waterpass.js From r3f-website with MIT License | 6 votes |
WaterPass = function(dt_size) {
Pass.call(this)
if (WaterShader === undefined) console.error('THREE.WaterPass relies on THREE.WaterShader')
var shader = WaterShader
this.uniforms = UniformsUtils.clone(shader.uniforms)
if (dt_size === undefined) dt_size = 64
this.uniforms['resolution'].value = new Vector2(dt_size, dt_size)
this.material = new ShaderMaterial({
uniforms: this.uniforms,
vertexShader: shader.vertexShader,
fragmentShader: shader.fragmentShader
})
this.camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)
this.scene = new Scene()
this.quad = new Mesh(new PlaneBufferGeometry(2, 2), null)
this.quad.frustumCulled = false // Avoid getting clipped
this.scene.add(this.quad)
this.factor = 0
this.time = 0
}
Example #14
Source File: Glitchpass.js From r3f-website with MIT License | 6 votes |
GlitchPass = function(dt_size) {
Pass.call(this)
if (DigitalGlitch === undefined) console.error('THREE.GlitchPass relies on THREE.DigitalGlitch')
var shader = DigitalGlitch
this.uniforms = UniformsUtils.clone(shader.uniforms)
if (dt_size === undefined) dt_size = 64
this.uniforms['tDisp'].value = this.generateHeightmap(dt_size)
this.material = new ShaderMaterial({
uniforms: this.uniforms,
vertexShader: shader.vertexShader,
fragmentShader: shader.fragmentShader
})
this.camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)
this.scene = new Scene()
this.quad = new Mesh(new PlaneBufferGeometry(2, 2), null)
this.quad.frustumCulled = false // Avoid getting clipped
this.scene.add(this.quad)
this.factor = 0
}
Example #15
Source File: Pass.js From threejs-tutorial with MIT License | 6 votes |
// Helper for passes that need to fill the viewport with a single quad.
Pass.FullScreenQuad = (function () {
var camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);
var geometry = new PlaneBufferGeometry(2, 2);
var FullScreenQuad = function (material) {
this._mesh = new Mesh(geometry, material);
};
Object.defineProperty(FullScreenQuad.prototype, "material", {
get: function () {
return this._mesh.material;
},
set: function (value) {
this._mesh.material = value;
},
});
Object.assign(FullScreenQuad.prototype, {
render: function (renderer) {
renderer.render(this._mesh, camera);
},
});
return FullScreenQuad;
})();
Example #16
Source File: EffectComposer.js From threejs-tutorial with MIT License | 6 votes |
// Helper for passes that need to fill the viewport with a single quad.
Pass.FullScreenQuad = (function () {
var camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);
var geometry = new PlaneBufferGeometry(2, 2);
var FullScreenQuad = function (material) {
this._mesh = new Mesh(geometry, material);
};
Object.defineProperty(FullScreenQuad.prototype, "material", {
get: function () {
return this._mesh.material;
},
set: function (value) {
this._mesh.material = value;
},
});
Object.assign(FullScreenQuad.prototype, {
render: function (renderer) {
renderer.render(this._mesh, camera);
},
});
return FullScreenQuad;
})();
Example #17
Source File: index.js From map33.js with MIT License | 6 votes |
buildGeometry() {
const geometry = new PlaneBufferGeometry(
this.size,
this.size,
this.map.options.tileSegments,
this.map.options.tileSegments
)
const nPosition = Math.sqrt(geometry.attributes.position.count)
const nElevation = Math.sqrt(this.elevation.length)
const ratio = nElevation / (nPosition - 1)
let x, y
for (
// let i = nPosition;
let i = 0;
i < geometry.attributes.position.count - nPosition;
i++
) {
// if (i % nPosition === 0 || i % nPosition === nPosition - 1) continue;
if (i % nPosition === nPosition - 1) continue
x = Math.floor(i / nPosition)
y = i % nPosition
geometry.attributes.position.setZ(
i,
this.elevation[
Math.round(Math.round(x * ratio) * nElevation + y * ratio)
] * this.map.options.zScale
)
}
geometry.computeVertexNormals()
this.geometry = geometry
}
Example #18
Source File: RoughnessMipmapper.js From canvas with Apache License 2.0 | 4 votes |
RoughnessMipmapper = ( function () {
var _mipmapMaterial = _getMipmapMaterial();
var _scene = new Scene();
_scene.add( new Mesh( new PlaneBufferGeometry( 2, 2 ), _mipmapMaterial ) );
var _flatCamera = new OrthographicCamera( 0, 1, 0, 1, 0, 1 );
var _tempTarget = null;
var _renderer = null;
// constructor
var RoughnessMipmapper = function ( renderer ) {
_renderer = renderer;
_renderer.compile( _scene, _flatCamera );
};
RoughnessMipmapper.prototype = {
constructor: RoughnessMipmapper,
generateMipmaps: function ( material ) {
var { roughnessMap, normalMap } = material;
if ( roughnessMap == null || normalMap == null || ! roughnessMap.generateMipmaps ||
material.userData.roughnessUpdated ) return;
material.userData.roughnessUpdated = true;
var width = Math.max( roughnessMap.image.width, normalMap.image.width );
var height = Math.max( roughnessMap.image.height, normalMap.image.height );
if ( ! MathUtils.isPowerOfTwo( width ) || ! MathUtils.isPowerOfTwo( height ) ) return;
var oldTarget = _renderer.getRenderTarget();
var autoClear = _renderer.autoClear;
_renderer.autoClear = false;
if ( _tempTarget == null || _tempTarget.width !== width || _tempTarget.height !== height ) {
if ( _tempTarget != null ) _tempTarget.dispose();
_tempTarget = new WebGLRenderTarget( width, height, { depthBuffer: false, stencilBuffer: false } );
_tempTarget.scissorTest = true;
}
if ( width !== roughnessMap.image.width || height !== roughnessMap.image.height ) {
var newRoughnessTarget = new WebGLRenderTarget( width, height, {
minFilter: LinearMipMapLinearFilter,
depthBuffer: false,
stencilBuffer: false
} );
newRoughnessTarget.texture.generateMipmaps = true;
// Setting the render target causes the memory to be allocated.
_renderer.setRenderTarget( newRoughnessTarget );
material.roughnessMap = newRoughnessTarget.texture;
if ( material.metalnessMap == roughnessMap ) material.metalnessMap = material.roughnessMap;
if ( material.aoMap == roughnessMap ) material.aoMap = material.roughnessMap;
}
_mipmapMaterial.uniforms.roughnessMap.value = roughnessMap;
_mipmapMaterial.uniforms.normalMap.value = normalMap;
var position = new Vector2( 0, 0 );
var texelSize = _mipmapMaterial.uniforms.texelSize.value;
for ( var mip = 0; width >= 1 && height >= 1;
++ mip, width /= 2, height /= 2 ) {
// Rendering to a mip level is not allowed in webGL1. Instead we must set
// up a secondary texture to write the result to, then copy it back to the
// proper mipmap level.
texelSize.set( 1.0 / width, 1.0 / height );
if ( mip == 0 ) texelSize.set( 0.0, 0.0 );
_tempTarget.viewport.set( position.x, position.y, width, height );
_tempTarget.scissor.set( position.x, position.y, width, height );
_renderer.setRenderTarget( _tempTarget );
_renderer.render( _scene, _flatCamera );
_renderer.copyFramebufferToTexture( position, material.roughnessMap, mip );
_mipmapMaterial.uniforms.roughnessMap.value = material.roughnessMap;
}
if ( roughnessMap !== material.roughnessMap ) roughnessMap.dispose();
_renderer.setRenderTarget( oldTarget );
_renderer.autoClear = autoClear;
},
dispose: function ( ) {
_mipmapMaterial.dispose();
_scene.children[ 0 ].geometry.dispose();
if ( _tempTarget != null ) _tempTarget.dispose();
}
};
function _getMipmapMaterial() {
var shaderMaterial = new RawShaderMaterial( {
uniforms: {
roughnessMap: { value: null },
normalMap: { value: null },
texelSize: { value: new Vector2( 1, 1 ) }
},
vertexShader: `
precision mediump float;
precision mediump int;
attribute vec3 position;
attribute vec2 uv;
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = vec4( position, 1.0 );
}
`,
fragmentShader: `
precision mediump float;
precision mediump int;
varying vec2 vUv;
uniform sampler2D roughnessMap;
uniform sampler2D normalMap;
uniform vec2 texelSize;
#define ENVMAP_TYPE_CUBE_UV
vec4 envMapTexelToLinear(vec4 a){return a;}
#include <cube_uv_reflection_fragment>
float roughnessToVariance(float roughness) {
float variance = 0.0;
if (roughness >= r1) {
variance = (r0 - roughness) * (v1 - v0) / (r0 - r1) + v0;
} else if (roughness >= r4) {
variance = (r1 - roughness) * (v4 - v1) / (r1 - r4) + v1;
} else if (roughness >= r5) {
variance = (r4 - roughness) * (v5 - v4) / (r4 - r5) + v4;
} else {
float roughness2 = roughness * roughness;
variance = 1.79 * roughness2 * roughness2;
}
return variance;
}
float varianceToRoughness(float variance) {
float roughness = 0.0;
if (variance >= v1) {
roughness = (v0 - variance) * (r1 - r0) / (v0 - v1) + r0;
} else if (variance >= v4) {
roughness = (v1 - variance) * (r4 - r1) / (v1 - v4) + r1;
} else if (variance >= v5) {
roughness = (v4 - variance) * (r5 - r4) / (v4 - v5) + r4;
} else {
roughness = pow(0.559 * variance, 0.25);// 0.559 = 1.0 / 1.79
}
return roughness;
}
void main() {
gl_FragColor = texture2D(roughnessMap, vUv, -1.0);
if (texelSize.x == 0.0) return;
float roughness = gl_FragColor.g;
float variance = roughnessToVariance(roughness);
vec3 avgNormal;
for (float x = -1.0; x < 2.0; x += 2.0) {
for (float y = -1.0; y < 2.0; y += 2.0) {
vec2 uv = vUv + vec2(x, y) * 0.25 * texelSize;
avgNormal += normalize(texture2D(normalMap, uv, -1.0).xyz - 0.5);
}
}
variance += 1.0 - 0.25 * length(avgNormal);
gl_FragColor.g = varianceToRoughness(variance);
}
`,
blending: NoBlending,
depthTest: false,
depthWrite: false
} );
shaderMaterial.type = 'RoughnessMipmapper';
return shaderMaterial;
}
return RoughnessMipmapper;
} )()
Example #19
Source File: index.js From map33.js with MIT License | 4 votes |
function InfiniteGridHelper(size1, size2, color, distance) {
color = color || new Color("white");
size1 = size1 || 10;
size2 = size2 || 100;
distance = distance || 8000;
const geometry = new PlaneBufferGeometry(2, 2, 1, 1);
const material = new ShaderMaterial({
side: DoubleSide,
uniforms: {
uSize1: {
value: size1,
},
uSize2: {
value: size2,
},
uColor: {
value: color,
},
uDistance: {
value: distance,
},
},
transparent: true,
vertexShader: `
varying vec3 worldPosition;
uniform float uDistance;
void main() {
vec3 pos = position.xyz * uDistance;
pos.xy += cameraPosition.xy;
worldPosition = pos;
gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);
}
`,
fragmentShader: `
varying vec3 worldPosition;
uniform float uSize1;
uniform float uSize2;
uniform vec3 uColor;
uniform float uDistance;
float getGrid(float size) {
vec2 r = worldPosition.xy / size;
vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);
float line = min(grid.x, grid.y);
return 1.0 - min(line, 1.0);
}
void main() {
float d = 1.0 - min(distance(cameraPosition.xz, worldPosition.xz) / uDistance, 1.0);
float g1 = getGrid(uSize1);
float g2 = getGrid(uSize2);
gl_FragColor = vec4(uColor.rgb, mix(g2, g1, g1) * pow(d, 3.0));
gl_FragColor.a = mix(0.5 * gl_FragColor.a, gl_FragColor.a, g2);
if ( gl_FragColor.a <= 0.0 ) discard;
}
`,
extensions: {
derivatives: true,
},
});
Mesh.call(this, geometry, material);
this.up.set(0, 0, 1);
this.frustumCulled = false;
}