wip
This commit is contained in:
parent
fb73ec7c7f
commit
e1a41a526d
8 changed files with 38 additions and 33 deletions
|
@ -7,19 +7,19 @@ varying vec2 uv;
|
|||
|
||||
const int gaussRadius = 11;
|
||||
const float gaussFilter[gaussRadius] = float[gaussRadius](
|
||||
0.0402,0.0623,0.0877,0.1120,0.1297,0.1362,0.1297,0.1120,0.0877,0.0623,0.0402
|
||||
0.0402,0.0623,0.0877,0.1120,0.1297,0.1362,0.1297,0.1120,0.0877,0.0623,0.0402
|
||||
);
|
||||
|
||||
uniform vec2 scale;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 texCoord = uv.xy - float(int(gaussRadius/2)) * scale;
|
||||
vec3 color = vec3(0.0, 0.0, 0.0);
|
||||
for (int i=0; i<gaussRadius; ++i) {
|
||||
color += gaussFilter[i] * texture2D(tex, texCoord).xyz;
|
||||
texCoord += scale;
|
||||
}
|
||||
vec2 texCoord = uv.xy - float(int(gaussRadius/2)) * scale;
|
||||
vec3 color = vec3(0.0, 0.0, 0.0);
|
||||
for (int i=0; i<gaussRadius; ++i) {
|
||||
color += gaussFilter[i] * texture2D(tex, texCoord).xyz-0.0002;
|
||||
texCoord += scale;
|
||||
}
|
||||
|
||||
gl_FragColor = vec4(color, 1.0);
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ class GameWindow : public endofthejedi::GLWindow {
|
|||
|
||||
void resize() override
|
||||
{
|
||||
std::cout<<"resize()" << std::endl;
|
||||
//std::cout<<"resize()" << std::endl;
|
||||
|
||||
glViewport(0, 0, getwidth(), getheight());
|
||||
|
||||
|
|
|
@ -153,27 +153,25 @@ void RendererPolygon3d::setup() {
|
|||
|
||||
m_postprocess_fbo.attachTexture(GL_COLOR_ATTACHMENT0,
|
||||
m_postprocess_tex0.getName());
|
||||
renderBackgroundImage();
|
||||
renderBackgroundImage();
|
||||
|
||||
//float s = 0.1;
|
||||
//glClearColor(s, s, 1.2*s, 1.0);
|
||||
//float s = 0.1;
|
||||
//glClearColor(s, s, 1.2*s, 1.0);
|
||||
|
||||
m_shader_game_objects.bind();
|
||||
m_shader_game_objects.bind();
|
||||
|
||||
// TODO: add ONE sun planet
|
||||
// TODO: add lights for explosions
|
||||
// TODO: add ONE sun planet
|
||||
// TODO: add lights for explosions
|
||||
|
||||
configureLightningInShader(&m_shader_game_objects);
|
||||
configureLightningInShader(&m_shader_game_objects);
|
||||
|
||||
//std::cout<<"setting aspect ratio: " << m_aspectRatio << std::endl;
|
||||
//std::cout<<"setting aspect ratio: " << m_aspectRatio << std::endl;
|
||||
|
||||
renderPlanets();
|
||||
renderShips();
|
||||
renderMissiles();
|
||||
|
||||
renderParticles();
|
||||
|
||||
renderTraces();
|
||||
renderPlanets();
|
||||
renderShips();
|
||||
renderMissiles();
|
||||
renderParticles();
|
||||
renderTraces();
|
||||
|
||||
glUniform1f(m_shader_game_objects.location("aspectRatio"), m_aspectRatio);
|
||||
m_postprocess_tex1.bind();
|
||||
|
@ -184,14 +182,12 @@ void RendererPolygon3d::setup() {
|
|||
m_shader_game_objects.bind();
|
||||
configureLightningInShader(&m_shader_game_objects);
|
||||
glUniform1f(m_shader_game_objects.location("aspectRatio"), m_aspectRatio);
|
||||
|
||||
renderPlanets();
|
||||
renderShips();
|
||||
renderMissiles();
|
||||
|
||||
renderParticles();
|
||||
|
||||
renderTraces();
|
||||
|
||||
// postprocessing
|
||||
m_postprocess_shader.bind();
|
||||
//glColor3f(1.0, 0.0, 0.0);
|
||||
|
@ -520,6 +516,10 @@ void RendererPolygon3d::renderPlanets() {
|
|||
m_planetModel->render();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void RendererPolygon3d::renderSun() {
|
||||
m_planetModel->bind();
|
||||
|
@ -553,8 +553,8 @@ void RendererPolygon3d::renderMissiles() {
|
|||
m_missileModel->bind();
|
||||
|
||||
for (const game::Missile *missile : m_missiles) {
|
||||
glm::vec3 c = glm::vec3(1.0, 1.0, 0.3);
|
||||
glUniform3f(m_shader_game_objects.location("materialColor"), c.x, c.y, c.z);
|
||||
glm::vec3 c = glm::vec3(missile->color);
|
||||
glUniform3f(m_shader_game_objects.location("materialColor"), c.x/2, c.y/2, c.z/2);
|
||||
|
||||
// TODO: rename functions so their name represents what args they
|
||||
// take
|
||||
|
@ -665,6 +665,7 @@ void RendererPolygon3d::renderMissiles() {
|
|||
glUseProgram(0);
|
||||
|
||||
// TODO dont use line mode. make that with own quads
|
||||
|
||||
glPolygonMode(GL_FRONT, GL_LINE);
|
||||
for (const game::Trace *trace : m_state->traces) {
|
||||
float fade_out = 1.0;
|
||||
|
@ -680,7 +681,7 @@ void RendererPolygon3d::renderMissiles() {
|
|||
}
|
||||
glEnd();
|
||||
}
|
||||
glLineWidth(1.0f);
|
||||
glLineWidth(1.0f);
|
||||
glPolygonMode(GL_FRONT, GL_FILL);
|
||||
}
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ namespace endofthejedi {
|
|||
void renderMissiles();
|
||||
void renderShips();
|
||||
void renderParticles();
|
||||
void renderText(const char *text, float x, float y, float sx, float sy);
|
||||
|
||||
void addModel(const std::string &filename, PolygonModel **dest);
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ namespace game {
|
|||
state->generateId(),
|
||||
player,
|
||||
player->ship->position,
|
||||
player->color,
|
||||
-util::deg2rad(m_angle),
|
||||
0.005*player->speed);
|
||||
|
||||
|
|
|
@ -11,9 +11,10 @@
|
|||
#include <glm/gtx/norm.hpp>
|
||||
|
||||
namespace game {
|
||||
Missile::Missile(size_t id, Player *player, const glm::vec2 &pos, float angle, float speed)
|
||||
Missile::Missile(size_t id, Player *player, const glm::vec2 &pos, const glm::vec3 &col, float angle, float speed)
|
||||
: Object(id, pos)
|
||||
, player(player)
|
||||
, color(col)
|
||||
{
|
||||
velocity = speed * glm::vec2(std::sin(angle), std::cos(angle));
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ namespace game {
|
|||
size_t planetId;
|
||||
};
|
||||
|
||||
Missile(size_t id, Player *player, const glm::vec2 &pos, float angle, float speed);
|
||||
Missile(size_t id, Player *player, const glm::vec2 &pos, const glm::vec3 &col, float angle, float speed);
|
||||
~Missile();
|
||||
|
||||
// try to advance. if something will be hit, return the first hit in
|
||||
|
@ -68,6 +68,7 @@ namespace game {
|
|||
Player *player; // owner won't be hit by own missiles
|
||||
glm::vec2 velocity;
|
||||
Trace *trace;
|
||||
glm::vec3 color;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -164,10 +164,10 @@ namespace game {
|
|||
Player *player = playerForId(playerId);
|
||||
if (player != nullptr) {
|
||||
for (Missile *missile : player->missiles) {
|
||||
player->missiles.remove(missile);
|
||||
player->missiles.remove(missile);
|
||||
missile->player = nullptr;
|
||||
m_nextEvents.push_back(new MissileEvent(LifeCycle::Destroy, missile));
|
||||
}
|
||||
}
|
||||
|
||||
if (player->ship != nullptr) {
|
||||
ships.remove(player->ship);
|
||||
|
|
Loading…
Reference in a new issue