You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					163 lines
				
				3.6 KiB
			
		
		
			
		
	
	
					163 lines
				
				3.6 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								<!DOCTYPE html>
							 | 
						||
| 
								 | 
							
								<html lang="zh">
							 | 
						||
| 
								 | 
							
									<head>
							 | 
						||
| 
								 | 
							
										<meta charset="utf-8" />
							 | 
						||
| 
								 | 
							
										<base href="../../../../" />
							 | 
						||
| 
								 | 
							
										<script src="page.js"></script>
							 | 
						||
| 
								 | 
							
										<link type="text/css" rel="stylesheet" href="page.css" />
							 | 
						||
| 
								 | 
							
									</head>
							 | 
						||
| 
								 | 
							
									<body>
							 | 
						||
| 
								 | 
							
										<h1>[name]</h1>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<p class="desc">发送到顶点着色器和片元着色器的GLSL程序的构造函数, 包含默认的变量(uniforms)和属性</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h2>内置的变量(uniforms)和属性</h2>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>顶点着色器(无条件的):</h3>
							 | 
						||
| 
								 | 
							
										<div>
							 | 
						||
| 
								 | 
							
										<code>
							 | 
						||
| 
								 | 
							
										// = object.matrixWorld
							 | 
						||
| 
								 | 
							
										uniform mat4 modelMatrix;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// = camera.matrixWorldInverse * object.matrixWorld
							 | 
						||
| 
								 | 
							
										uniform mat4 modelViewMatrix;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// = camera.projectionMatrix
							 | 
						||
| 
								 | 
							
										uniform mat4 projectionMatrix;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// = camera.matrixWorldInverse
							 | 
						||
| 
								 | 
							
										uniform mat4 viewMatrix;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// = inverse transpose of modelViewMatrix
							 | 
						||
| 
								 | 
							
										uniform mat3 normalMatrix;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// = camera position in world space
							 | 
						||
| 
								 | 
							
										uniform vec3 cameraPosition;
							 | 
						||
| 
								 | 
							
										</code>
							 | 
						||
| 
								 | 
							
										<code>
							 | 
						||
| 
								 | 
							
										// default vertex attributes provided by BufferGeometry
							 | 
						||
| 
								 | 
							
										attribute vec3 position;
							 | 
						||
| 
								 | 
							
										attribute vec3 normal;
							 | 
						||
| 
								 | 
							
										attribute vec2 uv;
							 | 
						||
| 
								 | 
							
										</code>
							 | 
						||
| 
								 | 
							
										<p>
							 | 
						||
| 
								 | 
							
										注意,可以通过以下方式计算顶点着色器中顶点的位置:
							 | 
						||
| 
								 | 
							
										<code>
							 | 
						||
| 
								 | 
							
										gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
							 | 
						||
| 
								 | 
							
										</code>
							 | 
						||
| 
								 | 
							
										或者也可以这样:
							 | 
						||
| 
								 | 
							
										<code>
							 | 
						||
| 
								 | 
							
										gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4( position, 1.0 );
							 | 
						||
| 
								 | 
							
										</code>
							 | 
						||
| 
								 | 
							
										</p>
							 | 
						||
| 
								 | 
							
										</div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>顶点着色器(有条件的):</h3>
							 | 
						||
| 
								 | 
							
										<div>
							 | 
						||
| 
								 | 
							
										<code>
							 | 
						||
| 
								 | 
							
										#ifdef USE_TANGENT
							 | 
						||
| 
								 | 
							
											attribute vec4 tangent;
							 | 
						||
| 
								 | 
							
										#endif
							 | 
						||
| 
								 | 
							
										#if defined( USE_COLOR_ALPHA )
							 | 
						||
| 
								 | 
							
											// vertex color attribute with alpha
							 | 
						||
| 
								 | 
							
											attribute vec4 color;
							 | 
						||
| 
								 | 
							
										#elif defined( USE_COLOR )
							 | 
						||
| 
								 | 
							
											// vertex color attribute
							 | 
						||
| 
								 | 
							
											attribute vec3 color;
							 | 
						||
| 
								 | 
							
										#endif
							 | 
						||
| 
								 | 
							
										</code>
							 | 
						||
| 
								 | 
							
										<code>
							 | 
						||
| 
								 | 
							
										#ifdef USE_MORPHTARGETS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											attribute vec3 morphTarget0;
							 | 
						||
| 
								 | 
							
											attribute vec3 morphTarget1;
							 | 
						||
| 
								 | 
							
											attribute vec3 morphTarget2;
							 | 
						||
| 
								 | 
							
											attribute vec3 morphTarget3;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											#ifdef USE_MORPHNORMALS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												attribute vec3 morphNormal0;
							 | 
						||
| 
								 | 
							
												attribute vec3 morphNormal1;
							 | 
						||
| 
								 | 
							
												attribute vec3 morphNormal2;
							 | 
						||
| 
								 | 
							
												attribute vec3 morphNormal3;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											#else
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												attribute vec3 morphTarget4;
							 | 
						||
| 
								 | 
							
												attribute vec3 morphTarget5;
							 | 
						||
| 
								 | 
							
												attribute vec3 morphTarget6;
							 | 
						||
| 
								 | 
							
												attribute vec3 morphTarget7;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											#endif
							 | 
						||
| 
								 | 
							
										#endif
							 | 
						||
| 
								 | 
							
										</code>
							 | 
						||
| 
								 | 
							
										<code>
							 | 
						||
| 
								 | 
							
										#ifdef USE_SKINNING
							 | 
						||
| 
								 | 
							
											attribute vec4 skinIndex;
							 | 
						||
| 
								 | 
							
											attribute vec4 skinWeight;
							 | 
						||
| 
								 | 
							
										#endif
							 | 
						||
| 
								 | 
							
										</code>
							 | 
						||
| 
								 | 
							
										</div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>片元着色器:</h3>
							 | 
						||
| 
								 | 
							
										<div>
							 | 
						||
| 
								 | 
							
										<code>
							 | 
						||
| 
								 | 
							
										uniform mat4 viewMatrix;
							 | 
						||
| 
								 | 
							
										uniform vec3 cameraPosition;
							 | 
						||
| 
								 | 
							
										</code>
							 | 
						||
| 
								 | 
							
										</div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h2>构造器</h2>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>[name]( [param:WebGLRenderer renderer], [param:String cacheKey], [param:Object parameters] )</h3>
							 | 
						||
| 
								 | 
							
										<p>参数详见[page:WebGLRenderer WebGLRenderer].</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h2>属性</h2>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>[property:String name]</h3>
							 | 
						||
| 
								 | 
							
										<p>相应着色器程序的名称。</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>[property:String id]</h3>
							 | 
						||
| 
								 | 
							
										<p>该实例的 id 标识。</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>[property:String cacheKey]</h3>
							 | 
						||
| 
								 | 
							
										<p>启用这个 key 之后,能够实现单个 WebGLProgram 不同材料的可重用性。</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>[property:Integer usedTimes]</h3>
							 | 
						||
| 
								 | 
							
										<p>此实例用于渲染渲染项的次数。</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>[property:Object program]</h3>
							 | 
						||
| 
								 | 
							
										<p>实际的着色器程序。</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>[property:WebGLShader vertexShader]</h3>
							 | 
						||
| 
								 | 
							
										<p>顶点着色器。</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>[property:WebGLShader fragmentShader]</h3>
							 | 
						||
| 
								 | 
							
										<p>片元着色器。</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h2>方法</h2>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>[method:Object getUniforms]()</h3>
							 | 
						||
| 
								 | 
							
										<p>
							 | 
						||
| 
								 | 
							
										返回所有活动态的变量(uniform)位置的name-value映射
							 | 
						||
| 
								 | 
							
										</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>[method:Object getAttributes]()</h3>
							 | 
						||
| 
								 | 
							
										<p>
							 | 
						||
| 
								 | 
							
										返回所有活动态的顶点属性位置的name-value映射
							 | 
						||
| 
								 | 
							
										</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h3>[method:undefined destroy]()</h3>
							 | 
						||
| 
								 | 
							
										<p>
							 | 
						||
| 
								 | 
							
										销毁 WebGLProgram 的实例。
							 | 
						||
| 
								 | 
							
										</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<h2>源码</h2>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										<p>
							 | 
						||
| 
								 | 
							
											[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
							 | 
						||
| 
								 | 
							
										</p>
							 | 
						||
| 
								 | 
							
									</body>
							 | 
						||
| 
								 | 
							
								</html>
							 |