Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
-VisualStudioVersion = 14.0.25029.0
+VisualStudioVersion = 14.0.25123.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Weave", "Weave\Weave.vcxproj", "{A2F0B06D-880C-4B90-9D4B-8B174418E1BE}"
EndProject
shader\blur_FS.hlsl = shader\blur_FS.hlsl
shader\lightingTexture_FS.hlsl = shader\lightingTexture_FS.hlsl
shader\perspective_VS.hlsl = shader\perspective_VS.hlsl
+ shader\shadowmapDir_FS.hlsl = shader\shadowmapDir_FS.hlsl
+ shader\shadowmapDir_VS.hlsl = shader\shadowmapDir_VS.hlsl
shader\skybox_VS.hlsl = shader\skybox_VS.hlsl
shader\skyplane_color_FS.hlsl = shader\skyplane_color_FS.hlsl
shader\skyplane_FS.hlsl = shader\skyplane_FS.hlsl
glClear(GL_ACCUM_BUFFER_BIT);\r
\r
shader_BBox = new Shader("basic_VS.hlsl", "basic_FS.hlsl");\r
+ shadow_dir = new Shader("shadowmapDir_VS.hlsl", "shadowmapDir_FS.hlsl");\r
}\r
\r
void Graphix::FullScreen(bool _enable, bool _keepDesktopResolution)\r
void Graphix::cleanup()\r
{\r
delete shader_BBox;\r
+ delete shadow_dir;\r
\r
//SDL_SetWindowGrab(sdl_window, SDL_FALSE);\r
\r
short Graphix::effects = EF_TRANSPARENCY;\r
\r
Shader* Graphix::shader_BBox;\r
+Shader* Graphix::shadow_dir;\r
static unsigned int getGlError();
static Shader* shader_BBox;
+ static Shader* shadow_dir;
private:
view_angle_x(0),
view_angle_y(0),
view_dist(2),
- view(0.f)
+ view(0.f),
+ shadow_dist(2)
{
rotateView(0.f, -.5f);
}
glUniformMatrix4fv(tmp, 1, false, value_ptr(translate(view,-pos)));
}
+void ViewPort::bindViewShadowDir(Shader* shader) const {
+ shader->useShader();
+ int tmp = -1;
+
+ tmp = shader->getUniformLocation("uProjection");
+ if (tmp >= 0)
+ glUniformMatrix4fv(tmp, 1, false, value_ptr(glm::mat4(1 / shadow_dist)));
+
+ tmp = shader->getUniformLocation("uInvProjection");
+ if (tmp >= 0)
+ glUniformMatrix4fv(tmp, 1, false, value_ptr(glm::mat4(shadow_dist)));
+
+ tmp = shader->getUniformLocation("uView");
+ if (tmp >= 0)
+ //TODO the real thing
+ glUniformMatrix4fv(tmp, 1, false, value_ptr(view));
+}
+
void ViewPort::rotateView(float angle_x, float angle_y){
if (angle_y || angle_x){
void bindView(Shader* shader) const;
void bindView(Shader* shader, vec3 lookat) const;
+ void bindViewShadowDir(Shader* shader) const;
void rotateView(float angle_x, float angle_y);
vec3 rotateDirection(const vec3 & direction) const;
float view_angle_x;
float view_angle_y;
+ float shadow_dist;
};
{
viewPort.useViewPort();
+ //Directional Light Shadow
+ viewPort.bindViewShadowDir(Graphix::shadow_dir);
//Skybox
viewPort.bindView(SkyBox.getShader(), lookat->getPosition() + vec3(0.0f, 1.0f, 0.0f));
//BBox
--- /dev/null
+//Fragment Shader
+#version 330
+
+void main()
+{
+ gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
+}
+
--- /dev/null
+//Vertex Shader
+#version 330
+
+in vec3 aNormal, aPosition;
+in vec2 aUV;
+
+uniform mat4 uProjection, uView, uModel = mat4(1.f);
+
+void main()
+{
+ gl_Position = uProjection * uView * uModel * vec4(aPosition, 1);
+}