three.js WebGLProgram

2023-02-16 17:52 更新

發(fā)送到頂點(diǎn)著色器和片元著色器的GLSL程序的構(gòu)造函數(shù), 包含默認(rèn)的變量(uniforms)和屬性

內(nèi)置的變量(uniforms)和屬性

頂點(diǎn)著色器(無條件的):

// = 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;
// default vertex attributes provided by BufferGeometry
attribute vec3 position;
attribute vec3 normal;
attribute vec2 uv;

注意,可以通過以下方式計(jì)算頂點(diǎn)著色器中頂點(diǎn)的位置:

gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );

或者也可以這樣:

gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4( position, 1.0 );

頂點(diǎn)著色器(有條件的):

#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
#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
#ifdef USE_SKINNING
	attribute vec4 skinIndex;
	attribute vec4 skinWeight;
#endif

片元著色器:

uniform mat4 viewMatrix;
uniform vec3 cameraPosition;

構(gòu)造器

WebGLProgram( renderer : WebGLRenderer, cacheKey : String, parameters : Object )

參數(shù)詳見WebGLRenderer.

屬性

.name : String

相應(yīng)著色器程序的名稱。

.id : String

該實(shí)例的 id 標(biāo)識。

.cacheKey : String

啟用這個(gè) key 之后,能夠?qū)崿F(xiàn)單個(gè) WebGLProgram 不同材料的可重用性。

.usedTimes : Integer

此實(shí)例用于渲染渲染項(xiàng)的次數(shù)。

.program : Object

實(shí)際的著色器程序。

.vertexShader : WebGLShader

頂點(diǎn)著色器。

.fragmentShader : WebGLShader

片元著色器。

方法

.getUniforms () : Object

返回所有活動態(tài)的變量(uniform)位置的name-value映射

.getAttributes () : Object

返回所有活動態(tài)的頂點(diǎn)屬性位置的name-value映射

.destroy () : undefined

銷毀 WebGLProgram 的實(shí)例。

源碼

src/renderers/webgl/WebGLProgram.js


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號