mirror of
https://github.com/wahyd4/three.js.git
synced 2026-08-09 04:56:01 +10:00
Merge branch 'master' into dev
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
* based on http://code.google.com/p/away3d/source/browse/trunk/fp10/Away3DLite/src/away3dlite/primitives/Torus.as?r=2888
|
||||
*/
|
||||
|
||||
THREE.TorusGeometry = function ( radius, tube, segmentsR, segmentsT ) {
|
||||
THREE.TorusGeometry = function ( radius, tube, segmentsR, segmentsT, arc ) {
|
||||
|
||||
THREE.Geometry.call( this );
|
||||
|
||||
@@ -13,14 +13,15 @@ THREE.TorusGeometry = function ( radius, tube, segmentsR, segmentsT ) {
|
||||
this.tube = tube || 40;
|
||||
this.segmentsR = segmentsR || 8;
|
||||
this.segmentsT = segmentsT || 6;
|
||||
this.arc = arc || (2 * Math.PI);
|
||||
|
||||
var temp_uv = [];
|
||||
|
||||
for ( var j = 0; j <= this.segmentsR; ++j ) {
|
||||
|
||||
for ( var i = 0; i <= this.segmentsT; ++i ) {
|
||||
|
||||
var u = i / this.segmentsT * 2 * Math.PI;
|
||||
|
||||
var u = i / this.segmentsT * this.arc;
|
||||
var v = j / this.segmentsR * 2 * Math.PI;
|
||||
var x = (this.radius + this.tube*Math.cos(v))*Math.cos(u);
|
||||
var y = (this.radius + this.tube*Math.cos(v))*Math.sin(u);
|
||||
|
||||
@@ -7,18 +7,9 @@
|
||||
|
||||
THREE.WebGLRenderer = function ( parameters ) {
|
||||
|
||||
// Currently you can use just up to 4 directional / point lights total.
|
||||
// Chrome barfs on shader linking when there are more than 4 lights :(
|
||||
|
||||
// The problem comes from shader using too many varying vectors.
|
||||
|
||||
// This is not GPU limitation as the same shader works ok in Firefox
|
||||
// and Chrome with "--use-gl=desktop" flag.
|
||||
|
||||
// Difference comes from Chrome on Windows using by default ANGLE,
|
||||
// thus going DirectX9 route (while FF uses OpenGL).
|
||||
|
||||
// See http://code.google.com/p/chromium/issues/detail?id=63491
|
||||
// By default you can use just up to 4 directional / point lights total.
|
||||
// ANGLE implementation (Chrome/Firefox on Windows) is bound to
|
||||
// 10 varying vectors due to DirectX9 limitation.
|
||||
|
||||
var _this = this,
|
||||
_gl, _programs = [],
|
||||
@@ -79,6 +70,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
||||
_antialias = parameters.antialias !== undefined ? parameters.antialias : false,
|
||||
_clearColor = parameters.clearColor !== undefined ? new THREE.Color( parameters.clearColor ) : new THREE.Color( 0x000000 ),
|
||||
_clearAlpha = parameters.clearAlpha !== undefined ? parameters.clearAlpha : 0;
|
||||
_maxLights = parameters.maxLights !== undefined ? parameters.maxLights : 4;
|
||||
|
||||
this.data = {
|
||||
|
||||
@@ -2480,7 +2472,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
||||
// heuristics to create shader parameters according to lights in the scene
|
||||
// (not to blow over maxLights budget)
|
||||
|
||||
maxLightCount = allocateLights( lights, 4 );
|
||||
maxLightCount = allocateLights( lights );
|
||||
|
||||
maxShadows = allocateShadows( lights );
|
||||
|
||||
@@ -5345,7 +5337,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
||||
|
||||
};
|
||||
|
||||
function allocateLights( lights, maxLights ) {
|
||||
function allocateLights( lights ) {
|
||||
|
||||
var l, ll, light, dirLights, pointLights, maxDirLights, maxPointLights;
|
||||
dirLights = pointLights = maxDirLights = maxPointLights = 0;
|
||||
@@ -5360,15 +5352,15 @@ THREE.WebGLRenderer = function ( parameters ) {
|
||||
|
||||
}
|
||||
|
||||
if ( ( pointLights + dirLights ) <= maxLights ) {
|
||||
if ( ( pointLights + dirLights ) <= _maxLights ) {
|
||||
|
||||
maxDirLights = dirLights;
|
||||
maxPointLights = pointLights;
|
||||
|
||||
} else {
|
||||
|
||||
maxDirLights = Math.ceil( maxLights * dirLights / ( pointLights + dirLights ) );
|
||||
maxPointLights = maxLights - maxDirLights;
|
||||
maxDirLights = Math.ceil( _maxLights * dirLights / ( pointLights + dirLights ) );
|
||||
maxPointLights = _maxLights - maxDirLights;
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user