浏览代码

implementation of ambient occlusion map in materials and in WebGLRenderer/Program.

Ben Houston 10 年之前
父节点
当前提交
6dda5e7a44

+ 3 - 0
src/materials/MeshBasicMaterial.js

@@ -8,6 +8,7 @@
  *  map: new THREE.Texture( <Image> ),
  *
  *  lightMap: new THREE.Texture( <Image> ),
+ *  ambientOcclusionMap: new THREE.Texture( <Image> ),
  *
  *  specularMap: new THREE.Texture( <Image> ),
  *
@@ -46,6 +47,7 @@ THREE.MeshBasicMaterial = function ( parameters ) {
 	this.map = null;
 
 	this.lightMap = null;
+	this.ambientOcclusionMap = null;
 
 	this.specularMap = null;
 
@@ -88,6 +90,7 @@ THREE.MeshBasicMaterial.prototype.clone = function () {
 	material.map = this.map;
 
 	material.lightMap = this.lightMap;
+	material.ambientOcclusionMap = this.ambientOcclusionMap;
 
 	material.specularMap = this.specularMap;
 

+ 3 - 0
src/materials/MeshLambertMaterial.js

@@ -10,6 +10,7 @@
  *  map: new THREE.Texture( <Image> ),
  *
  *  lightMap: new THREE.Texture( <Image> ),
+ *  ambientOcclusionMap: new THREE.Texture( <Image> ),
  *
  *  specularMap: new THREE.Texture( <Image> ),
  *
@@ -53,6 +54,7 @@ THREE.MeshLambertMaterial = function ( parameters ) {
 	this.map = null;
 
 	this.lightMap = null;
+	this.ambientOcclusionMap = null;
 
 	this.specularMap = null;
 
@@ -100,6 +102,7 @@ THREE.MeshLambertMaterial.prototype.clone = function () {
 	material.map = this.map;
 
 	material.lightMap = this.lightMap;
+	material.ambientOcclusionMap = this.ambientOcclusionMap;
 
 	material.specularMap = this.specularMap;
 

+ 3 - 0
src/materials/MeshPhongMaterial.js

@@ -12,6 +12,7 @@
  *  map: new THREE.Texture( <Image> ),
  *
  *  lightMap: new THREE.Texture( <Image> ),
+ *  ambientOcclusionMap: new THREE.Texture( <Image> ),
  *
  *  bumpMap: new THREE.Texture( <Image> ),
  *  bumpScale: <float>,
@@ -65,6 +66,7 @@ THREE.MeshPhongMaterial = function ( parameters ) {
 	this.map = null;
 
 	this.lightMap = null;
+	this.ambientOcclusionMap = null;
 
 	this.bumpMap = null;
 	this.bumpScale = 1;
@@ -122,6 +124,7 @@ THREE.MeshPhongMaterial.prototype.clone = function () {
 	material.map = this.map;
 
 	material.lightMap = this.lightMap;
+	material.ambientOcclusionMap = this.ambientOcclusionMap;
 
 	material.bumpMap = this.bumpMap;
 	material.bumpScale = this.bumpScale;

+ 2 - 0
src/renderers/WebGLRenderer.js

@@ -4153,6 +4153,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 			envMap: !! material.envMap,
 			envMapMode: material.envMap && material.envMap.mapping,
 			lightMap: !! material.lightMap,
+			ambientOcclusionMap: !! material.ambientOcclusionMap,
 			bumpMap: !! material.bumpMap,
 			normalMap: !! material.normalMap,
 			specularMap: !! material.specularMap,
@@ -4595,6 +4596,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		uniforms.map.value = material.map;
 		uniforms.lightMap.value = material.lightMap;
+		uniforms.ambientOcclusionMap.value = material.ambientOcclusionMap;
 		uniforms.specularMap.value = material.specularMap;
 		uniforms.alphaMap.value = material.alphaMap;
 

+ 1 - 0
src/renderers/shaders/UniformsLib.js

@@ -13,6 +13,7 @@ THREE.UniformsLib = {
 		"offsetRepeat" : { type: "v4", value: new THREE.Vector4( 0, 0, 1, 1 ) },
 
 		"lightMap" : { type: "t", value: null },
+		"ambientOcclusionMap" : { type: "t", value: null },
 		"specularMap" : { type: "t", value: null },
 		"alphaMap" : { type: "t", value: null },
 

+ 2 - 0
src/renderers/webgl/WebGLProgram.js

@@ -182,6 +182,7 @@ THREE.WebGLProgram = ( function () {
 				parameters.envMap ? '#define USE_ENVMAP' : '',
 				parameters.envMap ? '#define ' + envMapModeDefine : '',
 				parameters.lightMap ? '#define USE_LIGHTMAP' : '',
+				parameters.ambientOcclusionMap ? '#define USE_AMBIENTOCCLUSIONMAP' : '',
 				parameters.bumpMap ? '#define USE_BUMPMAP' : '',
 				parameters.normalMap ? '#define USE_NORMALMAP' : '',
 				parameters.specularMap ? '#define USE_SPECULARMAP' : '',
@@ -295,6 +296,7 @@ THREE.WebGLProgram = ( function () {
 				parameters.envMap ? '#define ' + envMapModeDefine : '',
 				parameters.envMap ? '#define ' + envMapBlendingDefine : '',
 				parameters.lightMap ? '#define USE_LIGHTMAP' : '',
+				parameters.ambientOcclusionMap ? '#define USE_AMBIENTOCCLUSIONMAP' : '',
 				parameters.bumpMap ? '#define USE_BUMPMAP' : '',
 				parameters.normalMap ? '#define USE_NORMALMAP' : '',
 				parameters.specularMap ? '#define USE_SPECULARMAP' : '',