restore presentation state
This commit is contained in:
parent
90d60a0e48
commit
f7991a3a53
@ -9,12 +9,14 @@ uniform mat4 transformation;
|
|||||||
uniform vec3 position;
|
uniform vec3 position;
|
||||||
uniform vec4 color;
|
uniform vec4 color;
|
||||||
|
|
||||||
|
uniform float engPow;
|
||||||
|
|
||||||
uniform vec3 cameraUp;
|
uniform vec3 cameraUp;
|
||||||
uniform vec3 cameraSide;
|
uniform vec3 cameraSide;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float scale = 0.1f;
|
float scale = 0.05f + engPow/20;
|
||||||
TexCoords = texCoords;
|
TexCoords = texCoords;
|
||||||
ParticleColor = color;
|
ParticleColor = color;
|
||||||
vec3 worldspacePos = cameraSide*vertex.x + cameraUp*vertex.y;
|
vec3 worldspacePos = cameraSide*vertex.x + cameraUp*vertex.y;
|
||||||
|
@ -4,7 +4,7 @@ ParticleGenerator::ParticleGenerator() {
|
|||||||
this->init();
|
this->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ParticleGenerator::Draw(glm::mat4 modelMatrix, GLuint programParticle, GLuint texture, glm::vec3 cameraDir, bool isColour) {
|
void ParticleGenerator::Draw(glm::mat4 modelMatrix, GLuint programParticle, GLuint texture, glm::vec3 cameraDir, bool isColour, float engPow) {
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glDepthMask(GL_FALSE);
|
glDepthMask(GL_FALSE);
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||||
@ -16,6 +16,8 @@ void ParticleGenerator::Draw(glm::mat4 modelMatrix, GLuint programParticle, GLui
|
|||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
glBindTexture(GL_TEXTURE_2D, texture);
|
glBindTexture(GL_TEXTURE_2D, texture);
|
||||||
|
|
||||||
|
|
||||||
|
glUniform1f(glGetUniformLocation(programParticle, "engPow"), engPow);
|
||||||
glUniformMatrix4fv(glGetUniformLocation(programParticle, "transformation"), 1, GL_FALSE, (float*)&(modelMatrix));
|
glUniformMatrix4fv(glGetUniformLocation(programParticle, "transformation"), 1, GL_FALSE, (float*)&(modelMatrix));
|
||||||
glUniform3f(glGetUniformLocation(programParticle, "position"), particle.position.x, particle.position.y + (rand() % 10 - 5) / 500.f, particle.position.z + (rand() % 10 - 5) / 500.f);
|
glUniform3f(glGetUniformLocation(programParticle, "position"), particle.position.x, particle.position.y + (rand() % 10 - 5) / 500.f, particle.position.z + (rand() % 10 - 5) / 500.f);
|
||||||
if (isColour) {
|
if (isColour) {
|
||||||
|
@ -15,7 +15,7 @@ struct Particle {
|
|||||||
|
|
||||||
class ParticleGenerator {
|
class ParticleGenerator {
|
||||||
public:
|
public:
|
||||||
void Draw(glm::mat4 modelMatrix, GLuint programParticle, GLuint texture, glm::vec3 cameraDir, bool isColour);
|
void Draw(glm::mat4 modelMatrix, GLuint programParticle, GLuint texture, glm::vec3 cameraDir, bool isColour, float engPow);
|
||||||
ParticleGenerator();
|
ParticleGenerator();
|
||||||
private:
|
private:
|
||||||
std::vector<Particle> particles;
|
std::vector<Particle> particles;
|
||||||
|
@ -89,6 +89,7 @@ float aspectRatio = 1.f;
|
|||||||
glm::vec3 cameraPos;
|
glm::vec3 cameraPos;
|
||||||
glm::vec3 cameraDir;
|
glm::vec3 cameraDir;
|
||||||
|
|
||||||
|
float lastEnginePower = 0;
|
||||||
|
|
||||||
glm::vec3 spaceshipPos = glm::vec3(-4.0f, 0.0f, 0.0f);
|
glm::vec3 spaceshipPos = glm::vec3(-4.0f, 0.0f, 0.0f);
|
||||||
glm::vec3 spaceshipDir = glm::vec3(1.0f, 0.0f, 0.0f);
|
glm::vec3 spaceshipDir = glm::vec3(1.0f, 0.0f, 0.0f);
|
||||||
@ -150,8 +151,10 @@ void processInput(GLFWwindow* window)
|
|||||||
if (currentState.buttons[GLFW_GAMEPAD_BUTTON_A]==GLFW_PRESS)
|
if (currentState.buttons[GLFW_GAMEPAD_BUTTON_A]==GLFW_PRESS)
|
||||||
engineIs = 2;
|
engineIs = 2;
|
||||||
}
|
}
|
||||||
if(currentState.axes[GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER] > 0.01)
|
if (currentState.axes[GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER] > 0.01) {
|
||||||
spaceshipPos += cameraSpeed * 2 * spaceshipDir * currentState.axes[GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER];
|
spaceshipPos += cameraSpeed * 2 * spaceshipDir * currentState.axes[GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER];
|
||||||
|
lastEnginePower = currentState.axes[GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER];
|
||||||
|
}
|
||||||
if (currentState.axes[GLFW_GAMEPAD_AXIS_LEFT_TRIGGER] > 0.01)
|
if (currentState.axes[GLFW_GAMEPAD_AXIS_LEFT_TRIGGER] > 0.01)
|
||||||
spaceshipPos -= cameraSpeed * 2 * spaceshipDir * currentState.axes[GLFW_GAMEPAD_AXIS_LEFT_TRIGGER];
|
spaceshipPos -= cameraSpeed * 2 * spaceshipDir * currentState.axes[GLFW_GAMEPAD_AXIS_LEFT_TRIGGER];
|
||||||
if (abs(currentState.axes[GLFW_GAMEPAD_AXIS_LEFT_X]) > 0.01)
|
if (abs(currentState.axes[GLFW_GAMEPAD_AXIS_LEFT_X]) > 0.01)
|
||||||
@ -407,8 +410,7 @@ void renderScene(GLFWwindow* window) {
|
|||||||
drawObjectPBR(planetContext, glm::eulerAngleY(time / 3) * glm::translate(glm::vec3(0, 0, -3.f)) * glm::eulerAngleY(-1.5f * time) * glm::scale(glm::vec3(0.1f)), texture::earth_albedo, texture::earth_normal, texture::earth_ao, texture::earth_roughness, texture::earth_metallic);
|
drawObjectPBR(planetContext, glm::eulerAngleY(time / 3) * glm::translate(glm::vec3(0, 0, -3.f)) * glm::eulerAngleY(-1.5f * time) * glm::scale(glm::vec3(0.1f)), texture::earth_albedo, texture::earth_normal, texture::earth_ao, texture::earth_roughness, texture::earth_metallic);
|
||||||
drawObjectPBR(planetContext, glm::eulerAngleY(time / 3) * glm::translate(glm::vec3(0, 0, -3.f)) * glm::eulerAngleY( 2.f * time) * glm::translate(glm::vec3(0.4f, 0, 0.4f)) * glm::eulerAngleY(-0.5f * time) * glm::scale(glm::vec3(0.04f)), texture::moon_albedo, texture::moon_normal, texture::moon_ao, texture::moon_roughness, texture::moon_metallic);
|
drawObjectPBR(planetContext, glm::eulerAngleY(time / 3) * glm::translate(glm::vec3(0, 0, -3.f)) * glm::eulerAngleY( 2.f * time) * glm::translate(glm::vec3(0.4f, 0, 0.4f)) * glm::eulerAngleY(-0.5f * time) * glm::scale(glm::vec3(0.04f)), texture::moon_albedo, texture::moon_normal, texture::moon_ao, texture::moon_roughness, texture::moon_metallic);
|
||||||
|
|
||||||
mainEngine->Draw(createPerspectiveMatrix() * createCameraMatrix() * glm::translate(glm::vec3(0.f, -0.22f, 0.0f)) * glm::translate(cameraPos + 0.2 * cameraDir + glm::vec3(0, 1, 0) * 0.05f), programParticle, texture::particle_fire, cameraDir, engineIs == 2);
|
mainEngine->Draw(createPerspectiveMatrix() * createCameraMatrix() * glm::translate(glm::vec3(0.f, -0.22f, 0.0f)) * glm::translate(cameraPos + 0.2 * cameraDir + glm::vec3(0, 1, 0) * 0.05f), programParticle, texture::particle_fire, cameraDir, engineIs == 2, lastEnginePower);
|
||||||
std::cout << glm::to_string(spaceshipPos) << std::endl;
|
|
||||||
//desired objects end here
|
//desired objects end here
|
||||||
glUseProgram(0);
|
glUseProgram(0);
|
||||||
glfwSwapBuffers(window);
|
glfwSwapBuffers(window);
|
||||||
|
Loading…
Reference in New Issue
Block a user