diff --git a/.vs/shader3/v14/.suo b/.vs/shader3/v14/.suo
index 86f0da2..fad0295 100644
Binary files a/.vs/shader3/v14/.suo and b/.vs/shader3/v14/.suo differ
diff --git a/main.cpp b/main.cpp
index a654551..18609cc 100644
--- a/main.cpp
+++ b/main.cpp
@@ -63,8 +63,8 @@ INT WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _
glewInit();
//init gpu program
GPUProgram gpuProgram;
- gpuProgram.AttachShader(GL_VERTEX_SHADER, "res/shader/diffuse_fs.vs");
- gpuProgram.AttachShader(GL_FRAGMENT_SHADER, "res/shader/diffuse_fs.fs");
+ gpuProgram.AttachShader(GL_VERTEX_SHADER, "res/shader/test.vs");
+ gpuProgram.AttachShader(GL_FRAGMENT_SHADER, "res/shader/test.fs");
gpuProgram.Link();
gpuProgram.DetectAttribute("pos");
@@ -120,10 +120,12 @@ INT WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glUseProgram(gpuProgram.mProgram);
+
glUniformMatrix4fv(gpuProgram.GetLocation("M"), 1,GL_FALSE, glm::value_ptr(modelMatrix));
glUniformMatrix4fv(gpuProgram.GetLocation("V"), 1, GL_FALSE, identity);
glUniformMatrix4fv(gpuProgram.GetLocation("P"), 1, GL_FALSE, glm::value_ptr(projectionMatrix));
glUniformMatrix4fv(gpuProgram.GetLocation("NM"), 1, GL_FALSE, glm::value_ptr(normalMatrix));
+
glUniform4fv(gpuProgram.GetLocation("U_AmbientLightColor"), 1,ambientLightColor);
glUniform4fv(gpuProgram.GetLocation("U_AmbientMaterial"), 1, ambientMaterial);
glUniform4fv(gpuProgram.GetLocation("U_DiffuseLightColor"), 1, diffuseLightColor);
diff --git a/res/shader/test.fs b/res/shader/test.fs
new file mode 100644
index 0000000..d0974fa
--- /dev/null
+++ b/res/shader/test.fs
@@ -0,0 +1,22 @@
+uniform vec4 U_AmbientLightColor;
+uniform vec4 U_AmbientMaterial;
+uniform vec3 U_LightPos;
+uniform vec4 U_DiffuseLightColor;
+uniform vec4 U_DiffuseMaterial;
+
+
+varying vec3 V_Normal;
+
+void main()
+{
+ //ambient
+ vec4 ambientColor = U_AmbientLightColor * U_AmbientMaterial;
+
+ //diffuse
+ vec3 N = normalize(V_Normal);
+ vec3 L = normalize(U_LightPos);
+ float diffuseIntensity = max(0.0, dot(L,N));
+ vec4 diffuseColor = U_DiffuseLightColor * U_DiffuseMaterial * diffuseIntensity;
+
+ gl_FragColor = ambientColor + diffuseColor;
+}
\ No newline at end of file
diff --git a/res/shader/test.vs b/res/shader/test.vs
new file mode 100644
index 0000000..2bd09a7
--- /dev/null
+++ b/res/shader/test.vs
@@ -0,0 +1,15 @@
+attribute vec3 pos;
+attribute vec2 texcoord;
+attribute vec3 normal;
+
+uniform mat4 M;
+uniform mat4 P;
+uniform mat4 V;
+uniform mat4 NM;//Normal Matrix ʹÓÃÀ´ÐÞÕý·¨ÏßµÄ
+
+varying vec3 V_Normal;
+void main()
+{
+ V_Normal = mat3(NM)*normal;
+ gl_Position=P*V*M*vec4(pos,1.0);
+}
\ No newline at end of file
diff --git a/shader3.vcxproj b/shader3.vcxproj
index 8db05fc..dca363b 100644
--- a/shader3.vcxproj
+++ b/shader3.vcxproj
@@ -61,7 +61,10 @@
-
+
+
+ editbin /subsystem:console $(OutDir)$(ProjectName).exe
+
@@ -79,8 +82,8 @@
-
-
+
+
diff --git a/shader3.vcxproj.filters b/shader3.vcxproj.filters
index 9fcb30c..cc11adc 100644
--- a/shader3.vcxproj.filters
+++ b/shader3.vcxproj.filters
@@ -1,3 +1,56 @@

-
+
+
+
+ {e15d0e9c-35fc-45f8-90bd-b46a358d907b}
+
+
+ {dbc65808-53cb-4088-a850-19079331f256}
+
+
+
+
+ GPUProgram
+
+
+ GPUProgram
+
+
+ GPUProgram
+
+
+ GPUProgram
+
+
+ GPUProgram
+
+
+ src
+
+
+
+
+ GPUProgram
+
+
+ GPUProgram
+
+
+ GPUProgram
+
+
+ GPUProgram
+
+
+ GPUProgram
+
+
+
+
+ src
+
+
+ src
+
+
\ No newline at end of file