summaryrefslogtreecommitdiff
path: root/rend2-readme.txt
diff options
context:
space:
mode:
Diffstat (limited to 'rend2-readme.txt')
-rw-r--r--rend2-readme.txt606
1 files changed, 0 insertions, 606 deletions
diff --git a/rend2-readme.txt b/rend2-readme.txt
deleted file mode 100644
index 88f39bed..00000000
--- a/rend2-readme.txt
+++ /dev/null
@@ -1,606 +0,0 @@
-Rend2
-<insert ascii art here>
-
-Rend2 is an alternate renderer for ioquake3. It aims to implement modern
-features and technologies into the id tech 3 engine, but without sacrificing
-compatibility with existing Quake 3 mods.
-
-
--------------------------------------------------------------------------------
- FEATURES
--------------------------------------------------------------------------------
-
- - Compatible with most vanilla Quake 3 mods.
- - HDR Rendering, and support for HDR lightmaps
- - Tone mapping and auto-exposure.
- - Cascaded shadow maps.
- - Multisample anti-aliasing.
- - Texture upsampling.
- - Advanced materials support.
- - Advanced shading and specular methods.
- - sRGB support.
- - LATC and BPTC texture compression support.
- - Screen-space ambient occlusion.
-
-
--------------------------------------------------------------------------------
- COMPILATION
--------------------------------------------------------------------------------
-
-For *nix/MinGW:
-
-1. Download an appropriate version of the ioq3 source code. For version 32 of
- Rend2, r2328 should do, though the latest may work as well. For
- details on how to do this, see http://ioquake3.org/get-it/source-codes/ .
-
-2. Copy the patch file (for v32, vbos-glsl-31a.diff) into the directory you put
- the ioq3 source code. There should be a README in that directory.
-
-3. Run 'patch -p0 <vbos-glsl-31a.diff' then 'make'.
-
-Compiling on different platforms and with different compilers hasn't been
-tested. The MSVC project file should work, but it hasn't been tested.
-
-
--------------------------------------------------------------------------------
- INSTALLATION
--------------------------------------------------------------------------------
-
-For *nix:
-
-1. This should be identical to installing ioq3. Check their README for more
- details.
-
-
-For Win32:
-
-1. Have a Quake 3 install, fully patched.
-
-2. Copy the following files into Quake 3's install directory:
-
- ioquake3.x86.exe
- renderer_opengl1_x86.dll
- renderer_rend2_x86.dll
-
- These can be found in build/release-mingw32-x86 after compiling, or bug
- someone to release binaries.
-
-
--------------------------------------------------------------------------------
- RUNNING
--------------------------------------------------------------------------------
-
-1. Start ioquake3. (ioquake3.x86.exe on Win32)
-
-2. Open the console (default key ~) and type '/cl_renderer rend2; vid_restart'
-
-3. Enjoy.
-
-
--------------------------------------------------------------------------------
- CVARS
--------------------------------------------------------------------------------
-
-Cvars for simple rendering features:
- r_ext_compressed_textures - Automatically compress textures.
- 0 - No texture compression. (default)
- 1 - DXT/LATC texture compression if
- supported.
- 2 - BPTC texture compression if supported.
-
- r_ext_framebuffer_multisample - Multisample Anti-aliasing.
- 0 - None. (default)
- 1-16 - Some.
- 17+ - Too much!
-
- r_ssao - Enable screen-space ambient occlusion.
- Currently eats framerate and has some
- visible artifacts.
- 0 - No. (default)
- 1 - Yes.
-
- r_softOverbright - Enable software overbrighting. This enables
- overbrighting even in a window. Is disabled
- when r_toneMap 1 and r_hdr 1.
- 0 - No.
- 1 - Yes. (default)
-
-Cvars for HDR and tonemapping:
- r_hdr - Do scene rendering in a framebuffer with
- high dynamic range. (Less banding, and
- exposure changes look much better)
- 0 - No.
- 1 - Yes. (default)
-
- r_cameraExposure - Cheat. Alter brightness, in powers of two.
- -2 - 4x as dark.
- 0 - Normal. (default)
- 0.5 - Sqrt(2)x as bright.
- 2 - 4x as bright.
-
- r_postProcess - Enable post-processing.
- 0 - No.
- 1 - Yes. (default)
-
- r_toneMap - Enable tone mapping. Requires
- r_hdr and r_postProcess.
- 0 - No.
- 1 - Yes. (default)
-
- r_forceToneMap - Cheat. Override built-in and map tonemap
- settings and use cvars r_forceToneMapAvg,
- r_forceToneMapMin, and r_forceToneMapMax.
- 0 - No. (default)
- 1 - Yes.
-
- r_forceToneMapAvg - Cheat. Map average scene luminance to this
- value, in powers of two. Requires
- r_forceToneMap.
- -2.0 - Dark.
- -1.0 - Kinda dark. (default).
- 2.0 - Too bright.
-
- r_forceToneMapMin - Cheat. After mapping average, luminance
- below this level is mapped to black.
- Requires r_forceToneMap.
- -5 - Not noticeable.
- -3.25 - Normal. (default)
- 0.0 - Too dark.
-
- r_forceToneMapMin - Cheat. After mapping average, luminance
- above this level is mapped to white.
- Requires r_forceToneMap.
- 0.0 - Too bright.
- 1.0 - Normal. (default).
- 2.0 - Washed out.
-
- r_autoExposure - Do automatic exposure based on scene
- brightness. Hardcoded to -2 to 2 on maps
- that don't specify otherwise. Requires
- r_hdr, r_postprocess, and r_toneMap.
- 0 - No.
- 1 - Yes. (default)
-
- r_forceAutoExposure - Cheat. Override built-in and map auto
- exposure settings and use cvars
- r_forceAutoExposureMin and
- r_forceAutoExposureMax.
- 0 - No. (default)
- 1 - Yes.
-
- r_forceAutoExposureMin - Cheat. Set minimum exposure to this value,
- in powers of two. Requires
- r_forceAutoExpsure.
- -3.0 - Dimmer.
- -2.0 - Normal. (default)
- -1.0 - Brighter.
-
- r_forceAutoExposureMax - Cheat. Set maximum exposure to this value,
- in powers of two. Requires
- r_forceAutoExpsure.
- 1.0 - Dimmer.
- 2.0 - Normal. (default)
- 3.0 - Brighter.
-
- r_srgb - Treat all input textures as sRGB, and do
- final rendering in a sRGB framebuffer. Only
- required if assets were created with it in
- mind.
- 0 - No. (default)
- 1 - Yes.
-
-Cvars for advanced material usage:
- r_normalMapping - Enable normal mapping for materials that
- support it, and also specify advanced
- shading techniques.
- 0 - No.
- 1 - Yes. (default)
- 2 - Yes, and use Oren-Nayar reflectance
- model.
- 3 - Yes, and use tri-Ace's Oren-Nayar
- reflectance model.
-
- r_specularMapping - Enable specular mapping for materials that
- support it, and also specify advanced
- specular techniques.
- 0 - No.
- 1 - Yes, and use tri-Ace. (default)
- 2 - Yes, and use Blinn-Phong.
- 3 - Yes, and use Cook-Torrance.
- 4 - Yes, and use Torrance-Sparrow.
-
- r_deluxeMapping - Enable deluxe mapping. (Map is compiled
- with light directions.) Even if the map
- doesn't have deluxe mapping compiled in,
- an approximation based on the lightgrid
- will be used.
- 0 - No.
- 1 - Yes. (default)
-
- r_parallaxMapping - Enable parallax mapping for materials that
- support it.
- 0 - No. (default)
- 1 - Yes.
-
-Cvars for image interpolation and generation:
- r_imageUpsample - Use interpolation to artifically increase
- the resolution of all textures. Looks good
- in certain circumstances.
- 0 - No. (default)
- 1 - 2x size.
- 2 - 4x size.
- 3 - 8x size, etc
-
- r_imageUpsampleMaxSize - Maximum texture size when upsampling
- textures.
- 1024 - Default.
- 2048 - Really nice.
- 4096 - Really slow.
- 8192 - Crash.
-
- r_imageUpsampleType - Type of interpolation when upsampling
- textures.
- 0 - None. (probably broken)
- 1 - Bad but fast (default,
- FCBI without second derivatives)
- 2 - Okay but slow (normal FCBI)
-
- r_genNormalMaps - Naively generate normal maps for all
- textures.
- 0 - Don't. (default)
- 1 - Do.
-
-Cvars for the sunlight and cascaded shadow maps:
- r_forceSun - Cheat. Force sunlight and shadows, using sun
- position from sky material.
- 0 - Don't. (default)
- 1 - Do.
- 2 - Sunrise, sunset.
-
- r_forceSunMapLightScale - Cheat. Scale map brightness by this factor
- when r_forceSun 1.
- 0.5 - Default
-
- r_forceSunLightScale - Cheat. Scale sun brightness by this factor
- when r_forceSun 1.
- 0.5 - Default
-
- r_forceSunAmbientScale - Cheat. Scale sun ambient brightness by this
- factor when r_forceSun 1.
- 0.2 - Default
-
- r_sunShadows - Enable sunlight and cascaded shadow maps for
- it on maps that support it.
- 0 - No.
- 1 - Yes. (default)
-
- r_shadowFilter - Enable filtering shadows for a smoother
- look.
- 0 - No.
- 1 - Some. (default)
- 2 - Much.
-
- r_shadowMapSize - Size of each cascaded shadow map.
- 256 - 256x256, ugly, probably shouldn't
- go below this.
- 512 - 512x512, passable.
- 1024 - 1024x1024, good. (default)
- 2048 - 2048x2048, extreme.
- 4096 - 4096x4096, indistinguishable from
- 2048.
-
-Cvars that you probably don't care about or shouldn't mess with:
- r_mergeMultidraws - Optimize number of calls to
- glMultiDrawElements().
- 0 - Don't.
- 1 - Do some. (default)
- 2 - Do more than necessary (eats CPU).
-
- r_mergeLeafSurfaces - Merge surfaces that share common materials
- and a common leaf. Speeds up rendering.
- 0 - Don't.
- 1 - Do. (default)
-
- r_recalcMD3Normals - Recalculate the normals when loading an MD3.
- Fixes normal maps in some cases but looks
- ugly in others.
- 0 - Don't. (default)
- 1 - Do.
-
- r_depthPrepass - Do a depth-only pass before rendering.
- Speeds up rendering in cases where advanced
- features are used. Required for
- r_sunShadows.
- 0 - No.
- 1 - Yes. (default)
-
- r_normalAmbient - Split map light into ambient and directed
- portions when doing deluxe mapping. Not
- very useful.
- 0 - Don't. (default).
- 0.3 - 30% ambient, 70% directed.
- 1.0 - 100% ambient.
-
- r_mergeLightmaps - Merge the small (128x128) lightmaps into
- 2 or fewer giant (4096x4096) lightmaps.
- Easy speedup.
- 0 - Don't.
- 1 - Do. (default)
-
- r_shadowCascadeZNear - Near plane for shadow cascade frustums.
- 4 - Default.
-
- r_shadowCascadeZFar - Far plane for shadow cascade frustums.
- 3072 - Default.
-
- r_shadowCascadeZBias - Z-bias for shadow cascade frustums.
- -256 - Default.
-
-
-Cvars that have broken bits:
- r_dlightMode - Change how dynamic lights look.
- 0 - Quake 3 style dlights, fake
- brightening. (default)
- 1 - Actual lighting, no shadows.
- 2 - Light and shadows. (broken)
-
- r_pshadowDist - Virtual camera distance when creating shadow
- maps for projected shadows. Deprecated.
-
- cg_shadows - Old shadow code. Deprecated.
-
-
--------------------------------------------------------------------------------
- MATERIALS
--------------------------------------------------------------------------------
-
-Rend2 supports .mtr files, which are basically the same as .shader files, and
-are located in the same place, but override existing .shader files if they
-exist. This is to allow maps and mods to use the new material features without
-breaking the map when using the old renderer.
-
-Here's an example of a material stored in one, showing off some new features:
-
- textures/abandon/grass
- {
- qer_editorimage textures/abandon/grass.jpg
- {
- map textures/abandon/grass3_256_d.jpg
- rgbgen identity
- }
- {
- stage normalparallaxmap
- map textures/abandon/grass3_1024_n.png
- }
- {
- stage specularmap
- map textures/abandon/grass3_256_s.png
- specularReflectance 0.12
- specularExponent 16
- }
- {
- map $lightmap
- blendfunc GL_DST_COLOR GL_ZERO
- }
- }
-
-The first thing to notice is that this is basically the same as old Quake 3
-shader files. The next thing to notice are the new keywords. Here is what
-they mean:
-
- stage <type>
- - State how this imagemap will be used by Rend2:
- diffuseMap - Standard, same as no stage entry
- normalMap - Image will be used as a normal map
- normalParallaxMap - Image will be used as a normal map with
- alpha treated as height for parallax mapping
- specularMap - Image will be used as a specular map with
- alpha treated as shininess.
-
- specularReflectance <value>
- - State how metallic this material is. Metals typically have a high
- specular and a low diffuse, so this is typically high for them, and low
- for other materials, such as plastic. For typical values for various
- materials, see http://refractiveindex.info , pick a material, then scroll
- down to the reflection calculator and look up its reflectance. Default
- is 0.04, since most materials aren't metallic.
-
- specularExponent <value>
- - State how shiny this material is. Note that this is modulated by the
- alpha channel of the specular map, so if it were set to 16, and the alpha
- channel of the specular map was set to 0.5, then the shininess would be
- set to 8. Default 256.
-
-An important note is that normal and specular maps influence the diffuse map
-declared before them, so materials like this are possible:
-
- textures/terrain/grass
- {
- qer_editorimage textures/terrain/grass.jpg
-
- {
- map textures/terrain/rock.jpg
- }
- {
- stage normalparallaxmap
- map textures/terrain/rock_n.png
- }
- {
- stage specularmap
- map textures/terrain/rock_s.jpg
- }
- {
- map textures/terrain/grass.jpg
- blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
- alphaGen vertex
- }
- {
- stage normalparallaxmap
- map textures/terrain/grass_n.png
- }
- {
- stage specularmap
- map textures/terrain/grass_s.png
- specularReflectance 0.12
- }
- {
- map $lightmap
- blendfunc GL_DST_COLOR GL_ZERO
- }
- }
-
-Though note due to the complexity of lighting, dynamic light (including
-sunlight with cascaded shadow maps) currently only works 100% on materials like
-this, where the second diffuse map doesn't have its own alpha, and only
-uses vertex alpha. YMMV.
-
-Another addition to materials is working normal/specular maps on vertex lit
-surfaces. To enable this, make your material look like this:
-
- textures/vehicles/car
- {
- qer_editorimage textures/vehicles/car.jpg
-
- {
- map textures/vehicles/car.jpg
- rgbGen vertexLit
- }
- {
- stage normalparallaxmap
- map textures/vehicles/car_n.jpg
- }
- {
- stage specularmap
- map textures/vehicles/car_s.jpg
- }
- }
-
-Note the new keyword, 'vertexLit' after rgbGen. This is analogous to
-'rgbGen vertex', except a light direction will be determined from the lightgrid
-and used with the normal and specular maps. 'exactVertexLit' exists as well,
-and is the equivalent for 'exactVertex'.
-
-
--------------------------------------------------------------------------------
- DYNAMIC SUNLIGHT AND CASCADED SHADOW MAPS
--------------------------------------------------------------------------------
-
-This adds a new keyword to sky materials, q3gl2_sun. The syntax is:
-
- q3gl2_sun <red> <green> <blue> <intensity> <degrees> <mapLightScale>
- <ambientLightScale>
-
-Note the first six parameters are the same as in q3map_sun or q3map_sunExt,
-and the last two indicate scaling factors for the map brightness and an ambient
-light of the same color as the sun.
-
-There are currently two ways to use this in your own (and other people's) maps.
-
- 1. Create your map as normal and add a 'q3gl2_sun' line after your
- 'q3map_sun' line in your sky material, like so:
-
- textures/skies/bluesky
- {
- qer_editorimage textures/skies/bluesky.jpg
-
- surfaceparm nomarks
- surfaceparm noimpact
- surfaceparm nolightmap
- surfaceparm sky
- q3map_sunExt 240 238 200 100 195 35 3 16
- q3gl2_sun 240 238 200 50 195 35 3 0.5 0.2
- q3map_skylight 50 16
- q3map_lightimage $whiteimage
-
- skyparms env/bluesky - -
- }
-
- The advantages with this method are that your map will continue to work
- with the old renderer with the sunlight baked into the lightmap, and it
- can be used with existing maps without recompilation. The downside is
- artifacts like doubled shadows and uneven shadow edges.
-
- 2. Use 'q3gl2_sun' instead of 'q3map_sun' or 'q3map_sunExt', like so:
-
- textures/skies/bluesky
- {
- qer_editorimage textures/skies/bluesky.jpg
-
- surfaceparm nomarks
- surfaceparm noimpact
- surfaceparm nolightmap
- surfaceparm sky
- q3gl2_sun 240 238 200 50 195 35 3 0.5 0.2
- q3map_skylight 50 16
- q3map_lightimage $whiteimage
-
- skyparms env/bluesky - -
- }
-
- The advantages with this method are that you don't get the artifacts that
- characterize the other method, and your map compiles a lot faster without
- the sunlight bouncing calculations. The downsides are that your map will
- not display properly with the old renderer, and you lose the bounced light
- that compiling the map with q3map_sun* in it would have.
-
-
--------------------------------------------------------------------------------
- TONE MAPPING AND AUTO EXPOSURE
--------------------------------------------------------------------------------
-
-This adds a new keyword to sky materials, q3gl2_tonemap. The syntax is:
-
- q3gl2_tonemap <toneMapMin> <toneMapAvg> <toneMapMax <autoExposureMin>
- <autoExposureMax>
-
-Each of these settings corresponds to a matching cvar, so you can view and
-adjust the effect before settling on fixed settings.
-
-
--------------------------------------------------------------------------------
- THANKS
--------------------------------------------------------------------------------
-
-I'd like to take this part of the readme to thank the numerous people who
-contributed thoughts, ideas, and whole swaths of code to this project.
-
- - Id Software, for creating Quake 3 and releasing its source code under a
- GPL license, without which this project would not be possible.
-
- - Zachary 'Zakk' Slater, Thilo Schulz, Tim Angus, and the rest of the
- ioquake3 team and contributors, for improving massively upon the raw Quake
- 3 source, and accepting my and gimhael's modular renderer patch.
-
- - Robert 'Tr3B' Beckebans and the other contributors to XReaL, for letting me
- liberally copy code from you. :)
-
- - Andrew 'Black Monk' Prosnik, Andrei 'Makro' Drexler, Tomi 'T.T.I.' Isoaho,
- Richard 'JBravo' Allen, Walter 'Johnny Rocket' Somol, and the rest of the
- Boomstick Studios, for contributing code, feature requests, and testing.
-
- - Yoshiharu Gotanda, Tatsuya Shoji, and the rest of tri-Ace's R&D Department,
- for creating the tri-Ace shading equations and posting their derivations in
- simple English.
-
- - Matthias 'gimhael' Bentrup, for random ideas and bits of code.
-
- - Evan 'megatog615' Goers, for testing, ideas, and bugging me just enough
- that I'd write documentation. :)
-
- - The folks at #ioquake3, who don't seem to mind when I suddenly drop a
- screenshot and insist on talking about it. :)
-
- - And lots of various other random people, who posted on forums, blogs, and
- Wikipedia, who helped in small but numerous ways.
-
-If I missed you in this section, feel free to drop me a line and I'll add you.
-
-
--------------------------------------------------------------------------------
- CONTACT
--------------------------------------------------------------------------------
-
-My name is James Canete, and I wrote most of this readme. Also, a renderer.
-
-If you wish to get in touch with me, try my GMail at use.less01 (you should be
-able to solve this), or look for SmileTheory in #ioquake3 on irc.freenode.net.