2012-05-05 20:06:34 -05:00
|
|
|
/**
|
|
|
|
* Powder Toy - graphics (header)
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 3 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
2010-09-27 05:53:05 -05:00
|
|
|
#ifndef GRAPHICS_H
|
|
|
|
#define GRAPHICS_H
|
|
|
|
#include <SDL/SDL.h>
|
|
|
|
#include "defines.h"
|
|
|
|
|
|
|
|
#ifdef PIX16
|
|
|
|
#define PIXELSIZE 2
|
|
|
|
#define PIXPACK(x) ((((x)>>8)&0xF800)|(((x)>>5)&0x07E0)|(((x)>>3)&0x001F))
|
|
|
|
#define PIXRGB(r,g,b) ((((r)<<8)&0xF800)|(((g)<<3)&0x07E0)|(((b)>>3)&0x001F))
|
|
|
|
#define PIXR(x) (((x)>>8)&0xF8)
|
|
|
|
#define PIXG(x) (((x)>>3)&0xFC)
|
|
|
|
#define PIXB(x) (((x)<<3)&0xF8)
|
|
|
|
#else
|
|
|
|
#define PIXELSIZE 4
|
|
|
|
#ifdef PIX32BGR
|
|
|
|
#define PIXPACK(x) ((((x)>>16)&0x0000FF)|((x)&0x00FF00)|(((x)<<16)&0xFF0000))
|
|
|
|
#define PIXRGB(r,g,b) (((b)<<16)|((g)<<8)|((r)))// (((b)<<16)|((g)<<8)|(r))
|
|
|
|
#define PIXR(x) ((x)&0xFF)
|
|
|
|
#define PIXG(x) (((x)>>8)&0xFF)
|
|
|
|
#define PIXB(x) ((x)>>16)
|
|
|
|
#else
|
|
|
|
#ifdef PIX32BGRA
|
|
|
|
#define PIXPACK(x) ((((x)>>8)&0x0000FF00)|(((x)<<8)&0x00FF0000)|(((x)<<24)&0xFF000000))
|
|
|
|
#define PIXRGB(r,g,b) (((b)<<24)|((g)<<16)|((r)<<8))
|
|
|
|
#define PIXR(x) (((x)>>8)&0xFF)
|
|
|
|
#define PIXG(x) (((x)>>16)&0xFF)
|
|
|
|
#define PIXB(x) (((x)>>24))
|
2011-10-18 15:56:32 -05:00
|
|
|
#elif defined(PIX32OGL)
|
|
|
|
#define PIXPACK(x) (0xFF000000|((x)&0xFFFFFF))
|
|
|
|
#define PIXRGB(r,g,b) (0xFF000000|((r)<<16)|((g)<<8)|((b)))// (((b)<<16)|((g)<<8)|(r))
|
2011-10-20 09:37:21 -05:00
|
|
|
#define PIXRGBA(r,g,b,a) (((a)<<24)|((r)<<16)|((g)<<8)|((b)))// (((b)<<16)|((g)<<8)|(r))
|
|
|
|
#define PIXA(x) (((x)>>24)&0xFF)
|
2011-10-18 15:56:32 -05:00
|
|
|
#define PIXR(x) (((x)>>16)&0xFF)
|
2011-10-13 16:25:06 -05:00
|
|
|
#define PIXG(x) (((x)>>8)&0xFF)
|
2011-10-18 15:56:32 -05:00
|
|
|
#define PIXB(x) ((x)&0xFF)
|
2010-09-27 05:53:05 -05:00
|
|
|
#else
|
|
|
|
#define PIXPACK(x) (x)
|
|
|
|
#define PIXRGB(r,g,b) (((r)<<16)|((g)<<8)|(b))
|
|
|
|
#define PIXR(x) ((x)>>16)
|
|
|
|
#define PIXG(x) (((x)>>8)&0xFF)
|
|
|
|
#define PIXB(x) ((x)&0xFF)
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
2011-10-10 17:41:19 -05:00
|
|
|
extern int emp_decor;
|
|
|
|
|
2011-11-12 14:44:15 -06:00
|
|
|
extern unsigned int *render_modes;
|
|
|
|
extern unsigned int render_mode;
|
|
|
|
extern unsigned int colour_mode;
|
|
|
|
extern unsigned int *display_modes;
|
|
|
|
extern unsigned int display_mode;
|
|
|
|
|
2010-09-27 05:53:05 -05:00
|
|
|
extern SDL_Surface *sdl_scrn;
|
|
|
|
extern int sdl_scale;
|
|
|
|
|
2011-10-09 07:55:16 -05:00
|
|
|
extern int sandcolour_r;
|
|
|
|
extern int sandcolour_g;
|
|
|
|
extern int sandcolour_b;
|
|
|
|
extern int sandcolour_frame;
|
|
|
|
|
2010-09-27 05:53:05 -05:00
|
|
|
extern unsigned char fire_r[YRES/CELL][XRES/CELL];
|
|
|
|
extern unsigned char fire_g[YRES/CELL][XRES/CELL];
|
|
|
|
extern unsigned char fire_b[YRES/CELL][XRES/CELL];
|
|
|
|
|
|
|
|
extern unsigned int fire_alpha[CELL*3][CELL*3];
|
2011-02-19 09:34:04 -06:00
|
|
|
extern pixel *pers_bg;
|
2010-09-27 05:53:05 -05:00
|
|
|
|
2011-10-24 11:20:18 -05:00
|
|
|
extern char * flm_data;
|
2011-10-25 05:31:21 -05:00
|
|
|
extern int flm_data_points;
|
2011-10-24 11:20:18 -05:00
|
|
|
extern pixel flm_data_colours[];
|
|
|
|
extern float flm_data_pos[];
|
|
|
|
|
|
|
|
extern char * plasma_data;
|
2011-10-25 05:31:21 -05:00
|
|
|
extern int plasma_data_points;
|
2011-10-24 11:20:18 -05:00
|
|
|
extern pixel plasma_data_colours[];
|
|
|
|
extern float plasma_data_pos[];
|
|
|
|
|
2011-10-23 07:52:26 -05:00
|
|
|
struct gcache_item
|
|
|
|
{
|
|
|
|
int isready;
|
|
|
|
int pixel_mode;
|
2011-10-28 17:48:57 -05:00
|
|
|
int cola, colr, colg, colb;
|
2011-10-23 07:52:26 -05:00
|
|
|
int firea, firer, fireg, fireb;
|
|
|
|
};
|
|
|
|
typedef struct gcache_item gcache_item;
|
|
|
|
|
|
|
|
gcache_item *graphicscache;
|
|
|
|
|
|
|
|
void prepare_graphicscache();
|
|
|
|
|
2011-10-24 11:20:18 -05:00
|
|
|
char * generate_gradient(pixel * colours, float * points, int pointcount, int size);
|
|
|
|
|
2011-10-10 17:41:19 -05:00
|
|
|
void draw_other(pixel *vid);
|
|
|
|
|
2011-06-09 11:53:41 -05:00
|
|
|
void draw_rgba_image(pixel *vid, unsigned char *data, int x, int y, float a);
|
|
|
|
|
2011-05-28 07:49:07 -05:00
|
|
|
void *ptif_pack(pixel *src, int w, int h, int *result_size);
|
|
|
|
|
|
|
|
pixel *ptif_unpack(void *datain, int size, int *w, int *h);
|
|
|
|
|
2011-06-08 07:30:39 -05:00
|
|
|
pixel *resample_img_nn(pixel *src, int sw, int sh, int rw, int rh);
|
|
|
|
|
2011-05-28 08:19:01 -05:00
|
|
|
pixel *resample_img(pixel *src, int sw, int sh, int rw, int rh);
|
|
|
|
|
2010-09-27 05:53:05 -05:00
|
|
|
pixel *rescale_img(pixel *src, int sw, int sh, int *qw, int *qh, int f);
|
|
|
|
|
2011-07-18 17:58:08 -05:00
|
|
|
void render_gravlensing(pixel *src, pixel * dst);
|
|
|
|
|
2010-09-27 05:53:05 -05:00
|
|
|
void sdl_blit_1(int x, int y, int w, int h, pixel *src, int pitch);
|
|
|
|
|
|
|
|
void sdl_blit_2(int x, int y, int w, int h, pixel *src, int pitch);
|
|
|
|
|
|
|
|
void sdl_blit(int x, int y, int w, int h, pixel *src, int pitch);
|
|
|
|
|
|
|
|
void drawblob(pixel *vid, int x, int y, unsigned char cr, unsigned char cg, unsigned char cb);
|
|
|
|
|
|
|
|
void draw_tool(pixel *vid_buf, int b, int sl, int sr, unsigned pc, unsigned iswall);
|
|
|
|
|
|
|
|
int draw_tool_xy(pixel *vid_buf, int x, int y, int b, unsigned pc);
|
|
|
|
|
|
|
|
void draw_menu(pixel *vid_buf, int i, int hover);
|
|
|
|
|
2011-04-08 09:28:57 -05:00
|
|
|
void drawpixel(pixel *vid, int x, int y, int r, int g, int b, int a);
|
2010-09-27 05:53:05 -05:00
|
|
|
|
2011-11-12 14:44:15 -06:00
|
|
|
int addchar(pixel *vid, int x, int y, int c, int r, int g, int b, int a);
|
|
|
|
|
2011-04-08 09:28:57 -05:00
|
|
|
int drawchar(pixel *vid, int x, int y, int c, int r, int g, int b, int a);
|
2010-09-27 05:53:05 -05:00
|
|
|
|
|
|
|
int drawtext(pixel *vid, int x, int y, const char *s, int r, int g, int b, int a);
|
|
|
|
|
2011-08-14 12:31:48 -05:00
|
|
|
int drawtext_outline(pixel *vid, int x, int y, const char *s, int r, int g, int b, int a, int or, int og, int ob, int oa);
|
|
|
|
|
2010-10-20 16:31:19 -05:00
|
|
|
int drawtextwrap(pixel *vid, int x, int y, int w, const char *s, int r, int g, int b, int a);
|
|
|
|
|
2010-09-27 05:53:05 -05:00
|
|
|
void drawrect(pixel *vid, int x, int y, int w, int h, int r, int g, int b, int a);
|
|
|
|
|
|
|
|
void fillrect(pixel *vid, int x, int y, int w, int h, int r, int g, int b, int a);
|
|
|
|
|
|
|
|
void clearrect(pixel *vid, int x, int y, int w, int h);
|
|
|
|
|
|
|
|
void drawdots(pixel *vid, int x, int y, int h, int r, int g, int b, int a);
|
|
|
|
|
|
|
|
int textwidth(char *s);
|
|
|
|
|
|
|
|
int drawtextmax(pixel *vid, int x, int y, int w, char *s, int r, int g, int b, int a);
|
|
|
|
|
|
|
|
int textnwidth(char *s, int n);
|
|
|
|
|
2010-11-03 10:51:02 -05:00
|
|
|
void textnpos(char *s, int n, int w, int *cx, int *cy);
|
2010-10-21 17:49:45 -05:00
|
|
|
|
2010-09-27 05:53:05 -05:00
|
|
|
int textwidthx(char *s, int w);
|
|
|
|
|
2010-11-03 10:51:02 -05:00
|
|
|
int textposxy(char *s, int width, int w, int h);
|
2011-04-08 09:28:57 -05:00
|
|
|
|
2011-04-02 09:49:06 -05:00
|
|
|
int textwrapheight(char *s, int width);
|
2010-11-03 10:51:02 -05:00
|
|
|
|
2010-10-21 17:49:45 -05:00
|
|
|
void blendpixel(pixel *vid, int x, int y, int r, int g, int b, int a);
|
2010-09-27 05:53:05 -05:00
|
|
|
|
|
|
|
void draw_icon(pixel *vid_buf, int x, int y, char ch, int flag);
|
|
|
|
|
|
|
|
void draw_air(pixel *vid);
|
|
|
|
|
2011-06-09 16:35:00 -05:00
|
|
|
void draw_grav_zones(pixel *vid);
|
|
|
|
|
2011-04-22 11:06:09 -05:00
|
|
|
void draw_grav(pixel *vid);
|
|
|
|
|
2010-09-27 05:53:05 -05:00
|
|
|
void draw_line(pixel *vid, int x1, int y1, int x2, int y2, int r, int g, int b, int a);
|
|
|
|
|
|
|
|
void addpixel(pixel *vid, int x, int y, int r, int g, int b, int a);
|
|
|
|
|
|
|
|
void xor_pixel(int x, int y, pixel *vid);
|
|
|
|
|
|
|
|
void xor_line(int x1, int y1, int x2, int y2, pixel *vid);
|
|
|
|
|
|
|
|
void xor_rect(pixel *vid, int x, int y, int w, int h);
|
|
|
|
|
2011-08-14 12:31:48 -05:00
|
|
|
void blend_line(pixel *vid, int x1, int y1, int x2, int y2, int r, int g, int b, int a);
|
|
|
|
|
2011-10-10 14:42:55 -05:00
|
|
|
void render_parts(pixel *vid);
|
|
|
|
|
2011-11-08 06:35:07 -06:00
|
|
|
#ifdef OGLR
|
|
|
|
void draw_parts_fbo();
|
|
|
|
#endif
|
|
|
|
|
2010-09-27 05:53:05 -05:00
|
|
|
void draw_parts(pixel *vid);
|
2011-04-08 09:28:57 -05:00
|
|
|
|
2011-05-14 07:28:02 -05:00
|
|
|
void draw_walls(pixel *vid);
|
|
|
|
|
2011-09-19 16:02:04 -05:00
|
|
|
void create_decorations(int x, int y, int rx, int ry, int r, int g, int b, int click, int tool);
|
2011-05-29 21:18:47 -05:00
|
|
|
|
2011-09-19 16:02:04 -05:00
|
|
|
void create_decoration(int x, int y, int r, int g, int b, int click, int tool);
|
2011-05-29 21:18:47 -05:00
|
|
|
|
2011-09-19 16:02:04 -05:00
|
|
|
void line_decorations(int x1, int y1, int x2, int y2, int rx, int ry, int r, int g, int b, int click, int tool);
|
|
|
|
|
|
|
|
void box_decorations(int x1, int y1, int x2, int y2, int r, int g, int b, int click, int tool);
|
|
|
|
|
|
|
|
void draw_color_menu(pixel *vid_buf, int i, int hover);
|
2011-05-29 21:18:47 -05:00
|
|
|
|
2011-03-15 10:28:32 -05:00
|
|
|
void draw_wavelengths(pixel *vid, int x, int y, int h, int wl);
|
2011-04-08 09:28:57 -05:00
|
|
|
|
2010-09-27 05:53:05 -05:00
|
|
|
void render_signs(pixel *vid_buf);
|
|
|
|
|
|
|
|
void render_fire(pixel *dst);
|
|
|
|
|
2011-08-11 07:02:00 -05:00
|
|
|
void prepare_alpha(int size, float intensity);
|
2010-09-27 05:53:05 -05:00
|
|
|
|
|
|
|
void draw_image(pixel *vid, pixel *img, int x, int y, int w, int h, int a);
|
|
|
|
|
|
|
|
void dim_copy(pixel *dst, pixel *src);
|
|
|
|
|
2010-12-19 08:20:38 -06:00
|
|
|
void dim_copy_pers(pixel *dst, pixel *src);
|
|
|
|
|
2010-09-27 05:53:05 -05:00
|
|
|
void render_zoom(pixel *img);
|
|
|
|
|
|
|
|
int render_thumb(void *thumb, int size, int bzip2, pixel *vid_buf, int px, int py, int scl);
|
|
|
|
|
2010-12-05 09:49:48 -06:00
|
|
|
void render_cursor(pixel *vid, int x, int y, int t, int rx, int ry);
|
2010-09-27 05:53:05 -05:00
|
|
|
|
2011-05-24 08:54:14 -05:00
|
|
|
int sdl_open(void);
|
2010-09-27 05:53:05 -05:00
|
|
|
|
2011-08-19 10:13:36 -05:00
|
|
|
int draw_debug_info(pixel* vid, int lm, int lx, int ly, int cx, int cy, int line_x, int line_y);
|
2011-08-11 14:12:52 -05:00
|
|
|
|
2012-03-26 09:56:16 -05:00
|
|
|
void init_display_modes();
|
|
|
|
void update_display_modes();
|
|
|
|
|
2011-10-18 15:56:32 -05:00
|
|
|
#ifdef OGLR
|
|
|
|
void clearScreen(float alpha);
|
|
|
|
void ogl_blit(int x, int y, int w, int h, pixel *src, int pitch, int scale);
|
2010-09-27 05:53:05 -05:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|
2011-10-20 10:28:49 -05:00
|
|
|
|
|
|
|
#ifdef INCLUDE_SHADERS
|
2011-10-24 11:20:18 -05:00
|
|
|
#ifndef SHADERS_H
|
|
|
|
#define SHADERS_H
|
2011-11-04 15:07:51 -05:00
|
|
|
const char * fireFragment = "#version 120\n\
|
|
|
|
uniform sampler2D fireAlpha;\
|
2011-10-20 10:28:49 -05:00
|
|
|
void main () {\
|
|
|
|
vec4 texColor = texture2D(fireAlpha, gl_PointCoord);\
|
|
|
|
gl_FragColor = vec4(gl_Color.rgb, texColor.a*gl_Color.a);\
|
|
|
|
}";
|
2011-11-04 15:07:51 -05:00
|
|
|
const char * fireVertex = "#version 120\n\
|
|
|
|
void main(void)\
|
2011-10-20 10:28:49 -05:00
|
|
|
{\
|
|
|
|
gl_Position = ftransform();;\
|
|
|
|
gl_FrontColor = gl_Color;\
|
|
|
|
}";
|
2011-11-04 15:07:51 -05:00
|
|
|
const char * lensFragment = "#version 120\n\
|
|
|
|
uniform sampler2D pTex;\
|
2011-10-22 13:24:32 -05:00
|
|
|
uniform sampler2D tfX;\
|
|
|
|
uniform sampler2D tfY;\
|
2011-11-04 15:07:51 -05:00
|
|
|
uniform float xres;\
|
|
|
|
uniform float yres;\
|
2011-10-22 13:24:32 -05:00
|
|
|
void main () {\
|
2012-05-11 19:35:55 -05:00
|
|
|
vec4 transformX = texture2D(tfX, vec2(gl_TexCoord[0].s, gl_TexCoord[0].t));\
|
|
|
|
vec4 transformY = texture2D(tfY, vec2(gl_TexCoord[0].s, gl_TexCoord[0].t));\
|
|
|
|
transformX.r /= xres/4.0;\
|
|
|
|
transformY.g /= yres/4.0;\
|
|
|
|
vec4 texColor1 = vec4(\
|
|
|
|
texture2D(pTex, gl_TexCoord[0].st-vec2(transformX.r*0.90, transformY.g*0.90)).r,\
|
|
|
|
texture2D(pTex, gl_TexCoord[0].st-vec2(transformX.r*0.80, transformY.g*0.80)).g,\
|
|
|
|
texture2D(pTex, gl_TexCoord[0].st-vec2(transformX.r*0.70, transformY.g*0.70)).b,\
|
2011-10-22 13:24:32 -05:00
|
|
|
1.0\
|
|
|
|
);\
|
2012-05-11 19:35:55 -05:00
|
|
|
vec4 texColor2 = vec4(\
|
|
|
|
texture2D(pTex, gl_TexCoord[0].st-vec2(transformX.r*0.95, transformY.g*0.95)).r,\
|
|
|
|
texture2D(pTex, gl_TexCoord[0].st-vec2(transformX.r*0.85, transformY.g*0.85)).g,\
|
|
|
|
texture2D(pTex, gl_TexCoord[0].st-vec2(transformX.r*0.75, transformY.g*0.75)).b,\
|
|
|
|
1.0\
|
|
|
|
);\
|
|
|
|
vec4 texColor3 = vec4(\
|
|
|
|
texture2D(pTex, gl_TexCoord[0].st-vec2(transformX.r*0.85, transformY.g*0.85)).r,\
|
|
|
|
texture2D(pTex, gl_TexCoord[0].st-vec2(transformX.r*0.75, transformY.g*0.75)).g,\
|
|
|
|
texture2D(pTex, gl_TexCoord[0].st-vec2(transformX.r*0.65, transformY.g*0.65)).b,\
|
|
|
|
1.0\
|
|
|
|
);\
|
|
|
|
vec4 texColor = texColor1*0.6 + texColor2*0.2 + texColor3*0.2;\
|
2011-10-22 13:24:32 -05:00
|
|
|
gl_FragColor = texColor;\
|
|
|
|
}";
|
2011-11-04 15:07:51 -05:00
|
|
|
const char * lensVertex = "#version 120\n\
|
|
|
|
void main(void)\
|
2011-10-22 13:24:32 -05:00
|
|
|
{\
|
|
|
|
gl_TexCoord[0] = gl_MultiTexCoord0;\
|
|
|
|
gl_Position = ftransform();;\
|
|
|
|
gl_FrontColor = gl_Color;\
|
|
|
|
}";
|
2011-11-04 15:07:51 -05:00
|
|
|
const char * airVFragment = "#version 120\n\
|
|
|
|
uniform sampler2D airX;\
|
2011-10-22 13:24:32 -05:00
|
|
|
uniform sampler2D airY;\
|
|
|
|
uniform sampler2D airP;\
|
|
|
|
void main () {\
|
|
|
|
vec4 texX = texture2D(airX, gl_TexCoord[0].st);\
|
|
|
|
vec4 texY = texture2D(airY, gl_TexCoord[0].st);\
|
|
|
|
vec4 texP = texture2D(airP, gl_TexCoord[0].st);\
|
2011-11-02 14:37:52 -05:00
|
|
|
gl_FragColor = vec4(abs(texX.r)/2.0, texP.b/2.0, abs(texY.g)/2.0, 1.0);\
|
2011-10-22 13:24:32 -05:00
|
|
|
}";
|
2011-11-04 15:07:51 -05:00
|
|
|
const char * airVVertex = "#version 120\n\
|
|
|
|
void main(void)\
|
2011-11-02 14:37:52 -05:00
|
|
|
{\
|
|
|
|
gl_TexCoord[0] = gl_MultiTexCoord0;\
|
|
|
|
gl_Position = ftransform();;\
|
|
|
|
gl_FrontColor = gl_Color;\
|
|
|
|
}";
|
2011-11-04 15:07:51 -05:00
|
|
|
const char * airPFragment = "#version 120\n\
|
|
|
|
uniform sampler2D airX;\
|
2011-11-02 14:37:52 -05:00
|
|
|
uniform sampler2D airY;\
|
|
|
|
uniform sampler2D airP;\
|
|
|
|
void main () {\
|
|
|
|
vec4 texP = texture2D(airP, gl_TexCoord[0].st);\
|
|
|
|
gl_FragColor = vec4(max(texP.b/2.0, 0), 0, abs(min(texP.b/2.0, 0)), 1.0);\
|
|
|
|
}";
|
2011-11-04 15:07:51 -05:00
|
|
|
const char * airPVertex = "#version 120\n\
|
|
|
|
void main(void)\
|
2011-11-02 14:37:52 -05:00
|
|
|
{\
|
|
|
|
gl_TexCoord[0] = gl_MultiTexCoord0;\
|
|
|
|
gl_Position = ftransform();;\
|
|
|
|
gl_FrontColor = gl_Color;\
|
|
|
|
}";
|
2011-11-04 15:07:51 -05:00
|
|
|
const char * airCFragment = "#version 120\n\
|
|
|
|
uniform sampler2D airX;\
|
2011-11-02 14:37:52 -05:00
|
|
|
uniform sampler2D airY;\
|
|
|
|
uniform sampler2D airP;\
|
|
|
|
void main () {\
|
|
|
|
vec4 texX = texture2D(airX, gl_TexCoord[0].st);\
|
|
|
|
vec4 texY = texture2D(airY, gl_TexCoord[0].st);\
|
|
|
|
vec4 texP = texture2D(airP, gl_TexCoord[0].st);\
|
|
|
|
gl_FragColor = vec4(max(texP.b/2.0, 0), 0, abs(min(texP.b/2.0, 0)), 1.0) + vec4(abs(texX.r)/8.0, abs(texX.r)/8.0, abs(texX.r)/8.0, 1.0) + vec4(abs(texY.g)/8.0, abs(texY.g)/8.0, abs(texY.g)/8.0, 1.0);\
|
|
|
|
}";
|
2011-11-04 15:07:51 -05:00
|
|
|
const char * airCVertex = "#version 120\n\
|
|
|
|
void main(void)\
|
2011-10-22 13:24:32 -05:00
|
|
|
{\
|
|
|
|
gl_TexCoord[0] = gl_MultiTexCoord0;\
|
|
|
|
gl_Position = ftransform();;\
|
|
|
|
gl_FrontColor = gl_Color;\
|
|
|
|
}";
|
2011-10-24 11:20:18 -05:00
|
|
|
#endif
|
2011-10-20 10:28:49 -05:00
|
|
|
#endif
|