File tree Expand file tree Collapse file tree 10 files changed +101
-6
lines changed
geometry_shader_normal_viewer/src Expand file tree Collapse file tree 10 files changed +101
-6
lines changed Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
88 # Wall: Enable all warnings about constructors
99 # Wextra: Enable some extra warnings
1010 # Werror: Treat all warnings as errors
11- # set(warnings "-Wall -Wextra -Werror")
11+ # set(warnings "-Wall -Wextra -Werror")
1212elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
1313 # W4: Show the most warnings
1414 # WX: Treat all warnings as errors
@@ -55,6 +55,7 @@ add_subdirectory(${PROJECTS_DIR}/read_pixels)
5555add_subdirectory (${PROJECTS_DIR} /point_sprites)
5656add_subdirectory (${PROJECTS_DIR} /phong_lighting)
5757add_subdirectory (${PROJECTS_DIR} /raytracer)
58+ add_subdirectory (${PROJECTS_DIR} /fullscreen_quad)
5859
5960# Create a variable that is set to true and cached after the first configuration
6061set (CONFIGURED_ONCE TRUE CACHE INTERNAL "A flag showing that CMake has configured at least once." )
Original file line number Diff line number Diff line change @@ -75,7 +75,7 @@ class BasicCubeExample : public Application
7575 void setup () override
7676 {
7777 // Set and use cube shader
78- m_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/cube .vert" ).fragment (" ../assets/shaders/cube .frag" ));
78+ m_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/quad .vert" ).fragment (" ../assets/shaders/quad .frag" ));
7979 m_shader->introspect ();
8080 m_shader->use ();
8181
Original file line number Diff line number Diff line change @@ -85,7 +85,7 @@ class ComputeShaderExample : public Application
8585
8686 void load_shaders ()
8787 {
88- m_cube_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/cube .vert" ).fragment (" ../assets/shaders/cube .frag" ));
88+ m_cube_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/quad .vert" ).fragment (" ../assets/shaders/quad .frag" ));
8989 m_full_screen_quad_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/full_screen_quad.vert" ).fragment (" ../assets/shaders/full_screen_quad.frag" ));
9090 m_compute_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().compute (" ../assets/shaders/shader.comp" ));
9191 }
Original file line number Diff line number Diff line change @@ -76,7 +76,7 @@ class FboExample : public Application
7676 void setup () override
7777 {
7878 // Create shaders
79- m_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/cube .vert" ).fragment (" ../assets/shaders/cube .frag" ));
79+ m_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/quad .vert" ).fragment (" ../assets/shaders/quad .frag" ));
8080 m_shader2 = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/cube2.vert" ).fragment (" ../assets/shaders/cube2.frag" ));
8181
8282 // Cube vertex attribute parameters
Original file line number Diff line number Diff line change 1+ # Name for this project
2+ set (PROJECT_NAME "fullscreen_quad" )
3+
4+ # Choose the library for the final build
5+ set (PROJECT_BUILD_DIR ${CMAKE_SOURCE_DIR} /bin/${PROJECT_NAME} )
6+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BUILD_DIR} /$<CONFIG>)
7+
8+ # Set sources
9+ set (PROJECTS_SOURCE_DIR ${CMAKE_SOURCE_DIR} /src/projects)
10+ set (SOURCES
11+ src/main.cpp
12+ ${INCLUDE_DIR} /glad/src/glad.c
13+ ${INCLUDE_DIR} /glm/glm/gtc/matrix_transform.hpp
14+ ${INCLUDE_DIR} /projects/base_app.h
15+ ${INCLUDE_DIR} /projects/glsl_program.h
16+ ${INCLUDE_DIR} /projects/camera.h
17+ ${PROJECTS_SOURCE_DIR} /base_app/base_app.cpp
18+ ${PROJECTS_SOURCE_DIR} /base_app/glsl_program.cpp
19+ ${PROJECTS_SOURCE_DIR} /base_app/camera.cpp
20+ )
21+
22+
23+ add_executable (${PROJECT_NAME} ${SOURCES} )
24+ target_link_libraries (${PROJECT_NAME} ${CMAKE_DL_LIBS} glfw ${GLFW_LIBRARIES} )
25+
26+ # Copy resources
27+ file (COPY ${CMAKE_CURRENT_SOURCE_DIR} /assets DESTINATION ${PROJECT_BUILD_DIR} /)
28+
29+ # Set correct CWD for debugger
30+ if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
31+ set_target_properties (${PROJECT_NAME} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /src)
32+ endif ()
Original file line number Diff line number Diff line change 1+ #version 440 core
2+
3+ layout (location = 0 ) out vec4 frag_color;
4+
5+ uniform float time;
6+
7+ void main()
8+ {
9+ float red_amount = (sin (time * 4.0 ) + 1.0 ) / 2.0 ;
10+ frag_color = vec4 (red_amount, 0.0 , 0.0 , 1.0 );
11+ }
Original file line number Diff line number Diff line change 1+ #version 440 core
2+
3+ const vec2 [4 ] positions = {
4+ {- 1.0 , - 1.0 },
5+ {1.0 , - 1.0 },
6+ {- 1.0 , 1.0 },
7+ {1.0 , 1.0 }
8+ };
9+
10+ void main()
11+ {
12+ gl_Position = vec4 (positions[gl_VertexID ].xy, 0.0 , 1.0 );
13+ }
Original file line number Diff line number Diff line change 1+ // This renders a full screen quad
2+ #include < memory>
3+ #include < vector>
4+
5+ #include " base_app.h"
6+ #include " glsl_program.h"
7+
8+ class FullscreenQuadExample : public Application
9+ {
10+ private:
11+ GLuint m_vao { 0 };
12+ const GLuint m_num_vertices{ 4 };
13+ std::unique_ptr<GlslProgram> m_shader;
14+
15+ void setup () override
16+ {
17+ // Create shader
18+ m_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/quad.vert" ).fragment (" ../assets/shaders/quad.frag" ));
19+ m_shader->use ();
20+ m_shader->introspect ();
21+
22+ // Setup and bind a VAO
23+ glCreateVertexArrays (1 , &m_vao);
24+ glBindVertexArray (m_vao);
25+ }
26+
27+ void render (double current_time) override
28+ {
29+ m_shader->uniform (" time" , static_cast <float >(current_time));
30+ glDrawArrays (GL_TRIANGLE_STRIP, 0 , m_num_vertices);
31+ };
32+ };
33+
34+ int main (int argc, char * argv[])
35+ {
36+ std::unique_ptr<Application> app{ new FullscreenQuadExample };
37+ app->run ();
38+ }
Original file line number Diff line number Diff line change @@ -86,7 +86,7 @@ class GeometryShaderExample : public Application
8686 void setup () override
8787 {
8888 // Create shaders
89- m_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/cube .vert" ).fragment (" ../assets/shaders/cube .frag" ));
89+ m_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/quad .vert" ).fragment (" ../assets/shaders/quad .frag" ));
9090 m_normal_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/normal_viewer.vert" ).fragment (" ../assets/shaders/normal_viewer.frag" ).geometry (" ../assets/shaders/normal_viewer.geom" ));
9191
9292 // Cube position vertex attribute parameters
Original file line number Diff line number Diff line change @@ -169,7 +169,7 @@ class ReadPixelsExample : public Application
169169 m_data_size = ((m_info.window_width * 3 + 3 ) & ~3 ) * m_info.window_height ;
170170
171171 // Create shader
172- m_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/cube .vert" ).fragment (" ../assets/shaders/cube .frag" ));
172+ m_shader = std::make_unique<GlslProgram>(GlslProgram::Format ().vertex (" ../assets/shaders/quad .vert" ).fragment (" ../assets/shaders/quad .frag" ));
173173
174174 // Cube vertex attribute parameters
175175 const GLuint elements_per_face{ 6 };
You can’t perform that action at this time.
0 commit comments