Skip to content

Commit 2ed9c6a

Browse files
author
Spoike
committed
Proper support for lit sprites.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6167 fc73d0e0-1445-4013-8a0c-d673dee63da5
1 parent 2ed3378 commit 2ed9c6a

File tree

4 files changed

+20
-14
lines changed

4 files changed

+20
-14
lines changed

engine/gl/gl_alias.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2733,6 +2733,12 @@ static void R_Sprite_GenerateTrisoup(entity_t *e, int bemode)
27332733
}
27342734

27352735
VectorScale(e->shaderRGBAf, lightmap, rgba[0]);
2736+
if (frame && frame->lit && !(r_refdef.flags & RDF_NOWORLDMODEL) && cl.worldmodel && cl.worldmodel->funcs.LightPointValues)
2737+
{
2738+
R_CalcModelLighting(e, e->model);
2739+
VectorMul(rgba[0], e->light_avg, rgba[0]);
2740+
VectorMA(rgba[0], 0.5, e->light_range, rgba[0]);
2741+
}
27362742
rgba[0][3] = e->shaderRGBAf[3];
27372743
Vector4Copy(rgba[0], rgba[1]);
27382744
Vector4Copy(rgba[0], rgba[2]);

engine/gl/gl_model.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5655,7 +5655,7 @@ void Mod_LoadDoomSprite (model_t *mod)
56555655

56565656
//we need to override the rtlight shader for sprites so they get lit properly ignoring n+s+t dirs
56575657
//so lets split the shader into parts to avoid too many dupes
5658-
#define SPRITE_SHADER_MAIN \
5658+
#define SPRITE_SHADER_MAIN(extra) \
56595659
"{\n" \
56605660
"if gl_blendsprites\n" \
56615661
"program defaultsprite\n" \
@@ -5675,9 +5675,12 @@ void Mod_LoadDoomSprite (model_t *mod)
56755675
"rgbgen vertex\n" \
56765676
"alphagen vertex\n" \
56775677
"}\n" \
5678-
"surfaceparm noshadows\n"
5679-
#define SPRITE_SHADER_UNLIT "surfaceparm nodlight\n"
5680-
#define SPRITE_SHADER_LIT \
5678+
"surfaceparm noshadows\n" \
5679+
extra \
5680+
"}\n"
5681+
#define SPRITE_SHADER_UNLIT SPRITE_SHADER_MAIN( \
5682+
"surfaceparm nodlight\n")
5683+
#define SPRITE_SHADER_LIT SPRITE_SHADER_MAIN( \
56815684
"sort seethrough\n" \
56825685
"bemode rtlight\n" \
56835686
"{\n" \
@@ -5686,8 +5689,7 @@ void Mod_LoadDoomSprite (model_t *mod)
56865689
"map $diffuse\n" \
56875690
"blendfunc add\n" \
56885691
"}\n" \
5689-
"}\n"
5690-
#define SPRITE_SHADER_FOOTER "}\n"
5692+
"}\n")
56915693

56925694
void Mod_LoadSpriteFrameShader(model_t *spr, int frame, int subframe, mspriteframe_t *frameinfo)
56935695
{
@@ -5733,9 +5735,10 @@ void Mod_LoadSpriteFrameShader(model_t *spr, int frame, int subframe, mspritefra
57335735
#endif
57345736

57355737
if (litsprite) // a ! in the filename makes it non-fullbright (and can also be lit by rtlights too).
5736-
shadertext = SPRITE_SHADER_MAIN SPRITE_SHADER_LIT SPRITE_SHADER_FOOTER;
5738+
shadertext = SPRITE_SHADER_LIT;
57375739
else
5738-
shadertext = SPRITE_SHADER_MAIN SPRITE_SHADER_UNLIT SPRITE_SHADER_FOOTER;
5740+
shadertext = SPRITE_SHADER_UNLIT;
5741+
frameinfo->lit = litsprite;
57395742
frameinfo->shader = R_RegisterShader(name, SUF_NONE, shadertext);
57405743
frameinfo->shader->defaulttextures->base = frameinfo->image;
57415744
frameinfo->shader->width = frameinfo->right-frameinfo->left;

engine/gl/gl_model.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,7 @@ typedef struct mspriteframe_s
627627
{
628628
float up, down, left, right;
629629
qboolean xmirror;
630+
qboolean lit;
630631
shader_t *shader;
631632
image_t *image;
632633
} mspriteframe_t;

engine/shaders/glsl/defaultsprite.glsl

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
//used by both particles and sprites.
44
//note the fog blending mode is all that differs from defaultadditivesprite
55

6+
#include "sys/defs.h"
67
#include "sys/fog.h"
7-
#ifdef VERTEX_SHADER
8-
attribute vec2 v_texcoord;
9-
attribute vec4 v_colour;
108
varying vec2 tc;
119
varying vec4 vc;
10+
#ifdef VERTEX_SHADER
1211
void main ()
1312
{
1413
tc = v_texcoord;
@@ -17,9 +16,6 @@ void main ()
1716
}
1817
#endif
1918
#ifdef FRAGMENT_SHADER
20-
varying vec2 tc;
21-
varying vec4 vc;
22-
uniform vec4 e_colourident;
2319
uniform vec4 e_vlscale;
2420
void main ()
2521
{

0 commit comments

Comments
 (0)