add shot-ring shader and create shot-ring attributes buffer
This commit is contained in:
parent
ba0bc9b77d
commit
741a325a5f
5
assets/fs/shaders/shot-ring.f.glsl
Normal file
5
assets/fs/shaders/shot-ring.f.glsl
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
gl_FragColor = vec4(1.0, 0.1, 0.1, 1.0);
|
||||||
|
}
|
13
assets/fs/shaders/shot-ring.v.glsl
Normal file
13
assets/fs/shaders/shot-ring.v.glsl
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
uniform mat4 projection;
|
||||||
|
uniform mat4 modelview;
|
||||||
|
uniform float scale;
|
||||||
|
|
||||||
|
/* pos.xyz is position, pos.w is offset */
|
||||||
|
attribute vec4 pos;
|
||||||
|
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
vec3 pos3 = pos.xyz * (scale + pos.w);
|
||||||
|
gl_Position = projection * modelview * vec4(pos3, 1);
|
||||||
|
}
|
@ -17,6 +17,8 @@ using namespace std;
|
|||||||
#define SKY_DIST 2000
|
#define SKY_DIST 2000
|
||||||
#define NUM_SKY_STEPS 9
|
#define NUM_SKY_STEPS 9
|
||||||
#define LAVA_SIZE 100
|
#define LAVA_SIZE 100
|
||||||
|
#define SHOT_RING_WIDTH 20.0f
|
||||||
|
#define NUM_SHOT_RING_STEPS 24
|
||||||
|
|
||||||
/* points of a horizontal hexagon 1.0 units high */
|
/* points of a horizontal hexagon 1.0 units high */
|
||||||
static const float overlay_hex_attributes[][3] = {
|
static const float overlay_hex_attributes[][3] = {
|
||||||
@ -183,6 +185,29 @@ bool Client::initgl()
|
|||||||
cerr << "Error creating sky attribute buffer" << endl;
|
cerr << "Error creating sky attribute buffer" << endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
vector<GLfloat> shot_ring_attributes((NUM_SHOT_RING_STEPS + 1) * 2 * 4);
|
||||||
|
for (int i = 0, idx = 0; i <= NUM_SHOT_RING_STEPS; i++)
|
||||||
|
{
|
||||||
|
double angle = i * M_PI * 2.0 / NUM_SHOT_RING_STEPS;
|
||||||
|
GLfloat x = sin(angle);
|
||||||
|
GLfloat y = cos(angle);
|
||||||
|
shot_ring_attributes[idx++] = x;
|
||||||
|
shot_ring_attributes[idx++] = y;
|
||||||
|
shot_ring_attributes[idx++] = 0.0f;
|
||||||
|
shot_ring_attributes[idx++] = 0.0f;
|
||||||
|
|
||||||
|
shot_ring_attributes[idx++] = x;
|
||||||
|
shot_ring_attributes[idx++] = y;
|
||||||
|
shot_ring_attributes[idx++] = 0.0f;
|
||||||
|
shot_ring_attributes[idx++] = SHOT_RING_WIDTH;
|
||||||
|
}
|
||||||
|
if (!m_shot_ring_attributes.create(GL_ARRAY_BUFFER, GL_STATIC_DRAW,
|
||||||
|
&shot_ring_attributes[0],
|
||||||
|
sizeof(shot_ring_attributes[0]) * shot_ring_attributes.size()))
|
||||||
|
{
|
||||||
|
cerr << "Error creating shot ring attributes buffer" << endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
unsigned int lava_texture_length;
|
unsigned int lava_texture_length;
|
||||||
const uint8_t *lava_texture = CFS.get_file("textures/lava.jpg",
|
const uint8_t *lava_texture = CFS.get_file("textures/lava.jpg",
|
||||||
&lava_texture_length);
|
&lava_texture_length);
|
||||||
|
@ -52,6 +52,7 @@ class Client
|
|||||||
GLBuffer m_sky_attributes;
|
GLBuffer m_sky_attributes;
|
||||||
GLBuffer m_tex_quad_attributes;
|
GLBuffer m_tex_quad_attributes;
|
||||||
GLBuffer m_quad_attributes;
|
GLBuffer m_quad_attributes;
|
||||||
|
GLBuffer m_shot_ring_attributes;
|
||||||
refptr<Network> m_net_client;
|
refptr<Network> m_net_client;
|
||||||
bool client_has_focus;
|
bool client_has_focus;
|
||||||
sf::Texture m_lava_texture;
|
sf::Texture m_lava_texture;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user