Forráskód Böngészése

Merge branch 'dev', remote branch 'origin' into documentation

OpenShift guest 12 éve
szülő
commit
4746af508d
2 módosított fájl, 190 hozzáadás és 184 törlés
  1. 6 0
      src/renderers/WebGLRenderer2.js
  2. 184 184
      src/renderers/webgl/ShaderBuilder.js

+ 6 - 0
src/renderers/WebGLRenderer2.js

@@ -162,8 +162,14 @@ THREE.WebGLRenderer = THREE.WebGLRenderer2 = function ( parameters ) {
 	this.setViewport = renderer.setViewport;
 	this.setScissor = renderer.setScissor;
 	this.enableScissorTest = renderer.enableScissorTest;
+	this.setDepthWrite = renderer.setDepthWrite;
 	this.setDepthTest = renderer.setDepthTest;
 	this.setRenderTarget = renderer.setRenderTarget;
+	this.setBlending = renderer.setBlending;
+	this.setTexture = renderer.setTexture;
+	this.setMaterialFaces = renderer.setMaterialFaces;
+	this.setFaceCulling = renderer.setFaceCulling;
+	
 
 	// Clearing
 

+ 184 - 184
src/renderers/webgl/ShaderBuilder.js

@@ -8,303 +8,303 @@ THREE.WebGLRenderer2.ShaderBuilder = function(renderer,info){
 
 THREE.WebGLRenderer2.ShaderBuilder.prototype.buildProgram = function ( shaderID, fragmentShader, vertexShader, uniforms, attributes, defines, parameters ) {
 
-		var renderer = this.renderer;
-		var p, pl, d, program, code;
-		var chunks = [];
+	var renderer = this.renderer;
+	var p, pl, d, program, code;
+	var chunks = [];
 
-		// Generate code
+	// Generate code
 
-		if ( shaderID ) {
+	if ( shaderID ) {
 
-			chunks.push( shaderID );
+		chunks.push( shaderID );
 
-		} else {
+	} else {
 
-			chunks.push( fragmentShader );
-			chunks.push( vertexShader );
+		chunks.push( fragmentShader );
+		chunks.push( vertexShader );
 
-		}
-
-		for ( d in defines ) {
+	}
 
-			chunks.push( d );
-			chunks.push( defines[ d ] );
+	for ( d in defines ) {
 
-		}
+		chunks.push( d );
+		chunks.push( defines[ d ] );
 
-		for ( p in parameters ) {
+	}
 
-			chunks.push( p );
-			chunks.push( parameters[ p ] );
+	for ( p in parameters ) {
 
-		}
+		chunks.push( p );
+		chunks.push( parameters[ p ] );
 
-		code = chunks.join();
+	}
 
-		// Check if code has been already compiled
+	code = chunks.join();
 
-		for ( p = 0, pl = this.programs.length; p < pl; p ++ ) {
+	// Check if code has been already compiled
 
-			var programInfo = this.programs[ p ];
+	for ( p = 0, pl = this.programs.length; p < pl; p ++ ) {
 
-			if ( programInfo.code === code ) {
+		var programInfo = this.programs[ p ];
 
-				//console.log( "Code already compiled." /*: \n\n" + code*/ );
+		if ( programInfo.code === code ) {
 
-				programInfo.usedTimes ++;
+			//console.log( "Code already compiled." /*: \n\n" + code*/ );
 
-				return programInfo.program;
+			programInfo.usedTimes ++;
 
-			}
+			return programInfo.program;
 
 		}
 
-		var shadowMapTypeDefine = "SHADOWMAP_TYPE_BASIC";
+	}
 
-		if ( parameters.shadowMapType === THREE.PCFShadowMap ) {
+	var shadowMapTypeDefine = "SHADOWMAP_TYPE_BASIC";
 
-			shadowMapTypeDefine = "SHADOWMAP_TYPE_PCF";
+	if ( parameters.shadowMapType === THREE.PCFShadowMap ) {
 
-		} else if ( parameters.shadowMapType === THREE.PCFSoftShadowMap ) {
+		shadowMapTypeDefine = "SHADOWMAP_TYPE_PCF";
 
-			shadowMapTypeDefine = "SHADOWMAP_TYPE_PCF_SOFT";
+	} else if ( parameters.shadowMapType === THREE.PCFSoftShadowMap ) {
 
-		}
+		shadowMapTypeDefine = "SHADOWMAP_TYPE_PCF_SOFT";
 
-		//console.log( "building new program " );
+	}
 
-		//
+	//console.log( "building new program " );
 
-		var customDefines = this.generateDefines( defines );
+	//
 
-		//
+	var customDefines = this.generateDefines( defines );
 
-		var prefix_vertex = [
+	//
 
-			"precision " + renderer.precision + " float;",
+	var prefix_vertex = [
 
-			customDefines,
+		"precision " + renderer.precision + " float;",
 
-			renderer.supportsVertexTextures ? "#define VERTEX_TEXTURES" : "",
+		customDefines,
 
-			parameters.gammaInput ? "#define GAMMA_INPUT" : "",
-			parameters.gammaOutput ? "#define GAMMA_OUTPUT" : "",
-			parameters.physicallyBasedShading ? "#define PHYSICALLY_BASED_SHADING" : "",
+		renderer.supportsVertexTextures ? "#define VERTEX_TEXTURES" : "",
 
-			"#define MAX_DIR_LIGHTS " + parameters.maxDirLights,
-			"#define MAX_POINT_LIGHTS " + parameters.maxPointLights,
-			"#define MAX_SPOT_LIGHTS " + parameters.maxSpotLights,
-			"#define MAX_HEMI_LIGHTS " + parameters.maxHemiLights,
+		parameters.gammaInput ? "#define GAMMA_INPUT" : "",
+		parameters.gammaOutput ? "#define GAMMA_OUTPUT" : "",
+		parameters.physicallyBasedShading ? "#define PHYSICALLY_BASED_SHADING" : "",
 
-			"#define MAX_SHADOWS " + parameters.maxShadows,
+		"#define MAX_DIR_LIGHTS " + parameters.maxDirLights,
+		"#define MAX_POINT_LIGHTS " + parameters.maxPointLights,
+		"#define MAX_SPOT_LIGHTS " + parameters.maxSpotLights,
+		"#define MAX_HEMI_LIGHTS " + parameters.maxHemiLights,
 
-			"#define MAX_BONES " + parameters.maxBones,
+		"#define MAX_SHADOWS " + parameters.maxShadows,
 
-			parameters.map ? "#define USE_MAP" : "",
-			parameters.envMap ? "#define USE_ENVMAP" : "",
-			parameters.lightMap ? "#define USE_LIGHTMAP" : "",
-			parameters.bumpMap ? "#define USE_BUMPMAP" : "",
-			parameters.normalMap ? "#define USE_NORMALMAP" : "",
-			parameters.specularMap ? "#define USE_SPECULARMAP" : "",
-			parameters.vertexColors ? "#define USE_COLOR" : "",
+		"#define MAX_BONES " + parameters.maxBones,
 
-			parameters.skinning ? "#define USE_SKINNING" : "",
-			parameters.useVertexTexture ? "#define BONE_TEXTURE" : "",
-			parameters.boneTextureWidth ? "#define N_BONE_PIXEL_X " + parameters.boneTextureWidth.toFixed( 1 ) : "",
-			parameters.boneTextureHeight ? "#define N_BONE_PIXEL_Y " + parameters.boneTextureHeight.toFixed( 1 ) : "",
+		parameters.map ? "#define USE_MAP" : "",
+		parameters.envMap ? "#define USE_ENVMAP" : "",
+		parameters.lightMap ? "#define USE_LIGHTMAP" : "",
+		parameters.bumpMap ? "#define USE_BUMPMAP" : "",
+		parameters.normalMap ? "#define USE_NORMALMAP" : "",
+		parameters.specularMap ? "#define USE_SPECULARMAP" : "",
+		parameters.vertexColors ? "#define USE_COLOR" : "",
 
-			parameters.morphTargets ? "#define USE_MORPHTARGETS" : "",
-			parameters.morphNormals ? "#define USE_MORPHNORMALS" : "",
-			parameters.perPixel ? "#define PHONG_PER_PIXEL" : "",
-			parameters.wrapAround ? "#define WRAP_AROUND" : "",
-			parameters.doubleSided ? "#define DOUBLE_SIDED" : "",
-			parameters.flipSided ? "#define FLIP_SIDED" : "",
+		parameters.skinning ? "#define USE_SKINNING" : "",
+		parameters.useVertexTexture ? "#define BONE_TEXTURE" : "",
+		parameters.boneTextureWidth ? "#define N_BONE_PIXEL_X " + parameters.boneTextureWidth.toFixed( 1 ) : "",
+		parameters.boneTextureHeight ? "#define N_BONE_PIXEL_Y " + parameters.boneTextureHeight.toFixed( 1 ) : "",
 
-			parameters.shadowMapEnabled ? "#define USE_SHADOWMAP" : "",
-			parameters.shadowMapEnabled ? "#define " + shadowMapTypeDefine : "",
-			parameters.shadowMapDebug ? "#define SHADOWMAP_DEBUG" : "",
-			parameters.shadowMapCascade ? "#define SHADOWMAP_CASCADE" : "",
+		parameters.morphTargets ? "#define USE_MORPHTARGETS" : "",
+		parameters.morphNormals ? "#define USE_MORPHNORMALS" : "",
+		parameters.perPixel ? "#define PHONG_PER_PIXEL" : "",
+		parameters.wrapAround ? "#define WRAP_AROUND" : "",
+		parameters.doubleSided ? "#define DOUBLE_SIDED" : "",
+		parameters.flipSided ? "#define FLIP_SIDED" : "",
 
-			parameters.sizeAttenuation ? "#define USE_SIZEATTENUATION" : "",
+		parameters.shadowMapEnabled ? "#define USE_SHADOWMAP" : "",
+		parameters.shadowMapEnabled ? "#define " + shadowMapTypeDefine : "",
+		parameters.shadowMapDebug ? "#define SHADOWMAP_DEBUG" : "",
+		parameters.shadowMapCascade ? "#define SHADOWMAP_CASCADE" : "",
 
-			"uniform mat4 modelMatrix;",
-			"uniform mat4 modelViewMatrix;",
-			"uniform mat4 projectionMatrix;",
-			"uniform mat4 viewMatrix;",
-			"uniform mat3 normalMatrix;",
-			"uniform vec3 cameraPosition;",
+		parameters.sizeAttenuation ? "#define USE_SIZEATTENUATION" : "",
 
-			"attribute vec3 position;",
-			"attribute vec3 normal;",
-			"attribute vec2 uv;",
-			"attribute vec2 uv2;",
+		"uniform mat4 modelMatrix;",
+		"uniform mat4 modelViewMatrix;",
+		"uniform mat4 projectionMatrix;",
+		"uniform mat4 viewMatrix;",
+		"uniform mat3 normalMatrix;",
+		"uniform vec3 cameraPosition;",
 
-			"#ifdef USE_COLOR",
+		"attribute vec3 position;",
+		"attribute vec3 normal;",
+		"attribute vec2 uv;",
+		"attribute vec2 uv2;",
 
-				"attribute vec3 color;",
+		"#ifdef USE_COLOR",
 
-			"#endif",
+			"attribute vec3 color;",
 
-			"#ifdef USE_MORPHTARGETS",
+		"#endif",
 
-				"attribute vec3 morphTarget0;",
-				"attribute vec3 morphTarget1;",
-				"attribute vec3 morphTarget2;",
-				"attribute vec3 morphTarget3;",
+		"#ifdef USE_MORPHTARGETS",
 
-				"#ifdef USE_MORPHNORMALS",
+			"attribute vec3 morphTarget0;",
+			"attribute vec3 morphTarget1;",
+			"attribute vec3 morphTarget2;",
+			"attribute vec3 morphTarget3;",
 
-					"attribute vec3 morphNormal0;",
-					"attribute vec3 morphNormal1;",
-					"attribute vec3 morphNormal2;",
-					"attribute vec3 morphNormal3;",
+			"#ifdef USE_MORPHNORMALS",
 
-				"#else",
+				"attribute vec3 morphNormal0;",
+				"attribute vec3 morphNormal1;",
+				"attribute vec3 morphNormal2;",
+				"attribute vec3 morphNormal3;",
 
-					"attribute vec3 morphTarget4;",
-					"attribute vec3 morphTarget5;",
-					"attribute vec3 morphTarget6;",
-					"attribute vec3 morphTarget7;",
+			"#else",
 
-				"#endif",
+				"attribute vec3 morphTarget4;",
+				"attribute vec3 morphTarget5;",
+				"attribute vec3 morphTarget6;",
+				"attribute vec3 morphTarget7;",
 
 			"#endif",
 
-			"#ifdef USE_SKINNING",
+		"#endif",
 
-				"attribute vec4 skinIndex;",
-				"attribute vec4 skinWeight;",
+		"#ifdef USE_SKINNING",
 
-			"#endif",
+			"attribute vec4 skinIndex;",
+			"attribute vec4 skinWeight;",
 
-			""
+		"#endif",
 
-		].join("\n");
+		""
 
-		var prefix_fragment = [
+	].join("\n");
 
-			"precision " + renderer.precision + " float;",
+	var prefix_fragment = [
 
-			( parameters.bumpMap || parameters.normalMap ) ? "#extension GL_OES_standard_derivatives : enable" : "",
+		"precision " + renderer.precision + " float;",
 
-			customDefines,
+		( parameters.bumpMap || parameters.normalMap ) ? "#extension GL_OES_standard_derivatives : enable" : "",
 
-			"#define MAX_DIR_LIGHTS " + parameters.maxDirLights,
-			"#define MAX_POINT_LIGHTS " + parameters.maxPointLights,
-			"#define MAX_SPOT_LIGHTS " + parameters.maxSpotLights,
-			"#define MAX_HEMI_LIGHTS " + parameters.maxHemiLights,
+		customDefines,
 
-			"#define MAX_SHADOWS " + parameters.maxShadows,
+		"#define MAX_DIR_LIGHTS " + parameters.maxDirLights,
+		"#define MAX_POINT_LIGHTS " + parameters.maxPointLights,
+		"#define MAX_SPOT_LIGHTS " + parameters.maxSpotLights,
+		"#define MAX_HEMI_LIGHTS " + parameters.maxHemiLights,
 
-			parameters.alphaTest ? "#define ALPHATEST " + parameters.alphaTest: "",
+		"#define MAX_SHADOWS " + parameters.maxShadows,
 
-			parameters.gammaInput ? "#define GAMMA_INPUT" : "",
-			parameters.gammaOutput ? "#define GAMMA_OUTPUT" : "",
+		parameters.alphaTest ? "#define ALPHATEST " + parameters.alphaTest: "",
 
-			( parameters.useFog && parameters.fog ) ? "#define USE_FOG" : "",
-			( parameters.useFog && parameters.fogExp ) ? "#define FOG_EXP2" : "",
+		parameters.gammaInput ? "#define GAMMA_INPUT" : "",
+		parameters.gammaOutput ? "#define GAMMA_OUTPUT" : "",
 
-			parameters.map ? "#define USE_MAP" : "",
-			parameters.envMap ? "#define USE_ENVMAP" : "",
-			parameters.lightMap ? "#define USE_LIGHTMAP" : "",
-			parameters.bumpMap ? "#define USE_BUMPMAP" : "",
-			parameters.normalMap ? "#define USE_NORMALMAP" : "",
-			parameters.specularMap ? "#define USE_SPECULARMAP" : "",
-			parameters.vertexColors ? "#define USE_COLOR" : "",
+		( parameters.useFog && parameters.fog ) ? "#define USE_FOG" : "",
+		( parameters.useFog && parameters.fogExp ) ? "#define FOG_EXP2" : "",
 
-			parameters.metal ? "#define METAL" : "",
-			parameters.perPixel ? "#define PHONG_PER_PIXEL" : "",
-			parameters.wrapAround ? "#define WRAP_AROUND" : "",
-			parameters.doubleSided ? "#define DOUBLE_SIDED" : "",
-			parameters.flipSided ? "#define FLIP_SIDED" : "",
+		parameters.map ? "#define USE_MAP" : "",
+		parameters.envMap ? "#define USE_ENVMAP" : "",
+		parameters.lightMap ? "#define USE_LIGHTMAP" : "",
+		parameters.bumpMap ? "#define USE_BUMPMAP" : "",
+		parameters.normalMap ? "#define USE_NORMALMAP" : "",
+		parameters.specularMap ? "#define USE_SPECULARMAP" : "",
+		parameters.vertexColors ? "#define USE_COLOR" : "",
 
-			parameters.shadowMapEnabled ? "#define USE_SHADOWMAP" : "",
-			parameters.shadowMapEnabled ? "#define " + shadowMapTypeDefine : "",
-			parameters.shadowMapDebug ? "#define SHADOWMAP_DEBUG" : "",
-			parameters.shadowMapCascade ? "#define SHADOWMAP_CASCADE" : "",
+		parameters.metal ? "#define METAL" : "",
+		parameters.perPixel ? "#define PHONG_PER_PIXEL" : "",
+		parameters.wrapAround ? "#define WRAP_AROUND" : "",
+		parameters.doubleSided ? "#define DOUBLE_SIDED" : "",
+		parameters.flipSided ? "#define FLIP_SIDED" : "",
 
-			"uniform mat4 viewMatrix;",
-			"uniform vec3 cameraPosition;",
-			""
+		parameters.shadowMapEnabled ? "#define USE_SHADOWMAP" : "",
+		parameters.shadowMapEnabled ? "#define " + shadowMapTypeDefine : "",
+		parameters.shadowMapDebug ? "#define SHADOWMAP_DEBUG" : "",
+		parameters.shadowMapCascade ? "#define SHADOWMAP_CASCADE" : "",
 
-		].join("\n");
-		
+		"uniform mat4 viewMatrix;",
+		"uniform vec3 cameraPosition;",
+		""
 
-		program = renderer.compileShader(prefix_vertex + vertexShader, prefix_fragment + fragmentShader);
-		
-		//console.log( prefix_fragment + fragmentShader );
-		//console.log( prefix_vertex + vertexShader );
+	].join("\n");
+	
 
-		program.uniforms = {};
-		program.attributes = {};
+	program = renderer.compileShader(prefix_vertex + vertexShader, prefix_fragment + fragmentShader);
+	
+	//console.log( prefix_fragment + fragmentShader );
+	//console.log( prefix_vertex + vertexShader );
 
-		var identifiers, u, a, i;
+	program.uniforms = {};
+	program.attributes = {};
 
-		// cache uniform locations
+	var identifiers, u, a, i;
 
-		identifiers = [
+	// cache uniform locations
 
-			'viewMatrix', 'modelViewMatrix', 'projectionMatrix', 'normalMatrix', 'modelMatrix', 'cameraPosition',
-			'morphTargetInfluences'
+	identifiers = [
 
-		];
+		'viewMatrix', 'modelViewMatrix', 'projectionMatrix', 'normalMatrix', 'modelMatrix', 'cameraPosition',
+		'morphTargetInfluences'
 
-		if ( parameters.useVertexTexture ) {
+	];
 
-			identifiers.push( 'boneTexture' );
+	if ( parameters.useVertexTexture ) {
 
-		} else {
+		identifiers.push( 'boneTexture' );
 
-			identifiers.push( 'boneGlobalMatrices' );
+	} else {
 
-		}
+		identifiers.push( 'boneGlobalMatrices' );
 
-		for ( u in uniforms ) {
+	}
 
-			identifiers.push( u );
+	for ( u in uniforms ) {
 
-		}
+		identifiers.push( u );
 
-		this.cacheUniformLocations( program, identifiers );
+	}
 
-		// cache attributes locations
+	this.cacheUniformLocations( program, identifiers );
 
-		identifiers = [
+	// cache attributes locations
 
-			"position", "normal", "uv", "uv2", "tangent", "color",
-			"skinIndex", "skinWeight", "lineDistance"
+	identifiers = [
 
-		];
+		"position", "normal", "uv", "uv2", "tangent", "color",
+		"skinIndex", "skinWeight", "lineDistance"
 
-		for ( i = 0; i < parameters.maxMorphTargets; i ++ ) {
+	];
 
-			identifiers.push( "morphTarget" + i );
+	for ( i = 0; i < parameters.maxMorphTargets; i ++ ) {
 
-		}
+		identifiers.push( "morphTarget" + i );
 
-		for ( i = 0; i < parameters.maxMorphNormals; i ++ ) {
+	}
 
-			identifiers.push( "morphNormal" + i );
+	for ( i = 0; i < parameters.maxMorphNormals; i ++ ) {
 
-		}
+		identifiers.push( "morphNormal" + i );
 
-		for ( a in attributes ) {
+	}
 
-			identifiers.push( a );
+	for ( a in attributes ) {
 
-		}
+		identifiers.push( a );
 
-		this.cacheAttributeLocations( program, identifiers );
+	}
+
+	this.cacheAttributeLocations( program, identifiers );
 
-		program.id = this.programs_counter ++;
+	program.id = this.programs_counter ++;
 
-		this.programs.push( { program: program, code: code, usedTimes: 1 } );
+	this.programs.push( { program: program, code: code, usedTimes: 1 } );
 
-		this.info.memory.programs = this.programs.length;
+	this.info.memory.programs = this.programs.length;
 
-		return program;
+	return program;
 
-	};
+};
 	
 THREE.WebGLRenderer2.ShaderBuilder.prototype.generateDefines = function( defines ) {