mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-22 12:41:21 +00:00
GL3: Rename some CVars to gl3_*, fix water brightness
* gl3_particle_size: in GL3 the particles should be a bit bigger because the particles fade out towards the edge, so I put it in a seperate CVar * gl3_intensity: in GL3 the intensity can have any floating point value, in GL1 only integers, so it gets its own CVar * gl3_overbrightbits: gl_overbrightbits had to be 1, 2 or 4, in GL3 it can have any floating point value. Changed the particle scaling a bit so they look bigger.
This commit is contained in:
parent
182948fecc
commit
ea6dacbc12
4 changed files with 41 additions and 25 deletions
|
@ -533,8 +533,8 @@ R_DrawParticles(void)
|
|||
glEnable(GL_BLEND);
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
|
||||
// assume the particle size looks good with window height 600px and scale according to real resolution
|
||||
glPointSize(gl_particle_size->value * (float)r_newrefdef.height/600.0f);
|
||||
// assume the particle size looks good with window height 480px and scale according to real resolution
|
||||
glPointSize(gl_particle_size->value * (float)r_newrefdef.height/480.0f);
|
||||
|
||||
for ( i = 0, p = r_newrefdef.particles; i < r_newrefdef.num_particles; i++, p++ )
|
||||
{
|
||||
|
|
|
@ -92,14 +92,14 @@ cvar_t *gl_anisotropic;
|
|||
cvar_t *gl_texturemode;
|
||||
cvar_t *gl_drawbuffer;
|
||||
cvar_t *gl_clear;
|
||||
cvar_t *gl_particle_size;
|
||||
cvar_t *gl3_particle_size;
|
||||
|
||||
cvar_t *gl_lefthand;
|
||||
cvar_t *gl_farsee;
|
||||
|
||||
cvar_t *intensity;
|
||||
cvar_t *gl3_intensity;
|
||||
cvar_t *gl_lightlevel;
|
||||
cvar_t *gl_overbrightbits;
|
||||
cvar_t *gl3_overbrightbits;
|
||||
|
||||
cvar_t *gl_norefresh;
|
||||
cvar_t *gl_drawentities;
|
||||
|
@ -202,7 +202,7 @@ GL3_Register(void)
|
|||
gl_mode = ri.Cvar_Get("gl_mode", "4", CVAR_ARCHIVE);
|
||||
gl_customwidth = ri.Cvar_Get("gl_customwidth", "1024", CVAR_ARCHIVE);
|
||||
gl_customheight = ri.Cvar_Get("gl_customheight", "768", CVAR_ARCHIVE);
|
||||
gl_particle_size = ri.Cvar_Get("gl_particle_size", "40", CVAR_ARCHIVE);
|
||||
gl3_particle_size = ri.Cvar_Get("gl3_particle_size", "60", CVAR_ARCHIVE);
|
||||
|
||||
gl_norefresh = ri.Cvar_Get("gl_norefresh", "0", 0);
|
||||
gl_drawentities = ri.Cvar_Get("gl_drawentities", "1", 0);
|
||||
|
@ -218,10 +218,10 @@ GL3_Register(void)
|
|||
|
||||
vid_fullscreen = ri.Cvar_Get("vid_fullscreen", "0", CVAR_ARCHIVE);
|
||||
vid_gamma = ri.Cvar_Get("vid_gamma", "1.0", CVAR_ARCHIVE);
|
||||
intensity = ri.Cvar_Get("intensity", "2.0", CVAR_ARCHIVE);
|
||||
gl3_intensity = ri.Cvar_Get("gl3_intensity", "1.5", CVAR_ARCHIVE);
|
||||
|
||||
gl_lightlevel = ri.Cvar_Get("gl_lightlevel", "0", 0);
|
||||
gl_overbrightbits = ri.Cvar_Get("gl_overbrightbits", "0", CVAR_ARCHIVE);
|
||||
gl3_overbrightbits = ri.Cvar_Get("gl3_overbrightbits", "1.5", CVAR_ARCHIVE);
|
||||
|
||||
gl_lightmap = ri.Cvar_Get("gl_lightmap", "0", 0);
|
||||
gl_shadows = ri.Cvar_Get("gl_shadows", "0", CVAR_ARCHIVE);
|
||||
|
@ -811,14 +811,14 @@ GL3_DrawParticles(void)
|
|||
//qboolean stereo_split_tb = ((gl_state.stereo_mode == STEREO_SPLIT_VERTICAL) && gl_state.camera_separation);
|
||||
//qboolean stereo_split_lr = ((gl_state.stereo_mode == STEREO_SPLIT_HORIZONTAL) && gl_state.camera_separation);
|
||||
|
||||
//if (gl_config.pointparameters && !(stereo_split_tb || stereo_split_lr))
|
||||
//if (!(stereo_split_tb || stereo_split_lr))
|
||||
{
|
||||
int i;
|
||||
int numParticles = gl3_newrefdef.num_particles;
|
||||
unsigned char color[4];
|
||||
const particle_t *p;
|
||||
// assume the size looks good with window height 600px and scale according to real resolution
|
||||
float pointSize = gl_particle_size->value * (float)gl3_newrefdef.height/600.0f;
|
||||
// assume the size looks good with window height 480px and scale according to real resolution
|
||||
float pointSize = gl3_particle_size->value * (float)gl3_newrefdef.height/480.0f;
|
||||
|
||||
typedef struct part_vtx {
|
||||
GLfloat pos[3];
|
||||
|
@ -1615,28 +1615,28 @@ GL3_BeginFrame(float camera_separation)
|
|||
}
|
||||
#endif // 0
|
||||
|
||||
if (vid_gamma->modified || intensity->modified)
|
||||
if (vid_gamma->modified || gl3_intensity->modified)
|
||||
{
|
||||
vid_gamma->modified = false;
|
||||
intensity->modified = false;
|
||||
gl3_intensity->modified = false;
|
||||
|
||||
gl3state.uniCommonData.gamma = 1.0f/vid_gamma->value;
|
||||
gl3state.uniCommonData.intensity = intensity->value;
|
||||
gl3state.uniCommonData.intensity = gl3_intensity->value;
|
||||
GL3_UpdateUBOCommon();
|
||||
}
|
||||
|
||||
// in GL3, overbrightbits can have any positive value
|
||||
// TODO: rename to gl3_overbrightbits?
|
||||
if (gl_overbrightbits->modified)
|
||||
if (gl3_overbrightbits->modified)
|
||||
{
|
||||
gl_overbrightbits->modified = false;
|
||||
gl3_overbrightbits->modified = false;
|
||||
|
||||
if(gl_overbrightbits->value < 0.0f)
|
||||
if(gl3_overbrightbits->value < 0.0f)
|
||||
{
|
||||
ri.Cvar_Set("gl_overbrightbits", "0");
|
||||
}
|
||||
|
||||
gl3state.uni3DData.overbrightbits = (gl_overbrightbits->value <= 0.0f) ? 1.0f : gl_overbrightbits->value;
|
||||
gl3state.uni3DData.overbrightbits = (gl3_overbrightbits->value <= 0.0f) ? 1.0f : gl3_overbrightbits->value;
|
||||
GL3_UpdateUBO3D();
|
||||
}
|
||||
|
||||
|
|
|
@ -391,6 +391,23 @@ static const char* fragmentSrc3D = MULTILINE_STRING(
|
|||
}
|
||||
);
|
||||
|
||||
static const char* fragmentSrc3Dwater = MULTILINE_STRING(
|
||||
|
||||
// it gets attributes and uniforms from fragmentCommon3D
|
||||
|
||||
uniform sampler2D tex;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 texel = texture(tex, passTexCoord);
|
||||
|
||||
// apply intensity and gamma
|
||||
texel.rgb *= intensity*0.5;
|
||||
outColor.rgb = pow(texel.rgb, vec3(gamma));
|
||||
outColor.a = texel.a*alpha; // I think alpha shouldn't be modified by gamma and intensity
|
||||
}
|
||||
);
|
||||
|
||||
static const char* fragmentSrc3Dlm = MULTILINE_STRING(
|
||||
|
||||
// it gets attributes and uniforms from fragmentCommon3D
|
||||
|
@ -629,8 +646,7 @@ static const char* vertexSrcParticles = MULTILINE_STRING(
|
|||
// abusing texCoord for pointSize, pointDist for particles
|
||||
float pointDist = texCoord.y*0.1; // with factor 0.1 it looks good.
|
||||
|
||||
// 1.4 to make them a bit bigger, they look smaller due to fading (see fragment shader)
|
||||
gl_PointSize = 1.4*texCoord.x/pointDist;
|
||||
gl_PointSize = texCoord.x/pointDist;
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -906,7 +922,7 @@ err_cleanup:
|
|||
static void initUBOs(void)
|
||||
{
|
||||
gl3state.uniCommonData.gamma = 1.0f/vid_gamma->value;
|
||||
gl3state.uniCommonData.intensity = intensity->value;
|
||||
gl3state.uniCommonData.intensity = gl3_intensity->value;
|
||||
gl3state.uniCommonData.color = HMM_Vec4(1, 1, 1, 1);
|
||||
|
||||
glGenBuffers(1, &gl3state.uniCommonUBO);
|
||||
|
@ -930,7 +946,7 @@ static void initUBOs(void)
|
|||
gl3state.uni3DData.time = 0.0f;
|
||||
gl3state.uni3DData.alpha = 1.0f;
|
||||
// gl_overbrightbits 0 means "no scaling" which is equivalent to multiplying with 1
|
||||
gl3state.uni3DData.overbrightbits = (gl_overbrightbits->value <= 0.0f) ? 1.0f : gl_overbrightbits->value;
|
||||
gl3state.uni3DData.overbrightbits = (gl3_overbrightbits->value <= 0.0f) ? 1.0f : gl3_overbrightbits->value;
|
||||
|
||||
glGenBuffers(1, &gl3state.uni3DUBO);
|
||||
glBindBuffer(GL_UNIFORM_BUFFER, gl3state.uni3DUBO);
|
||||
|
@ -981,7 +997,7 @@ qboolean GL3_InitShaders(void)
|
|||
return false;
|
||||
}
|
||||
*/
|
||||
if(!initShader3D(&gl3state.si3Dturb, vertexSrc3Dwater, fragmentSrc3D))
|
||||
if(!initShader3D(&gl3state.si3Dturb, vertexSrc3Dwater, fragmentSrc3Dwater))
|
||||
{
|
||||
R_Printf(PRINT_ALL, "WARNING: Failed to create shader program for water rendering!\n");
|
||||
return false;
|
||||
|
|
|
@ -498,11 +498,11 @@ extern cvar_t *gl_farsee;
|
|||
extern cvar_t *gl_drawworld;
|
||||
|
||||
extern cvar_t *vid_gamma;
|
||||
extern cvar_t *intensity;
|
||||
extern cvar_t *gl3_intensity;
|
||||
extern cvar_t *gl_anisotropic;
|
||||
|
||||
extern cvar_t *gl_lightlevel;
|
||||
extern cvar_t *gl_overbrightbits;
|
||||
extern cvar_t *gl3_overbrightbits;
|
||||
|
||||
extern cvar_t *gl_modulate;
|
||||
extern cvar_t *gl_lightmap;
|
||||
|
|
Loading…
Reference in a new issue