Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • LayeredRendering
  • NewGraphicSystem
  • main
3 results

Target

Select target project
  • b20017738/fig-project
1 result
Select Git revision
  • LayeredRendering
  • NewGraphicSystem
  • main
3 results
Show changes
Commits on Source (4)
Showing
with 161 additions and 11 deletions
......@@ -24,7 +24,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
if(WIN32)
option(CMAKE_TOOLCHAIN_FILE "C:/vcpkg/vcpkg/scripts/buildsystems/vcpkg.cmake")
elseif(UNIX)
#option(CMAKE_TOOLCHAIN_FILE "/amuhome/b20017738/Bureau/vcpkg/scripts/buildsystems/vcpkg.cmake")
option(CMAKE_TOOLCHAIN_FILE "/amuhome/b20017738/Bureau/vcpkg/scripts/buildsystems/vcpkg.cmake")
endif()
#==============================================================
......@@ -59,9 +59,9 @@ set_property(TARGET ${CURRENT_TARGET} PROPERTY RUNTIME_OUTPUT_DIRECTORY $<1:${CM
target_include_directories(${CURRENT_TARGET} PRIVATE ${INCLUDE})
#list(APPEND CMAKE_PREFIX_PATH "/amuhome/b20017738/Bureau/vcpkg/packages/glew_x64-linux")
#list(APPEND CMAKE_PREFIX_PATH "/amuhome/b20017738/Bureau/vcpkg/packages/glm_x64-linux")
#list(APPEND CMAKE_PREFIX_PATH "/amuhome/b20017738/Bureau/vcpkg/packages/imgui_x64-linux")
list(APPEND CMAKE_PREFIX_PATH "/amuhome/b20017738/Bureau/vcpkg/packages/glew_x64-linux")
list(APPEND CMAKE_PREFIX_PATH "/amuhome/b20017738/Bureau/vcpkg/packages/glm_x64-linux")
list(APPEND CMAKE_PREFIX_PATH "/amuhome/b20017738/Bureau/vcpkg/packages/imgui_x64-linux")
find_package(glfw3 REQUIRED)
find_package(GLEW REQUIRED)
......
......@@ -20,3 +20,6 @@ Release Mode :
```shell
cmake --build ./build --config Release
```
## Source
Type Erasure Inspiration : [Type Erasure - CppCon 2021 - Klaus Iglberger](https://www.youtube.com/watch?v=4eeESJQk-mw&ab_channel=CppCon)
\ No newline at end of file
#version 450 core
out vec4 FragColor;
in vec2 Texture;
uniform sampler2D uSampler;
void main() {
FragColor = texture(uSampler, Texture);
}
\ No newline at end of file
#version 450 core
layout (location = 0) in vec2 aPos;
layout (location = 1) in vec2 aTex;
uniform mat4 uProj;
uniform mat4 uView;
uniform mat4 uModel;
uniform vec4 uData[254];
out vec2 Texture;
out vec2 Color;
void main() {
vec4 usedData = uData[gl_VertexID];
Texture = usedData.zw;
gl_Position = uProj * uView * uModel * vec4(aPos.x + usedData.x, aPos.y + usedData.y, 0.0, 1.0);
}
\ No newline at end of file
#version 450 core
out vec4 FragColor;
uniform sampler2D uSampler[32];
uniform int uTextures[128];
uniform vec4 uFrames[128];
uniform vec2 uSizes[128];
in vec2 Texture;
flat in int Id;
void main() {
vec2 coord = vec2(
(uFrames[Id].x / uSizes[Id].x) + (uFrames[Id].z / uSizes[Id].x) * Texture.x,
(uFrames[Id].y / uSizes[Id].y) + (uFrames[Id].w / uSizes[Id].y) * Texture.y
);
FragColor = texture(uSampler[uTextures[Id]], coord);
}
\ No newline at end of file
#version 450 core
layout (location = 0) in vec2 aPos;
layout (location = 1) in vec2 aTex;
uniform mat4 uModel[128];
uniform mat4 uView;
uniform mat4 uProj;
out vec2 Texture;
flat out int Id;
void main() {
Texture = aTex;
Id = gl_InstanceID;
gl_Position = uProj * uView * uModel[gl_InstanceID] * vec4(aPos.x, aPos.y, 0.0, 1.0);
}
\ No newline at end of file
assets/textures/Cube_Black.png

282 B

assets/textures/Cube_Brown.png

282 B

assets/textures/Cube_Light_Red.png

282 B

assets/textures/Cube_Red2.png

282 B

assets/textures/Neera.png

8.11 KiB

assets/textures/Test.png

36.4 KiB

assets/textures/Tile_Test.png

1.17 KiB

assets/textures/Tile_Test_2.png

2.03 KiB

assets/textures/Tile_Test_3.png

604 B

#pragma once
#include <any>
#include <engine/graphics/back/buffers/VertexArray.hpp>
#include <engine/graphics/back/buffers/VerticeBuffer.hpp>
#include <engine/graphics/back/shaders/Program.hpp>
#include <engine/graphics/front/object/Image.hpp>
#include <engine/graphics/utility/module.hpp>
namespace megu {
class FrameBuffer_Module : public Module<std::any> {
public:
FrameBuffer_Module();
~FrameBuffer_Module() = default;
void render(const Window &, const Camera &, std::any &, const TextureArray &) override;
private:
VertexArray _vao;
VerticeBuffer _vbo;
Program _program;
};
}
\ No newline at end of file
#include "ImageModule.hpp"
#include <engine/graphics/front/object/Image.hpp>
#include <engine/graphics/utility/array_generator.hpp>
namespace megu {
ImageModule::ImageModule()
: _vbo(this->_vao, Quads::Layout(), Quads::Vertices().size(), megu::EditMode::STATIC) {
Source vert("assets/shaders/Image-Instanced-Fat.vert", Source::Categorie::VERTEX);
this->_program.attach(vert);
Source frag("assets/shaders/Texture-Fat.frag", Source::Categorie::FRAGMENT);
this->_program.attach(frag);
this->_program.link();
this->_vbo << Quads::Vertices();
vert.release();
frag.release();
}
void ImageModule::render(Image & image) {
std::cout << "Image !" << std::endl;
}
}
\ No newline at end of file
#pragma once
#include "QuadGraphicModule.hpp"
#include <engine/graphics/back/buffers/VertexArray.hpp>
#include <engine/graphics/back/buffers/VerticeBuffer.hpp>
#include <engine/graphics/back/shaders/Program.hpp>
#include <engine/graphics/front/group/DrawGroup.hpp>
namespace megu {
class FrameBufferGroup : public DrawGroup {
class ImageModule : public virtual QuadGraphicModule {
public:
FrameBufferGroup();
~FrameBufferGroup() = default;
ImageModule();
~ImageModule() = default;
virtual void draw(const Window &, const Camera &, const TextureArray &) const;
virtual void render(Image &) override;
private:
VertexArray _vao;
......
#include "SpriteModule.hpp"
#include <engine/graphics/utility/array_generator.hpp>
#include <engine/graphics/front/object/Sprite.hpp>
#include <iostream>
namespace megu {
SpriteModule::SpriteModule() {
}
void SpriteModule::render(Sprite & sprite) {
std::cout << "Sprite !" << std::endl;
}
}
\ No newline at end of file
#pragma once
#include "QuadGraphicModule.hpp"
#include <engine/graphics/back/buffers/VertexArray.hpp>
#include <engine/graphics/back/buffers/VerticeBuffer.hpp>
#include <engine/graphics/back/shaders/Program.hpp>
namespace megu {
class SpriteModule : public virtual QuadGraphicModule {
public:
SpriteModule();
~SpriteModule() = default;
virtual void render(Sprite &) override;
};
}
\ No newline at end of file