提交 ae16286d 编写于 作者: M Mr.doob

Updated builds.

上级 8ea664d7
...@@ -32860,27 +32860,28 @@ THREE.LensFlare.prototype = Object.create( THREE.Object3D.prototype ); ...@@ -32860,27 +32860,28 @@ THREE.LensFlare.prototype = Object.create( THREE.Object3D.prototype );
THREE.LensFlare.prototype.add = function ( texture, size, distance, blending, color, opacity ) { THREE.LensFlare.prototype.add = function ( texture, size, distance, blending, color, opacity ) {
if( size === undefined ) size = - 1; if ( size === undefined ) size = - 1;
if( distance === undefined ) distance = 0; if ( distance === undefined ) distance = 0;
if( opacity === undefined ) opacity = 1; if ( opacity === undefined ) opacity = 1;
if( color === undefined ) color = new THREE.Color( 0xffffff ); if ( color === undefined ) color = new THREE.Color( 0xffffff );
if( blending === undefined ) blending = THREE.NormalBlending; if ( blending === undefined ) blending = THREE.NormalBlending;
distance = Math.min( distance, Math.max( 0, distance ) ); distance = Math.min( distance, Math.max( 0, distance ) );
this.lensFlares.push( { texture: texture, // THREE.Texture this.lensFlares.push( {
size: size, // size in pixels (-1 = use texture.width) texture: texture, // THREE.Texture
distance: distance, // distance (0-1) from light source (0=at light source) size: size, // size in pixels (-1 = use texture.width)
x: 0, y: 0, z: 0, // screen position (-1 => 1) z = 0 is ontop z = 1 is back distance: distance, // distance (0-1) from light source (0=at light source)
scale: 1, // scale x: 0, y: 0, z: 0, // screen position (-1 => 1) z = 0 is ontop z = 1 is back
rotation: 1, // rotation scale: 1, // scale
opacity: opacity, // opacity rotation: 1, // rotation
color: color, // color opacity: opacity, // opacity
blending: blending } ); // blending color: color, // color
blending: blending // blending
} );
}; };
/* /*
* Update lens flares update positions on all flares based on the screen position * Update lens flares update positions on all flares based on the screen position
* Set myLensFlare.customUpdateCallback to alter the flares in your project specific way. * Set myLensFlare.customUpdateCallback to alter the flares in your project specific way.
...@@ -32908,17 +32909,6 @@ THREE.LensFlare.prototype.updateLensFlares = function () { ...@@ -32908,17 +32909,6 @@ THREE.LensFlare.prototype.updateLensFlares = function () {
}; };
// File:src/extras/objects/MorphBlendMesh.js // File:src/extras/objects/MorphBlendMesh.js
/** /**
...@@ -33238,9 +33228,15 @@ THREE.MorphBlendMesh.prototype.update = function ( delta ) { ...@@ -33238,9 +33228,15 @@ THREE.MorphBlendMesh.prototype.update = function ( delta ) {
THREE.LensFlarePlugin = function () { THREE.LensFlarePlugin = function () {
var _gl, _renderer, _precision;
var flares = []; var flares = [];
var _gl, _renderer, _precision, _lensFlare = {}; var vertexBuffer, elementBuffer;
var program, attributes, uniforms;
var hasVertexTexture;
var tempTexture, occlusionTexture;
this.init = function ( renderer ) { this.init = function ( renderer ) {
...@@ -33249,82 +33245,75 @@ THREE.LensFlarePlugin = function () { ...@@ -33249,82 +33245,75 @@ THREE.LensFlarePlugin = function () {
_precision = renderer.getPrecision(); _precision = renderer.getPrecision();
_lensFlare.vertices = new Float32Array( 8 + 8 ); var vertices = new Float32Array( [
_lensFlare.faces = new Uint16Array( 6 ); -1, -1, 0, 0,
1, -1, 1, 0,
var i = 0; 1, 1, 1, 1,
_lensFlare.vertices[ i ++ ] = - 1; _lensFlare.vertices[ i ++ ] = - 1; // vertex -1, 1, 0, 1
_lensFlare.vertices[ i ++ ] = 0; _lensFlare.vertices[ i ++ ] = 0; // uv... etc. ] );
_lensFlare.vertices[ i ++ ] = 1; _lensFlare.vertices[ i ++ ] = - 1;
_lensFlare.vertices[ i ++ ] = 1; _lensFlare.vertices[ i ++ ] = 0;
_lensFlare.vertices[ i ++ ] = 1; _lensFlare.vertices[ i ++ ] = 1;
_lensFlare.vertices[ i ++ ] = 1; _lensFlare.vertices[ i ++ ] = 1;
_lensFlare.vertices[ i ++ ] = - 1; _lensFlare.vertices[ i ++ ] = 1;
_lensFlare.vertices[ i ++ ] = 0; _lensFlare.vertices[ i ++ ] = 1;
i = 0; var faces = new Uint16Array( [
_lensFlare.faces[ i ++ ] = 0; _lensFlare.faces[ i ++ ] = 1; _lensFlare.faces[ i ++ ] = 2; 0, 1, 2,
_lensFlare.faces[ i ++ ] = 0; _lensFlare.faces[ i ++ ] = 2; _lensFlare.faces[ i ++ ] = 3; 0, 2, 3
] );
// buffers // buffers
_lensFlare.vertexBuffer = _gl.createBuffer(); vertexBuffer = _gl.createBuffer();
_lensFlare.elementBuffer = _gl.createBuffer(); elementBuffer = _gl.createBuffer();
_gl.bindBuffer( _gl.ARRAY_BUFFER, _lensFlare.vertexBuffer ); _gl.bindBuffer( _gl.ARRAY_BUFFER, vertexBuffer );
_gl.bufferData( _gl.ARRAY_BUFFER, _lensFlare.vertices, _gl.STATIC_DRAW ); _gl.bufferData( _gl.ARRAY_BUFFER, vertices, _gl.STATIC_DRAW );
_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, _lensFlare.elementBuffer ); _gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, elementBuffer );
_gl.bufferData( _gl.ELEMENT_ARRAY_BUFFER, _lensFlare.faces, _gl.STATIC_DRAW ); _gl.bufferData( _gl.ELEMENT_ARRAY_BUFFER, faces, _gl.STATIC_DRAW );
// textures // textures
_lensFlare.tempTexture = _gl.createTexture(); tempTexture = _gl.createTexture();
_lensFlare.occlusionTexture = _gl.createTexture(); occlusionTexture = _gl.createTexture();
_gl.bindTexture( _gl.TEXTURE_2D, _lensFlare.tempTexture ); _gl.bindTexture( _gl.TEXTURE_2D, tempTexture );
_gl.texImage2D( _gl.TEXTURE_2D, 0, _gl.RGB, 16, 16, 0, _gl.RGB, _gl.UNSIGNED_BYTE, null ); _gl.texImage2D( _gl.TEXTURE_2D, 0, _gl.RGB, 16, 16, 0, _gl.RGB, _gl.UNSIGNED_BYTE, null );
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE ); _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE ); _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MAG_FILTER, _gl.NEAREST ); _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MAG_FILTER, _gl.NEAREST );
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MIN_FILTER, _gl.NEAREST ); _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MIN_FILTER, _gl.NEAREST );
_gl.bindTexture( _gl.TEXTURE_2D, _lensFlare.occlusionTexture ); _gl.bindTexture( _gl.TEXTURE_2D, occlusionTexture );
_gl.texImage2D( _gl.TEXTURE_2D, 0, _gl.RGBA, 16, 16, 0, _gl.RGBA, _gl.UNSIGNED_BYTE, null ); _gl.texImage2D( _gl.TEXTURE_2D, 0, _gl.RGBA, 16, 16, 0, _gl.RGBA, _gl.UNSIGNED_BYTE, null );
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE ); _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE ); _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MAG_FILTER, _gl.NEAREST ); _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MAG_FILTER, _gl.NEAREST );
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MIN_FILTER, _gl.NEAREST ); _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MIN_FILTER, _gl.NEAREST );
if ( _gl.getParameter( _gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS ) <= 0 ) { hasVertexTexture = _gl.getParameter( _gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS ) > 0;
if ( hasVertexTexture ) {
_lensFlare.hasVertexTexture = false; program = createProgram( THREE.ShaderFlares[ "lensFlare" ], _precision );
_lensFlare.program = createProgram( THREE.ShaderFlares[ "lensFlare" ], _precision );
} else { } else {
_lensFlare.hasVertexTexture = true; program = createProgram( THREE.ShaderFlares[ "lensFlareVertexTexture" ], _precision );
_lensFlare.program = createProgram( THREE.ShaderFlares[ "lensFlareVertexTexture" ], _precision );
} }
_lensFlare.attributes = {}; attributes = {
_lensFlare.uniforms = {}; vertex: _gl.getAttribLocation ( program, "position" ),
uv: _gl.getAttribLocation ( program, "uv" )
_lensFlare.attributes.vertex = _gl.getAttribLocation ( _lensFlare.program, "position" ); }
_lensFlare.attributes.uv = _gl.getAttribLocation ( _lensFlare.program, "uv" );
_lensFlare.uniforms.renderType = _gl.getUniformLocation( _lensFlare.program, "renderType" ); uniforms = {
_lensFlare.uniforms.map = _gl.getUniformLocation( _lensFlare.program, "map" ); renderType: _gl.getUniformLocation( program, "renderType" ),
_lensFlare.uniforms.occlusionMap = _gl.getUniformLocation( _lensFlare.program, "occlusionMap" ); map: _gl.getUniformLocation( program, "map" ),
_lensFlare.uniforms.opacity = _gl.getUniformLocation( _lensFlare.program, "opacity" ); occlusionMap: _gl.getUniformLocation( program, "occlusionMap" ),
_lensFlare.uniforms.color = _gl.getUniformLocation( _lensFlare.program, "color" ); opacity: _gl.getUniformLocation( program, "opacity" ),
_lensFlare.uniforms.scale = _gl.getUniformLocation( _lensFlare.program, "scale" ); color: _gl.getUniformLocation( program, "color" ),
_lensFlare.uniforms.rotation = _gl.getUniformLocation( _lensFlare.program, "rotation" ); scale: _gl.getUniformLocation( program, "scale" ),
_lensFlare.uniforms.screenPosition = _gl.getUniformLocation( _lensFlare.program, "screenPosition" ); rotation: _gl.getUniformLocation( program, "rotation" ),
screenPosition: _gl.getUniformLocation( program, "screenPosition" )
};
}; };
...@@ -33333,9 +33322,6 @@ THREE.LensFlarePlugin = function () { ...@@ -33333,9 +33322,6 @@ THREE.LensFlarePlugin = function () {
* Render lens flares * Render lens flares
* Method: renders 16x16 0xff00ff-colored points scattered over the light source area, * Method: renders 16x16 0xff00ff-colored points scattered over the light source area,
* reads these back and calculates occlusion. * reads these back and calculates occlusion.
* Then _lensFlare.update_lensFlares() is called to re-position and
* update transparency of flares. Then they are rendered.
*
*/ */
this.render = function ( scene, camera, viewportWidth, viewportHeight ) { this.render = function ( scene, camera, viewportWidth, viewportHeight ) {
...@@ -33366,15 +33352,10 @@ THREE.LensFlarePlugin = function () { ...@@ -33366,15 +33352,10 @@ THREE.LensFlarePlugin = function () {
var screenPosition = new THREE.Vector3( 1, 1, 0 ), var screenPosition = new THREE.Vector3( 1, 1, 0 ),
screenPositionPixels = new THREE.Vector2( 1, 1 ); screenPositionPixels = new THREE.Vector2( 1, 1 );
var uniforms = _lensFlare.uniforms, _gl.useProgram( program );
attributes = _lensFlare.attributes;
// set _lensFlare program and reset blending
_gl.useProgram( _lensFlare.program );
_gl.enableVertexAttribArray( _lensFlare.attributes.vertex ); _gl.enableVertexAttribArray( attributes.vertex );
_gl.enableVertexAttribArray( _lensFlare.attributes.uv ); _gl.enableVertexAttribArray( attributes.uv );
// loop through all lens flares to update their occlusion and positions // loop through all lens flares to update their occlusion and positions
// setup gl and common used attribs/unforms // setup gl and common used attribs/unforms
...@@ -33382,11 +33363,11 @@ THREE.LensFlarePlugin = function () { ...@@ -33382,11 +33363,11 @@ THREE.LensFlarePlugin = function () {
_gl.uniform1i( uniforms.occlusionMap, 0 ); _gl.uniform1i( uniforms.occlusionMap, 0 );
_gl.uniform1i( uniforms.map, 1 ); _gl.uniform1i( uniforms.map, 1 );
_gl.bindBuffer( _gl.ARRAY_BUFFER, _lensFlare.vertexBuffer ); _gl.bindBuffer( _gl.ARRAY_BUFFER, vertexBuffer );
_gl.vertexAttribPointer( attributes.vertex, 2, _gl.FLOAT, false, 2 * 8, 0 ); _gl.vertexAttribPointer( attributes.vertex, 2, _gl.FLOAT, false, 2 * 8, 0 );
_gl.vertexAttribPointer( attributes.uv, 2, _gl.FLOAT, false, 2 * 8, 8 ); _gl.vertexAttribPointer( attributes.uv, 2, _gl.FLOAT, false, 2 * 8, 8 );
_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, _lensFlare.elementBuffer ); _gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, elementBuffer );
_gl.disable( _gl.CULL_FACE ); _gl.disable( _gl.CULL_FACE );
_gl.depthMask( false ); _gl.depthMask( false );
...@@ -33414,7 +33395,7 @@ THREE.LensFlarePlugin = function () { ...@@ -33414,7 +33395,7 @@ THREE.LensFlarePlugin = function () {
// screen cull // screen cull
if ( _lensFlare.hasVertexTexture || ( if ( hasVertexTexture || (
screenPositionPixels.x > 0 && screenPositionPixels.x > 0 &&
screenPositionPixels.x < viewportWidth && screenPositionPixels.x < viewportWidth &&
screenPositionPixels.y > 0 && screenPositionPixels.y > 0 &&
...@@ -33423,7 +33404,7 @@ THREE.LensFlarePlugin = function () { ...@@ -33423,7 +33404,7 @@ THREE.LensFlarePlugin = function () {
// save current RGB to temp texture // save current RGB to temp texture
_gl.activeTexture( _gl.TEXTURE1 ); _gl.activeTexture( _gl.TEXTURE1 );
_gl.bindTexture( _gl.TEXTURE_2D, _lensFlare.tempTexture ); _gl.bindTexture( _gl.TEXTURE_2D, tempTexture );
_gl.copyTexImage2D( _gl.TEXTURE_2D, 0, _gl.RGB, screenPositionPixels.x - 8, screenPositionPixels.y - 8, 16, 16, 0 ); _gl.copyTexImage2D( _gl.TEXTURE_2D, 0, _gl.RGB, screenPositionPixels.x - 8, screenPositionPixels.y - 8, 16, 16, 0 );
...@@ -33442,7 +33423,7 @@ THREE.LensFlarePlugin = function () { ...@@ -33442,7 +33423,7 @@ THREE.LensFlarePlugin = function () {
// copy result to occlusionMap // copy result to occlusionMap
_gl.activeTexture( _gl.TEXTURE0 ); _gl.activeTexture( _gl.TEXTURE0 );
_gl.bindTexture( _gl.TEXTURE_2D, _lensFlare.occlusionTexture ); _gl.bindTexture( _gl.TEXTURE_2D, occlusionTexture );
_gl.copyTexImage2D( _gl.TEXTURE_2D, 0, _gl.RGBA, screenPositionPixels.x - 8, screenPositionPixels.y - 8, 16, 16, 0 ); _gl.copyTexImage2D( _gl.TEXTURE_2D, 0, _gl.RGBA, screenPositionPixels.x - 8, screenPositionPixels.y - 8, 16, 16, 0 );
...@@ -33452,7 +33433,7 @@ THREE.LensFlarePlugin = function () { ...@@ -33452,7 +33433,7 @@ THREE.LensFlarePlugin = function () {
_gl.disable( _gl.DEPTH_TEST ); _gl.disable( _gl.DEPTH_TEST );
_gl.activeTexture( _gl.TEXTURE1 ); _gl.activeTexture( _gl.TEXTURE1 );
_gl.bindTexture( _gl.TEXTURE_2D, _lensFlare.tempTexture ); _gl.bindTexture( _gl.TEXTURE_2D, tempTexture );
_gl.drawElements( _gl.TRIANGLES, 6, _gl.UNSIGNED_SHORT, 0 ); _gl.drawElements( _gl.TRIANGLES, 6, _gl.UNSIGNED_SHORT, 0 );
...@@ -34068,7 +34049,7 @@ THREE.SpritePlugin = function () { ...@@ -34068,7 +34049,7 @@ THREE.SpritePlugin = function () {
var sprites = []; var sprites = [];
var vertices, faces, vertexBuffer, elementBuffer; var vertexBuffer, elementBuffer;
var program, attributes, uniforms; var program, attributes, uniforms;
this.init = function ( renderer ) { this.init = function ( renderer ) {
...@@ -34076,14 +34057,14 @@ THREE.SpritePlugin = function () { ...@@ -34076,14 +34057,14 @@ THREE.SpritePlugin = function () {
_gl = renderer.context; _gl = renderer.context;
_renderer = renderer; _renderer = renderer;
vertices = new Float32Array( [ var vertices = new Float32Array( [
- 0.5, - 0.5, 0, 0, - 0.5, - 0.5, 0, 0,
0.5, - 0.5, 1, 0, 0.5, - 0.5, 1, 0,
0.5, 0.5, 1, 1, 0.5, 0.5, 1, 1,
- 0.5, 0.5, 0, 1 - 0.5, 0.5, 0, 1
] ); ] );
faces = new Uint16Array( [ var faces = new Uint16Array( [
0, 1, 2, 0, 1, 2,
0, 2, 3 0, 2, 3
] ); ] );
...@@ -34456,10 +34437,33 @@ THREE.DepthPassPlugin = function () { ...@@ -34456,10 +34437,33 @@ THREE.DepthPassPlugin = function () {
var depthShader = THREE.ShaderLib[ "depthRGBA" ]; var depthShader = THREE.ShaderLib[ "depthRGBA" ];
var depthUniforms = THREE.UniformsUtils.clone( depthShader.uniforms ); var depthUniforms = THREE.UniformsUtils.clone( depthShader.uniforms );
_depthMaterial = new THREE.ShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms } ); _depthMaterial = new THREE.ShaderMaterial( {
_depthMaterialMorph = new THREE.ShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms, morphTargets: true } ); fragmentShader: depthShader.fragmentShader,
_depthMaterialSkin = new THREE.ShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms, skinning: true } ); vertexShader: depthShader.vertexShader,
_depthMaterialMorphSkin = new THREE.ShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms, morphTargets: true, skinning: true } ); uniforms: depthUniforms
} );
_depthMaterialMorph = new THREE.ShaderMaterial( {
fragmentShader: depthShader.fragmentShader,
vertexShader: depthShader.vertexShader,
uniforms: depthUniforms,
morphTargets: true
} );
_depthMaterialSkin = new THREE.ShaderMaterial( {
fragmentShader: depthShader.fragmentShader,
vertexShader: depthShader.vertexShader,
uniforms: depthUniforms,
skinning: true
} );
_depthMaterialMorphSkin = new THREE.ShaderMaterial( {
fragmentShader: depthShader.fragmentShader,
vertexShader: depthShader.vertexShader,
uniforms: depthUniforms,
morphTargets: true,
skinning: true
} );
_depthMaterial._shadowPass = true; _depthMaterial._shadowPass = true;
_depthMaterialMorph._shadowPass = true; _depthMaterialMorph._shadowPass = true;
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册