Browse Source

漫反射

master
blobt 4 years ago
parent
commit
836a3caf6a
  1. BIN
      .vs/shader3/v14/.suo
  2. 6
      main.cpp
  3. 22
      res/shader/test.fs
  4. 15
      res/shader/test.vs
  5. 9
      shader3.vcxproj
  6. 55
      shader3.vcxproj.filters

BIN
.vs/shader3/v14/.suo

6
main.cpp

@ -63,8 +63,8 @@ INT WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _
glewInit(); glewInit();
//init gpu program //init gpu program
GPUProgram gpuProgram; 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.Link();
gpuProgram.DetectAttribute("pos"); 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); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST); glEnable(GL_DEPTH_TEST);
glUseProgram(gpuProgram.mProgram); glUseProgram(gpuProgram.mProgram);
glUniformMatrix4fv(gpuProgram.GetLocation("M"), 1,GL_FALSE, glm::value_ptr(modelMatrix)); glUniformMatrix4fv(gpuProgram.GetLocation("M"), 1,GL_FALSE, glm::value_ptr(modelMatrix));
glUniformMatrix4fv(gpuProgram.GetLocation("V"), 1, GL_FALSE, identity); glUniformMatrix4fv(gpuProgram.GetLocation("V"), 1, GL_FALSE, identity);
glUniformMatrix4fv(gpuProgram.GetLocation("P"), 1, GL_FALSE, glm::value_ptr(projectionMatrix)); glUniformMatrix4fv(gpuProgram.GetLocation("P"), 1, GL_FALSE, glm::value_ptr(projectionMatrix));
glUniformMatrix4fv(gpuProgram.GetLocation("NM"), 1, GL_FALSE, glm::value_ptr(normalMatrix)); glUniformMatrix4fv(gpuProgram.GetLocation("NM"), 1, GL_FALSE, glm::value_ptr(normalMatrix));
glUniform4fv(gpuProgram.GetLocation("U_AmbientLightColor"), 1,ambientLightColor); glUniform4fv(gpuProgram.GetLocation("U_AmbientLightColor"), 1,ambientLightColor);
glUniform4fv(gpuProgram.GetLocation("U_AmbientMaterial"), 1, ambientMaterial); glUniform4fv(gpuProgram.GetLocation("U_AmbientMaterial"), 1, ambientMaterial);
glUniform4fv(gpuProgram.GetLocation("U_DiffuseLightColor"), 1, diffuseLightColor); glUniform4fv(gpuProgram.GetLocation("U_DiffuseLightColor"), 1, diffuseLightColor);

22
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;
}

15
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);
}

9
shader3.vcxproj

@ -61,7 +61,10 @@
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup /> <PropertyGroup />
<ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<PostBuildEvent>
<Command>editbin /subsystem:console $(OutDir)$(ProjectName).exe</Command>
</PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="FBO.cpp" /> <ClCompile Include="FBO.cpp" />
@ -79,8 +82,8 @@
<ClInclude Include="utils.h" /> <ClInclude Include="utils.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="res\shader\ambient.fs" />
<None Include="res\shader\ambient.vs" />
<None Include="res\shader\test.fs" />
<None Include="res\shader\test.vs" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">

55
shader3.vcxproj.filters

@ -1,3 +1,56 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="GPUProgram">
<UniqueIdentifier>{e15d0e9c-35fc-45f8-90bd-b46a358d907b}</UniqueIdentifier>
</Filter>
<Filter Include="src">
<UniqueIdentifier>{dbc65808-53cb-4088-a850-19079331f256}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="FBO.cpp">
<Filter>GPUProgram</Filter>
</ClCompile>
<ClCompile Include="FullScreenQuad.cpp">
<Filter>GPUProgram</Filter>
</ClCompile>
<ClCompile Include="GPUProgram.cpp">
<Filter>GPUProgram</Filter>
</ClCompile>
<ClCompile Include="ObjModel.cpp">
<Filter>GPUProgram</Filter>
</ClCompile>
<ClCompile Include="utils.cpp">
<Filter>GPUProgram</Filter>
</ClCompile>
<ClCompile Include="main.cpp">
<Filter>src</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="FBO.h">
<Filter>GPUProgram</Filter>
</ClInclude>
<ClInclude Include="FullScreenQuad.h">
<Filter>GPUProgram</Filter>
</ClInclude>
<ClInclude Include="GPUProgram.h">
<Filter>GPUProgram</Filter>
</ClInclude>
<ClInclude Include="ObjModel.h">
<Filter>GPUProgram</Filter>
</ClInclude>
<ClInclude Include="utils.h">
<Filter>GPUProgram</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="res\shader\test.fs">
<Filter>src</Filter>
</None>
<None Include="res\shader\test.vs">
<Filter>src</Filter>
</None>
</ItemGroup>
</Project> </Project>
Loading…
Cancel
Save