diff options
Diffstat (limited to 'rend2-readme.txt')
-rw-r--r-- | rend2-readme.txt | 606 |
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. |