Bill Currie
8691a2fbd1
Dump a stack trace when running out of edicts.
2012-07-18 10:30:58 +09:00
Bill Currie
7d8b0f96d6
Correct the fog distance calculations.
...
It turns out the pixel's z coord is correctly obtailed by
gl_FragCoord.z/gl_FragCoord.w.
2012-07-17 19:10:10 +09:00
Bill Currie
c4309e7abc
Correct the fog blend calculation for transparency.
...
The incoming pixel's alpha should not be affected by fog. This fixes the
ugly square smoke particles in foggy maps.
2012-07-17 19:08:36 +09:00
Bill Currie
c66e437ebe
Enable shadows for grenades.
...
Now that shadevector is correctly transformed, grenade shadows aren't quite
so silly.
2012-07-17 17:12:34 +09:00
Bill Currie
a7327acb80
Set up shadevector for gl alias models.
...
The setup had been lost at some stage, thus shadows were always directly
under the entity. Unlike the original quake shadow code, the vector is
correctly transformed into the entity's space.
2012-07-17 17:10:48 +09:00
Bill Currie
fbc0ad59df
Implement gl shadows for pure triangle alias models.
...
I finally found the cause of Despair's gl shadows non-rendering+segfault...
the shadow code expected triangle fans and strips but was getting simple
triangles. Oops.
2012-07-17 16:11:42 +09:00
Sander van Dijk
3c04de1116
Better default vid_gamma value.
2012-07-17 06:30:01 +09:00
Bill Currie
134f9b0e9e
Force pr_keys.c to get linked in.
...
Nothing in the main program currently uses Key_Progs_Init, so the object
file wasn't getting pulled into the link. However, it's quite necessary for
the client console plugin :/
2012-07-16 18:18:13 +09:00
Bill Currie
8333e6578c
Fix non-static sw renderer for 32bit x86.
...
Yet another undefined symbol caused by iqm support. This time caused by
asm/not asm.
2012-07-15 22:34:00 +09:00
Bill Currie
0f34ab8762
Move pr_keys.c from console to video/targets.
...
It wasn't very accessible/usable in the client console plugin.
2012-07-15 07:39:50 +09:00
Bill Currie
f9c6eacb84
Really fix sw32 renderer loading.
...
It seems I never tested the sw32 renderer in a non-static build since I put
in IQM support.
2012-07-15 07:30:17 +09:00
Bill Currie
fd6b5edb73
Don't set triangle draw type in sw32 iqm renderer.
...
It's not used and causes link errors (I never noticed on my system).
2012-07-14 19:48:57 +09:00
Bill Currie
fcf7150c62
Remove some old renderer specific files.
2012-07-14 07:32:53 +09:00
Bill Currie
a9adc94aa8
Force builtin function descriptors to have a name.
...
That is, the descriptors loaded from the progs file. Some compilers (eg,
fteqcc :P) strip builtin names from the progs, which makes debugging
difficult.
2012-07-13 10:22:25 +09:00
Bill Currie
6fe32103ea
Do a bit of bound() usage auditing.
...
While these seem to be mostly harmless, having function calls in the
bounded value can be nasty.
2012-07-12 19:33:51 +09:00
Bill Currie
a822a683cd
Fix the inverted lighting for sw32.
...
LordHavoc had made lighting positive for sw32, but I had done something in
the plugin code that broke that (probably something to do with the
colormap loading). Going back to id's original code fixes the issue.
2012-07-12 18:15:45 +09:00
Bill Currie
12319cfcdf
Revert "Slightly reducde the number of calls to glUniformMatrix4fv."
...
This reverts commit e170f4ee75
.
It turns out I messed up something in the patch. I noticed the problem
while playing digs04.bsp: many sub-model surfaces, particularly those with
animated textures, were not being transformed correctly. As this patch did
not make a large performance difference, it's probably better to just
revert it. I might revisit it later.
2012-07-11 08:12:57 +09:00
Bill Currie
ede65fb28c
Use the correct source for the backtile width/height.
...
Yay, no more garbage on the screen :)
2012-07-09 15:56:51 +09:00
Bill Currie
5014825b39
Fix the backtile for glsl.
...
Since the backtile is loaded into a scrap and used as a subtexture, we
can't use GL's texture wrapping, thus do the wrapping ourselves. There are
some minor issues with the wrong part of the scrap being drawn: need to
investigate where the bug is (vrect, make_quad, etc).
2012-07-09 15:11:03 +09:00
Bill Currie
6e0907a6b1
Delay the "too many entities" check.
...
Rather than checking the raw edict count in the entities file against the
progs' max_edicts, check the allocated entity's number. This allows loading
of sophisticated maps (eg, digs04) that prune many of their entities.
2012-07-09 15:07:34 +09:00
Bill Currie
ce16750b04
Cache the max_edicts value in the progs struct.
...
Makes checks a little easier.
2012-07-09 15:06:42 +09:00
Bill Currie
e91b06a144
Better name for the edict count parameter to PR_LoadProgsFile.
2012-07-09 15:02:49 +09:00
Bill Currie
37260018a2
Acutally use the vertex colors for alias models.
...
Thanks to Spirit trying QF on nvidia drivers, the missing attributes were
found. Now he shouldn't get gl errors :)
2012-07-08 16:52:13 +09:00
Bill Currie
a6d9f5d931
Fix a parallel make issue.
2012-07-06 12:35:50 +09:00
Bill Currie
dbbd6f4535
Fix a couple of missing particle function pointers.
...
Discovered while getting the location markers working again.
2012-07-06 10:18:05 +09:00
Bill Currie
428d57b7e1
Don't attemt fullbright processing for an unavailable skin.
...
In the end, it turns out this is the correct fix for the gl seg on
overkill, because build_skin will correctly use the fully setup player skin
if the glskin doesn't have a texture associated with it.
2012-07-05 10:30:41 +09:00
Bill Currie
80bc0e9fb8
Make nq and qw use the new entity state struct.
...
This isn't really the best solution, but it does get things being shared
with the minimum of fuss.
2012-07-05 09:39:16 +09:00
Bill Currie
dea2f48477
Move entity_state_t into client/entities.h
...
Also, start working on the shared entity manager.
2012-07-05 09:39:16 +09:00
Bill Currie
b65c41efcb
Move the colormod lookup table into a new lib.
...
libQFclient is now here :) The first shared code is the lookup table.
2012-07-05 09:39:16 +09:00
Bill Currie
ef9e8d05c4
Avoid some unnecessary state changes.
...
Doesn't make much difference but it doesn't hurt.
2012-07-03 18:20:32 +09:00
Bill Currie
ee1cb24e3d
Move the call to R_SetFrustum to gl_R_SetupFrame.
...
This was meant to be part of the previous commit, but I forgot to write the
file :P
2012-07-03 16:08:12 +09:00
Bill Currie
a8e0bcabf9
Call R_SetFrustum in all renderers.
...
It turns out glsl, sw and sw32 weren't getting any benefit from R_CullBox
because the frustum wasn't setup :P. Get another 8% out of bigass1
(174->184fps). bigass1 now runs 2x as fast as it did before I started this
optimisation run :)
2012-07-03 15:57:33 +09:00
Bill Currie
e58cd75660
Bound r_maxdlights properly.
...
QF's implementation doesn't support more than 32 dlights (32 bit int).
2012-07-03 15:27:48 +09:00
Bill Currie
eefefb79b0
Rename char_queue to draw_queue.
2012-07-03 14:45:16 +09:00
Bill Currie
b25de4d995
Rewrite the 2d code to use a scrap.
...
This severely reduces the calles to BindTexture, and more importantly,
glUseProgram, EnableVertexAttribArray etc. The biggest changes are:
o icons and text are all in the one giant texture
o icons and text are mixed in the one queue
This gave ~9% speedup for bigass1 (159->174fps).
2012-07-03 13:38:35 +09:00
Bill Currie
df35b22af4
Parameterize the linear filtering of scrap textures.
2012-07-03 12:10:24 +09:00
Bill Currie
e170f4ee75
Slightly reducde the number of calls to glUniformMatrix4fv.
...
It doesn't make a big difference to bigass1 (yet ?), but it does clean up
apitrace a little.
2012-07-03 10:57:35 +09:00
Bill Currie
1a6b56b0a2
Call glTexSubImage2D only once per frame.
...
Instead of once per surface... ouch. Gives about 20% speed boost on demo1
(154.7->185.7)
2012-07-02 20:01:28 +09:00
Bill Currie
8fa92bf206
Add 32 button support to sdl and win as well.
...
The world isn't x11 (much as I'd like it to be)
2012-07-02 16:51:14 +09:00
Bill Currie
7cd8806ec0
Add support for up to 32 mouse buttons.
...
My new mouse reports only up to 9 (skipping 6 and 9, it seems), but I
/have/ seen 32 button mice...
2012-07-02 16:33:57 +09:00
Bill Currie
4da3be5cd6
Get a minor speed gain in glsl bsp rendering.
...
About 4% (99.5 to 104.4) from not calling VertexAttrib4fv or BindTexture
when not necessary.
2012-06-29 22:13:20 +09:00
Bill Currie
603fe92cba
Add a callback for when key_dest is set.
2012-06-29 18:00:21 +09:00
Bill Currie
3406cad99a
Many distcheck fixes.
...
Yay, bitrot :P
2012-06-29 10:49:21 +09:00
Bill Currie
415decb983
Use memmove instead of strcpy when deleting chars.
...
It seems recent(?) 64-bit strcpy implementations of strcpy don't work
properly for overlapping regions even when moving down. Quite the
surprise, as I thought that would always work. *shrug*
2012-06-23 20:54:55 +09:00
Bill Currie
7b231bc70e
Add support for /*..*/ comments to idparse
2012-06-23 19:43:22 +09:00
Bill Currie
aa2a8e8909
Mostly "merge" cl_screen.c.
...
Down to protocol/networking differences.
2012-06-15 22:02:17 +09:00
Bill Currie
b2290d92c9
Nuke UNALIGNED_OK.
...
It's not really necessary (and was effectively dead anyway).
2012-06-15 22:02:17 +09:00
Bill Currie
e730608dd7
Implement r_flatlightstyles from fitzquake.
2012-06-15 22:02:14 +09:00
Bill Currie
b4ad695e16
Make info_t opaque.
...
I didn't like the way client/server code was poking around at the
implementation. Instead, provide a couple of accessor functions for the
same information.
2012-06-14 22:46:23 +09:00
Bill Currie
ac1bf2a158
Don't save unnamed fields.
...
There will normally be only one unnamed field (if any), and it's always the
null field. This will put an eventual end to the "'' is not a field"
messages.
2012-06-10 20:56:22 +09:00
Bill Currie
7d84800250
Remove an unnecessary if.
...
It needed during initial development of the patch, but with the refactoring
of s_init, it became redundant.
2012-05-28 07:58:11 +09:00
Bill Currie
01fb4f265d
Attempt to reconnect to jack on loss of connection.
2012-05-28 07:46:22 +09:00
Bill Currie
dbc203b625
And a few more bits of whitespace.
2012-05-23 08:21:27 +09:00
Bill Currie
23a38738fc
Massive whitespace cleanup.
...
Lots of trailing whitespace and otherwise blank lines.
2012-05-22 08:23:22 +09:00
Bill Currie
85da69a96a
Transform normals wrt bones in sw and sw32.
...
Better lighting :), though any scaling/shearing will produce funny results,
and sw32's lighting is broken in general.
2012-05-20 15:21:25 +09:00
Bill Currie
b5add680f7
Add Mat4as3MultVec.
...
to transform a vertex without the translation (eg, for normals) without
having to have separate matrices.
2012-05-20 15:20:18 +09:00
Bill Currie
0fbaa2a88a
Add sw32 support for iqm models.
...
That was easy :)
2012-05-20 14:23:41 +09:00
Bill Currie
3087e685cc
Convert texcoords to fixed point.
...
Bah, another weekend wasted on an oversight :( However, Mr. Fixit looks
quite alright in the quake palette.
2012-05-20 10:02:44 +09:00
Bill Currie
f0285e5a08
Correct the texcoord conversion.
...
1.0 is to represent the last pixel, not one past it.
2012-05-20 08:51:15 +09:00
Bill Currie
e2db2dcb63
Support static iqm models.
...
Segging on a model with no animations is not nice :P
2012-05-19 21:26:11 +09:00
Bill Currie
d25f39cc7d
Remove pskindesc from affinetridesc_t.
...
It's never used after being set.
2012-05-19 09:29:05 +09:00
Bill Currie
c1eb3e77c3
Process each vertex texcoord only once.
...
Double converting texcoords results in 0,0 for all affected texcoords. Mr
Fixit was looking rather ill. Now he looks weird (something wrong in the
renderer?).
2012-05-19 09:15:26 +09:00
Bill Currie
d41bf32d91
Hopefully fix color conversion.
...
Hard to tell because the triangle rendering is still messed up. However,
storing negative values in bytes doesn't work :)
2012-05-19 09:14:07 +09:00
Bill Currie
be9c0697a2
Give sw iqm its own transform setup.
...
IQMs don't need to be scaled or offset. This fixes iqms not rendering,
though they actually were: just super tiny.
2012-05-19 00:43:26 +09:00
Bill Currie
c0517b1d97
Factor out the blend palette creation.
...
gl, sw and sw32 use blend palettes, so share the code. This also abandons
the optimization for transforming verts in sw (had all sorts of problems
anyway). sw still doesn't work, though.
2012-05-19 00:34:15 +09:00
Bill Currie
e069757ceb
Refactor the skin setup code.
2012-05-19 00:18:03 +09:00
Bill Currie
fb10f38fd4
SW now tries (but fails miserably) to render iqm models.
...
Something seems to be very wrong with the transforms.
2012-05-18 23:31:14 +09:00
Bill Currie
da87ac0ce5
Remove some unused parameters.
2012-05-17 21:33:22 +09:00
Bill Currie
da313cfae7
Load iqm models in the sw renderers.
...
sw32 loses 32 bit textures :/
loading is /slow/ (converting rgb(a) to 8bit palette... ouch.
2012-05-17 21:17:48 +09:00
Bill Currie
7637f35616
Remove the test scaling.
...
Heh, forgot to remove it again :)
2012-05-17 16:02:13 +09:00
Bill Currie
c3801d46e5
Render iqm models in GL.
...
There are still many issues to sort out, but the basics are working.
Problems:
rendered fullbright (no lighting done)
normals are ignored
extra textures (glow etc) not used/loaded
4 models on the screen don't seem to be a problem.
2012-05-17 15:58:29 +09:00
Bill Currie
f958afad53
Optionally allocate extra data for iqm blend frames.
...
Also, correct the blend parameter type (int->float. oops).
2012-05-17 15:57:07 +09:00
Bill Currie
c0df07b607
Enable loading of iqm models in gl.
...
They don't render yet, but the engine doesn't segfault.
The vertex blend indices are rewritten with blend palette indices.
2012-05-17 15:55:38 +09:00
Bill Currie
23284536b5
Move IQM freeing into common code.
2012-05-16 18:09:44 +09:00
Bill Currie
041d63c828
Move the frame blending into common code.
2012-05-16 17:44:18 +09:00
Bill Currie
8ada7c02a3
Remove the vertex scaling.
...
It was there only because mrfixit is rather small (8qu?) and it made
finding him easier :). Anyway, any scaling should be done in the engine.
2012-05-16 08:13:59 +09:00
Bill Currie
9984925fe8
Correct a comment.
2012-05-15 21:08:47 +09:00
Bill Currie
31772afd13
Add in some ambient light for iqm models.
...
Though the bsp loader doesn't yet support colored lighting, the ambient
light will be colored when it does. With this, I guess iqm model support is
done for glsl until I figure out how I want to do dual quaternion support.
2012-05-15 21:08:47 +09:00
Bill Currie
111377f1be
Use buffer objects for iqm vertex arrays and elements.
2012-05-15 21:08:47 +09:00
Bill Currie
5740dba467
Mark iqm models as need-load when clearing.
...
This fixes the segfault on map change.
2012-05-15 21:08:47 +09:00
Bill Currie
0fd2b01665
Update the shader to work as it should :)
...
I always thought it whould be "light - point" :P. Also, in normal maps, 127
is 0.
2012-05-15 21:08:47 +09:00
Bill Currie
c454b96d2a
Translate lights into entity space.
...
Finally, lights work "properly". Probably the nicest lighting we've ever
had :) (still have to put in ambient, though).
2012-05-15 21:08:47 +09:00
Bill Currie
1375c3cf03
Finally, load textures for iqm :)
2012-05-15 21:08:47 +09:00
Bill Currie
a032aa5adf
Get the lights working (as such).
...
They work nicely now when the normal map and texture are bypassed (don't
know what texture is getting used currently).
2012-05-15 21:08:47 +09:00
Bill Currie
8c5e278bf8
Implement frame blending for iqm.
...
Now that I have things working... :)
2012-05-15 21:08:47 +09:00
Bill Currie
a938c7fb14
Almost fix the animations.
...
There's still a problem with his finger tips and feet, but the rest of his
limbs seem to be working well. Much thanks to Spike for encouraging me to
do a dump of the matices that are actually sent to the card.
It turns out that animated joints remain relative right up to the last
moment.
2012-05-15 21:08:46 +09:00
Bill Currie
4ba69b511b
Make quat_origin the right type.
...
It's quat_t, not vec3_t :P.
2012-05-15 21:08:46 +09:00
Bill Currie
202ab04572
Ensure the rotation quats are normalized.
...
Doesn't make any noticeable difference, but it doesn't hurt.
2012-05-15 21:08:46 +09:00
Bill Currie
31d89782ef
Use the correct index variable when byteswapping the arrays.
...
Not the cause of the broken animations :(
2012-05-15 21:08:46 +09:00
Bill Currie
7cda91a879
Temporarily disable dual quaternions.
...
The animation data isn't getting loaded or used properly (not sure yet).
This helps ensure it's not something I've done wrong with dual quats.
2012-05-15 21:08:46 +09:00
Bill Currie
4b38048a5c
Create functions for rotation and translation.
2012-05-15 21:08:46 +09:00
Bill Currie
5b4fdd2a93
Use the correct position for light calcs.
...
I should have remembered that gl_FragCoord wasn't right.
2012-05-15 21:08:46 +09:00
Bill Currie
2080c337d7
Avoid using malloc/free every model/frame.
2012-05-15 21:08:46 +09:00
Bill Currie
c2e0674d50
Implement R_IQMGetLerpedFrames().
...
Like R_AliasGetLerpedFrames, but for IQM. It calcualtes the current frame
number and blend between the previous and current frames.
2012-05-15 21:08:46 +09:00
Bill Currie
8387d987e2
Change position to vposition.
2012-05-15 21:08:46 +09:00
Bill Currie
099ef348c6
Advance the vertex attrib index.
...
Disabling the array right after enabling it was causing things to just not
work :P
2012-05-15 21:08:46 +09:00
Bill Currie
d1d4c6142c
Get the frame data from the right places.
...
Always using joint[0] of the frames wasn't very useful.
2012-05-15 21:08:46 +09:00
Bill Currie
74cb49ef7c
Free the blended frame data.
2012-05-15 21:08:45 +09:00
Bill Currie
551dfc47fb
Build the iqm vertex arrays in the correct order.
...
They need to be built in ascending type order (makes life easier in the
renderer).
2012-05-15 21:08:45 +09:00
Bill Currie
bea8f8f9c4
Fix a segfault when searching for dlights.
...
Uninitialized var bites my bum :P
2012-05-15 21:08:45 +09:00