Simon McVittie
5909b9a1cf
Isolate the Altivec code so non-Altivec PPC targets can use the same binary.
...
Moved all the code using Altivec intrinsics to separate files. This
means we can optionally use GCC's -maltivec on just these files, which
are chosen at runtime if the CPU supports Altivec, and compile the rest
without it, making a single binary that has Altivec optimizations but
can still work on G3.
Unlike SSE and similar extensions on x86, there does not seem to be
a way to enable conditional, targeted use of Altivec based on runtime
detection (which is what ioquake3 wants to do) without also giving the
compiler permission to use Altivec in code generation; so to not crash
on CPUs that do not implement Altivec, we'll have to turn it off
altogether, except in translation units that are only entered when
runtime Altivec detection is successful.
This has been tested on Linux PPC (on an Altivec-enabled CPU),
but we may need further work after testing trickles out to other
PowerPC devices and ancient Mac OS X builds.
I did a little work on this patch, but the majority of the effort belongs
to Simon McVittie (thanks!).
2018-05-12 14:14:47 -04:00
Edward Betts
fe42b8653d
Correct spelling mistakes.
2017-11-22 01:40:20 -06:00
Zack Middleton
6f0736ce9a
Fix loading renderer DLLs on Windows x86
...
After 'Fix floating point precision loss in renderer', Windows x86
client won't load the renderer DLLs. The problem is a 64 bit modulus.
I couldn't find any reports of this online. However, client with
built-in renderer worked with the 64 bit modulus.
Only tested with mingw-w64.
2017-09-07 20:42:31 -05:00
Zack Middleton
59b1262b82
Fix floating point precision loss in renderer [part 2]
...
Fix floatTime using float precision instead of double using GCC.
Fix R_BindAnimatedImage to be in sync with function table.
Fix vertexDeform bulge, vertexDeform normals, noise wave function
at high level time.
Revert unnecessary float -> double conversions.
2017-08-03 00:14:22 -05:00
Zack Middleton
30fdd88c9f
Fix floating point precision loss in renderer [part 1]
...
Patch for https://bugzilla.icculus.org/show_bug.cgi?id=5931 by
Eugene C. from 2013 plus recent fix for tcMod rotate.
I merged the changes into the OpenGL2 renderer though the fix for
tcMod turb doesn't translate.
2017-08-02 23:44:44 -05:00
SmileTheory
d549b642bc
OpenGL2: Use an OpenGL 3.2 core context if available.
2017-07-13 12:03:10 -07:00
SmileTheory
c65d2c2657
Add vao cache for static surfaces.
...
Remove support for draw range elements, multi draw arrays, world vao creation, surface merging.
2017-04-28 02:13:25 -07:00
SmileTheory
0238810f34
OpenGL2: Render dlights only when r_lightmap is 0.
...
https://github.com/ioquake/ioq3/issues/246
2017-01-24 20:17:06 -08:00
SmileTheory
8749d62bbd
OpenGL2: Remove per fragment tangent space calculation code.
2016-09-14 03:57:51 -07:00
SmileTheory
4faf1008a0
OpenGL2: Remove map color scaling and r_forceSunMapLightScale.
...
Also simplify overbright code in ComputeShaderColors().
2016-09-14 02:59:54 -07:00
SmileTheory
716438168f
OpenGL2: Use loader for all extension funcs.
2016-07-26 00:41:31 -07:00
SmileTheory
251c983681
OpenGL2: Require OpenGL 2.0.
2016-07-24 21:29:13 -07:00
Victor Roemer
398dea397c
Fix Makefile for OSX
...
Bump base SDK from 10.5 -> 10.7
Just use the builtin __APPLE__
2016-06-12 17:17:33 -04:00
Zack Middleton
acd659b05a
OpenGL2: Fix specularScale override not being used in RB_IterateStagesGeneric
2016-05-09 10:47:34 -05:00
SmileTheory
60f56670d6
OpenGL2: Render metals as nonmetal on cubemaps, and some ComputeShaderColors cleanup.
2016-04-05 02:21:14 -07:00
SmileTheory
eb7408ddac
OpenGL2: Fix r_lightmap.
2016-03-14 06:45:51 -07:00
SmileTheory
a331637745
OpenGL2: Shader optimization, and add dither to tonemap.
2016-02-17 20:06:18 -08:00
SmileTheory
275317fefb
OpenGL2: Direct state access, part 1: Texture binds
2016-01-18 04:46:01 -08:00
SmileTheory
f9c72eee69
OpenGL2: Parse radius entries from misc_cubemap entities.
2015-12-09 02:00:40 -08:00
SmileTheory
b52ede0445
OpenGL2: Add r_glossIsRoughness.
2015-12-08 21:23:50 -08:00
SmileTheory
92d4b20129
OpenGL2: Add option in code for alternate overbright method.
2015-12-08 05:17:05 -08:00
SmileTheory
40cfbc9a82
OpenGL2: Fix culling again.
2015-03-12 21:44:06 -07:00
SmileTheory
b1821e303d
OpenGL2: remove lightmap support from generic glsl shader.
...
This path was barely used and doing this compiles fewer shaders.
2014-11-10 21:59:37 -08:00
SmileTheory
3765652778
OpenGL2: Fix corrupt models.
2014-10-23 16:51:10 -07:00
SmileTheory
4f5ebf8349
OpenGL2: Bit of multidraw optimization.
2014-10-16 00:32:20 -07:00
SmileTheory
0578b70f38
OpenGL2: Reduce redundant GL calls.
2014-10-14 06:15:06 -07:00
SmileTheory
84206c8598
OpenGL2: Vertex array object support.
2014-10-14 01:50:44 -07:00
SmileTheory
873a02bd3c
OpenGL2: VBO cleanup.
2014-10-13 21:57:06 -07:00
SmileTheory
375f6247d4
OpenGL2: Parallax corrected cubemap (cheaper trick)
2014-03-16 16:29:38 -07:00
SmileTheory
ee67d0a981
OpenGL2: Add normalScale and parallaxDepth stage keywords and helper cvars.
2014-03-03 21:02:39 -08:00
SmileTheory
3740c55dec
OpenGL2: Remove and force r_softOverbright.
2014-02-20 17:01:50 -08:00
SmileTheory
eea652f5c5
Don't create images/framebuffers that won't be used, and add checks before use.
2014-01-12 20:52:36 -08:00
SmileTheory
c350963bf2
OpenGL2: Match glsl data type names: matrix_t -> mat4_t, vec*i_t -> ivec*_t
2013-11-19 03:23:50 -08:00
SmileTheory
6e5f8cc918
OpenGL2: Calculate bitangent in shader, and store normal/tangent as normalized byte arrays.
2013-11-12 19:21:51 -08:00
SmileTheory
ae57eebf52
Merge branch 'glindex_size_fixes' of https://github.com/inolen/ioq3 into inolen-glindex_size_fixes
2013-11-08 22:19:32 -08:00
SmileTheory
8c3ae8d7d2
OpenGL2: Reimplement soft overbright to avoid a framebuffer blit.
2013-11-05 00:08:59 -08:00
SmileTheory
3846c115e6
OpenGL2: Reduce glsl shader count by using a uniform to disable textures.
2013-11-03 19:34:22 -08:00
Zack Middleton
ae0e09aba9
Remove vertexLightmap from textureBundle_t, it's never qtrue
2013-11-02 02:59:31 -05:00
SmileTheory
08fcecc829
OpenGL2: Clean up texmod calculations, and improve vertex animation handling.
2013-10-14 01:55:54 -07:00
SmileTheory
f8355ba2fb
OpenGL2: Fix TCGEN_ENVIRONMENT stages not rendering correctly.
2013-10-10 03:41:31 -07:00
SmileTheory
acbeca6042
OpenGL2: Remove AGEN_FRESNEL(superceded by cubemap patch), and some small fixes and optimizations.
2013-09-24 03:29:49 -07:00
SmileTheory
42501db862
OpenGL2: Some shader cleanup
2013-09-16 23:41:04 -07:00
SmileTheory
7e875c6941
#5979 : Cubemap support for opengl2.
2013-09-16 00:54:26 -07:00
Anthony Pesch
b0f0376a4f
Misc fixes to IBO code to correctly use sizeof(glIndex_t)
2013-07-19 14:16:49 -07:00
Zack Middleton
323e8b9921
Fix r_speeds 4 in OpenGL2 renderer
2013-06-20 16:21:26 -05:00
SmileTheory
28e14c4546
Add sunlight/lightmap merging by multiply (r_sunlightMode 1)
...
Merge additive sunlight and map lighting into one GLSL shader (r_sunlightMode 2)
Change single lightmap blends to use lightall
2013-04-02 00:17:24 -07:00
SmileTheory
66acde6d60
Merge branch 'HEAD' of https://github.com/ioquake/ioq3.git into suntest
2013-03-25 21:05:27 -07:00
SmileTheory
8b23985358
Make all GLSL shaders use the same set of uniforms.
2013-03-20 22:53:30 -07:00
Tim Angus
f6fb9eb602
renderer -> renderergl1, rend2 -> renderergl2
2013-02-15 23:46:37 +00:00