blobt
5 years ago
8 changed files with 95 additions and 14 deletions
-
BIN.vs/shader2/v14/.suo
-
28main.cpp
-
17misc.cpp
-
2misc.h
-
35res/shader/MixLightMT.fs
-
19res/shader/MixLightMT.vs
-
4shader2.vcxproj
-
4shader2.vcxproj.filters
@ -0,0 +1,35 @@ |
|||||
|
uniform sampler2D U_MainTexture; |
||||
|
varying vec3 V_Normal; |
||||
|
varying vec4 V_WorldPos;//当前的位置 |
||||
|
varying vec2 V_Texcoord; |
||||
|
|
||||
|
void main() { |
||||
|
|
||||
|
vec3 lightPos = vec3(10.0, 10.0, 0.0); |
||||
|
vec3 L=lightPos; |
||||
|
L = normalize(L); |
||||
|
vec3 n = normalize(V_Normal); |
||||
|
|
||||
|
|
||||
|
//ambient |
||||
|
vec4 AmbientLightColor = vec4(0.2, 0.2, 0.2, 1.0); |
||||
|
vec4 AmbientMaterial = vec4(0.2, 0.2, 0.2, 1.0); |
||||
|
vec4 AmbientColor = AmbientLightColor*AmbientMaterial; |
||||
|
|
||||
|
//diffuse |
||||
|
vec4 DiffuseLightColor = vec4(1.0,1.0,1.0,1.0); |
||||
|
vec4 DiffuseMaterial = vec4(0.8, 0.8, 0.8, 1.0); |
||||
|
vec4 diffuseColor = DiffuseLightColor*DiffuseMaterial*max(0.0, dot(L,n)); |
||||
|
|
||||
|
//specular |
||||
|
vec4 SpecularLightColor = vec4(1.0,1.0,1.0,1.0); |
||||
|
vec4 SpecularMaterial = vec4(0.9,0.9,0.9,1.0); |
||||
|
vec3 reflectDir = normalize(reflect(-L,n));//-L就是光线的入射方向向量,以法线为基础计算方式向量 |
||||
|
vec3 viewDir = normalize(vec3(0.0) - V_WorldPos.xyz);//vec3(0.0)表示已中心为观察点,这里求的是眼睛到物体的视线向量 |
||||
|
vec4 specularColor = SpecularLightColor*SpecularMaterial*pow(max(0.0,dot(viewDir,reflectDir)),128.0); |
||||
|
|
||||
|
|
||||
|
//gl_FragColor = texture2D(U_MainTexture, V_Texcoord) * (AmbientColor + diffuseColor + specularColor); |
||||
|
gl_FragData[0] = AmbientColor + texture2D(U_MainTexture, V_Texcoord) * diffuseColor + specularColor; |
||||
|
gl_FragData[1] = vec4(1.0); |
||||
|
} |
@ -0,0 +1,19 @@ |
|||||
|
attribute vec3 pos; |
||||
|
attribute vec2 texcoord; |
||||
|
attribute vec3 normal; |
||||
|
|
||||
|
uniform mat4 M; |
||||
|
uniform mat4 V; |
||||
|
uniform mat4 P; |
||||
|
uniform mat4 NM; |
||||
|
|
||||
|
varying vec3 V_Normal; |
||||
|
varying vec4 V_WorldPos;//µ±Ç°µÄλÖà |
||||
|
varying vec2 V_Texcoord; |
||||
|
|
||||
|
void main() { |
||||
|
V_Normal = mat3(NM)*normal; |
||||
|
V_WorldPos = M * vec4(pos, 1.0); |
||||
|
V_Texcoord = texcoord; |
||||
|
gl_Position = P*V*M*vec4(pos,1.0); |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue