Skip to content
Snippets Groups Projects
Verified Commit 53fbfdb3 authored by Tobias Frisch's avatar Tobias Frisch
Browse files

[#56] Fixed warnings and add parameter to pick shaders for particles

parent 2a1aeb65
No related branches found
No related tags found
1 merge request!45Resolve "Szene-Repräsentation"
Pipeline #26292 passed
......@@ -163,7 +163,7 @@ int main(int argc, const char** argv) {
auto start = std::chrono::system_clock::now();
while (window.isWindowOpen()) {
window.pollEvents();
vkcv::Window::pollEvents();
if(window.getHeight() == 0 || window.getWidth() == 0)
continue;
......
......@@ -12,7 +12,7 @@ const glm::vec3& Particle::getPosition()const{
return m_position;
}
const bool Particle::isAlive()const{
bool Particle::isAlive()const{
return m_lifeTime > 0.f;
}
......
......@@ -17,7 +17,7 @@ public:
void update( const float delta );
const bool isAlive()const;
bool isAlive()const;
void setLifeTime( const float lifeTime );
......
......@@ -58,12 +58,28 @@ int main(int argc, const char **argv) {
return EXIT_FAILURE;
}
// use space or use water
bool useSpace = true;
// use space or use water or gravity
std::string shaderPathCompute = "shaders/shader_space.comp";
std::string shaderPathFragment = "shaders/shader_space.frag";
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "--space") == 0) {
shaderPathCompute = "shaders/shader_space.comp";
shaderPathFragment = "shaders/shader_space.frag";
} else
if (strcmp(argv[i], "--water") == 0) {
shaderPathCompute = "shaders/shader_water.comp";
shaderPathFragment = "shaders/shader_water.frag";
} else
if (strcmp(argv[i], "--gravity") == 0) {
shaderPathCompute = "shaders/shader_gravity.comp";
shaderPathFragment = "shaders/shader_space.frag";
}
}
vkcv::shader::GLSLCompiler compiler;
vkcv::ShaderProgram computeShaderProgram{};
compiler.compile(vkcv::ShaderStage::COMPUTE, useSpace ? "shaders/shader_space.comp" : "shaders/shader_water.comp", [&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
compiler.compile(vkcv::ShaderStage::COMPUTE, shaderPathCompute, [&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
computeShaderProgram.addShader(shaderStage, path);
});
......@@ -81,7 +97,7 @@ int main(int argc, const char **argv) {
compiler.compile(vkcv::ShaderStage::VERTEX, "shaders/shader.vert", [&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
particleShaderProgram.addShader(shaderStage, path);
});
compiler.compile(vkcv::ShaderStage::FRAGMENT, useSpace ? "shaders/shader_space.frag" : "shaders/shader_water.frag", [&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
compiler.compile(vkcv::ShaderStage::FRAGMENT, shaderPathFragment, [&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
particleShaderProgram.addShader(shaderStage, path);
});
......@@ -167,38 +183,16 @@ int main(int argc, const char **argv) {
const vkcv::Mesh renderMesh({vertexBufferBindings}, particleIndexBuffer.getVulkanHandle(),
particleIndexBuffer.getCount());
vkcv::DescriptorSetUsage descriptorUsage(0, core.getDescriptorSet(descriptorSet).vulkanHandle);
//vkcv::DrawcallInfo drawcalls(renderMesh, {vkcv::DescriptorSetUsage(0, core.getDescriptorSet(descriptorSet).vulkanHandle)});
glm::vec2 pos = glm::vec2(0.f);
glm::vec3 spawnPosition = glm::vec3(0.f);
glm::vec4 tempPosition = glm::vec4(0.f);
auto pos = glm::vec2(0.f);
auto spawnPosition = glm::vec3(0.f);
window.e_mouseMove.add([&](double offsetX, double offsetY) {
pos = glm::vec2(static_cast<float>(offsetX), static_cast<float>(offsetY));
// std::cout << offsetX << " , " << offsetY << std::endl;
// borders are assumed to be 0.5
//pos = glm::vec2((pos.x -0.5f * static_cast<float>(window.getWidth()))/static_cast<float>(window.getWidth()), (pos.y -0.5f * static_cast<float>(window.getHeight()))/static_cast<float>(window.getHeight()));
//borders are assumed to be 1
pos.x = (-2 * pos.x + static_cast<float>(window.getWidth())) / static_cast<float>(window.getWidth());
pos.y = (-2 * pos.y + static_cast<float>(window.getHeight())) / static_cast<float>(window.getHeight());
glm::vec4 row1 = glm::row(cameraManager.getCamera(0).getView(), 0);
glm::vec4 row2 = glm::row(cameraManager.getCamera(0).getView(), 1);
glm::vec4 row3 = glm::row(cameraManager.getCamera(0).getView(), 2);
glm::vec4 camera_pos = glm::column(cameraManager.getCamera(0).getView(), 3);
// std::cout << "row1: " << row1.x << ", " << row1.y << ", " << row1.z << std::endl;
// std::cout << "row2: " << row2.x << ", " << row2.y << ", " << row2.z << std::endl;
// std::cout << "row3: " << row3.x << ", " << row3.y << ", " << row3.z << std::endl;
// std::cout << "camerapos: " << camera_pos.x << ", " << camera_pos.y << ", " << camera_pos.z << std::endl;
// std::cout << "camerapos: " << camera_pos.x << ", " << camera_pos.y << ", " << camera_pos.z << std::endl;
//glm::vec4 view_axis = glm::row(cameraManager.getCamera().getView(), 2);
// std::cout << "view_axis: " << view_axis.x << ", " << view_axis.y << ", " << view_axis.z << std::endl;
//std::cout << "Front: " << cameraManager.getCamera().getFront().x << ", " << cameraManager.getCamera().getFront().z << ", " << cameraManager.getCamera().getFront().z << std::endl;
glm::mat4 viewmat = cameraManager.getCamera(0).getView();
spawnPosition = glm::vec3(pos.x, pos.y, 0.f);
tempPosition = glm::vec4(spawnPosition, 1.0f);
spawnPosition = glm::vec3(tempPosition.x, tempPosition.y, tempPosition.z);
particleSystem.setRespawnPos(glm::vec3(-spawnPosition.x, spawnPosition.y, spawnPosition.z));
// std::cout << "respawn pos: " << spawnPosition.x << ", " << spawnPosition.y << ", " << spawnPosition.z << std::endl;
});
std::vector<glm::mat4> modelMatrices;
......@@ -242,7 +236,7 @@ int main(int argc, const char **argv) {
std::uniform_real_distribution<float> rdm = std::uniform_real_distribution<float>(0.95f, 1.05f);
std::default_random_engine rdmEngine;
while (window.isWindowOpen()) {
window.pollEvents();
vkcv::Window::pollEvents();
uint32_t swapchainWidth, swapchainHeight;
if (!core.beginFrame(swapchainWidth, swapchainHeight)) {
......@@ -255,7 +249,6 @@ int main(int argc, const char **argv) {
auto end = std::chrono::system_clock::now();
float deltatime = 0.000001 * static_cast<float>( std::chrono::duration_cast<std::chrono::microseconds>(end - start).count() );
start = end;
// particleSystem.updateParticles(deltatime);
cameraManager.update(deltatime);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment