代码拉取完成,页面将自动刷新
/*
(C) 2019 David Lettier
lettier.com
*/
#version 140
#define NUMBER_OF_LIGHTS 4
uniform mat4 p3d_ModelMatrix;
uniform mat4 p3d_ViewMatrix;
uniform mat4 p3d_ModelViewMatrix;
uniform mat4 p3d_ModelViewProjectionMatrix;
uniform mat3 p3d_NormalMatrix;
uniform struct p3d_LightSourceParameters
{ vec4 color
; vec4 ambient
; vec4 diffuse
; vec4 specular
; vec4 position
; vec3 spotDirection
; float spotExponent
; float spotCutoff
; float spotCosCutoff
; float constantAttenuation
; float linearAttenuation
; float quadraticAttenuation
; vec3 attenuation
; sampler2DShadow shadowMap
; mat4 shadowViewMatrix
;
} p3d_LightSource[NUMBER_OF_LIGHTS];
in vec4 p3d_Vertex;
in vec3 p3d_Normal;
in vec2 p3d_MultiTexCoord0;
in vec2 p3d_MultiTexCoord1;
in vec3 p3d_Binormal;
in vec3 p3d_Tangent;
out vec4 vertexPosition;
out vec3 vertexNormal;
out vec3 binormal;
out vec3 tangent;
out vec2 normalCoord;
out vec2 diffuseCoord;
out vec4 vertexInShadowSpaces[NUMBER_OF_LIGHTS];
void main() {
vertexPosition = p3d_ModelViewMatrix * p3d_Vertex;
vertexNormal = normalize(p3d_NormalMatrix * p3d_Normal);
binormal = normalize(p3d_NormalMatrix * p3d_Binormal);
tangent = normalize(p3d_NormalMatrix * p3d_Tangent);
normalCoord = p3d_MultiTexCoord0;
diffuseCoord = p3d_MultiTexCoord1;
for (int i = 0; i < p3d_LightSource.length(); ++i) {
vertexInShadowSpaces[i] = p3d_LightSource[i].shadowViewMatrix * vertexPosition;
}
gl_Position = p3d_ModelViewProjectionMatrix * p3d_Vertex;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。