Difference between revisions of "Replacing ARB shaders"

From The DarkMod Wiki
Jump to navigationJump to search
(Added comment that rotoedge shader is used in The Creeps FM.)
(Added blur.)
 
(7 intermediate revisions by the same user not shown)
Line 67: Line 67:
 
|Only used in legacy <tt>textures/sfx/vpring3</tt> material, which is only used in as a part of <tt>caco_lightninghit</tt> particle in Requiem FM.
 
|Only used in legacy <tt>textures/sfx/vpring3</tt> material, which is only used in as a part of <tt>caco_lightninghit</tt> particle in Requiem FM.
 
However, the mentioned particle is not referenced in that FM, and is not even loaded.
 
However, the mentioned particle is not referenced in that FM, and is not even loaded.
 +
 +
|-
 +
|blur.vfp
 +
|Material
 +
|DEAD (2019.12.01)
 +
|blur.?s
 +
|Only referenced in <tt>textures/fsfx/blur</tt> material in <tt>tdm_bloom.mtr</tt>. The material is not referenced anywhere.
 +
Was added long time ago, not never used ([http://forums.thedarkmod.com/index.php?/topic/6775-underwater-overlay/&do=findComment&comment=131028 reference]).
  
 
|-
 
|-
Line 101: Line 109:
 
You should see on the TV screen: bright yellow spots on blue background; moving, merging, and splitting.
 
You should see on the TV screen: bright yellow spots on blue background; moving, merging, and splitting.
 
If the screen looks uniform without any spots, then it is broken.
 
If the screen looks uniform without any spots, then it is broken.
 +
 +
|-
 +
|transparency_hack.vfp
 +
|Material
 +
|DEAD (2019.11.30)
 +
|transparency_hack.?s
 +
|Referenced in <tt>tdm_translucent.mtr</tt> in several versions of <tt>translucent/pumpkin</tt>.
 +
Not used anywhere.
 +
 +
|-
 +
|transparent_hack.vfp
 +
|Material
 +
|DEAD (2019.11.30)
 +
|transparent_hack.?s
 +
|Used in <tt>translucent_exp.mtr</tt> in material <tt>translucent/wallpaper_fancy_red_experiment</tt>.
 +
Works exactly the same as <tt>transparency_hack.vfp</tt>.
 +
Not used anywhere.
  
 
|-
 
|-
Line 184: Line 209:
  
 
|-
 
|-
|transparency_hack.vfp
+
|colorProcess.vfp
transparent_hack.vfp
+
|Postprocess
|Material
+
|DEAD (2019.11.30)
|TODO
+
|colorProcess.?s
|*.?s
+
|Not referenced anywhere except [http://forums.thedarkmod.com/index.php?/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/&do=findComment&comment=332343 on forums].
|Referenced in some materials
+
It turns the image into grayscale. Not used anywhere.
 
 
|-
 
|(fixed pipeline)
 
|Designed for use in the 'old stage' routine (draw_common.cpp) but at some point became the 'default' shader for GUI's, etc
 
|OK (2019.05.26)
 
|oldStage.?s
 
|Check any map (e.g. test/glass) + main menu
 
  
 
|-
 
|-
 
|frob.vfp
 
|frob.vfp
 
|Material
 
|Material
|TODO
+
|DEAD (2019.11.30)
 
|frob_arb.?s
 
|frob_arb.?s
|Referenced in <tt>test_frobhilight.mtr</tt>.
+
|Referenced in <tt>test_frobhilight.mtr</tt>, which is not packaged into releases.
 
+
Was implemented in 2009, but was not released ([http://forums.thedarkmod.com/index.php?/topic/8747-tweaks-to-frob-highlight/&do=findComment&comment=179731 reference])
|-
 
|(extra material stages)
 
|Replacement for material stage frob highlight. The ARB2 version does not seem to be used anywhere?
 
|WIP (2019.05.26)
 
|frob.?s
 
|Any map +r_newFrob 1
 
 
 
|-
 
|(legacy gl texgen's)
 
|Replacement for deprecated texgen code. Material stages TG_SKYBOX_CUBE/TG_WOBBLESKY_CUBE
 
|Stable in 2.07
 
|cubemap.?s
 
|(insert map name here - Hidden Hands 1?)
 
 
 
 
 
|-
 
|(legacy gl texgen's)
 
|Replacement for deprecated texgen code. Light material "fogLight"
 
|Stable in 2.07
 
|fog.?s
 
|(insert map name here - Heart of Lone Salvation?)
 
 
 
 
 
|-
 
|(legacy gl texgen's)
 
|Replacement for deprecated texgen code. Light material "blendLight"
 
|Stable in 2.07
 
|blend.?s
 
|(insert map name here - Closemouthed Shadows?)
 
 
 
  
 
|-
 
|-
 
|shadow.vp
 
|shadow.vp
|ARB2 to GLSL manual conversion
+
|Ambient
|Stable in 2.07
+
|OK
 
|stencilshadow.?s
 
|stencilshadow.?s
|(insert map name here - Closemouthed Shadows?)
+
|Run any map, e.g. Closemouthed Shadows. Set <tt>r_shadows 1</tt> and check that stencil shadows work properly.
 
+
Note: Converted manually, supposedly before 2.06.
  
 
|-
 
|-
|ambientInteraction.vfp/ambient_cubic_light.vfp
+
|ambientInteraction.vfp
|ARB2 to GLSL manual conversion
+
ambient_cubic_light.vfp
|Stable in 2.07
+
|Interaction
 +
|OK
 
|ambientInteraction.?s
 
|ambientInteraction.?s
|(insert map name here - Closemouthed Shadows?)
+
|Run e.g. Closemouthed Shadows FM and put out the candles. If this shader is not working, then it would be absolutely black in the dark, no matter how bright your monitor is.
 +
Note: converted manually, supposedly before 2.06.
  
 
|-
 
|-
|test_direct.vfp/interaction_direct.vfp/cubic_light_point.vfp/cubic_light_proj.vfp/test_cubic_light_point.vfp/test_cubic_light_proj.vfp
+
|test.vfp
|ARB2 to GLSL manual conversion
+
interaction.vfp
|Stable in 2.07
+
|Interaction
 +
|OK
 
|interaction.?s
 
|interaction.?s
|(insert map name here - Closemouthed Shadows?)
+
|Start any FM, check that basic lighting works.
|
+
Note: converted manually, supposedly before 2.06.
 +
These two shaders are the most recently updated, so it is quite likely that they were used for simple/enhanced interaction before GLSL arrived.
  
 
|-
 
|-
|(fixed pipeline)
+
|cubic_light_point.vfp
|DepthPass
+
cubic_light_proj.vfp
|OK (2019.05.27)
+
test_cubic_light_point.vfp
|depthAlpha.?s
+
test_cubic_light_proj.vfp
|Check any map (e.g. test/glass).
+
|Interaction
Used for depth prepass, so if it uses incompatible vertex transform, everything would depth-fight like crazy.
+
|OK
|
+
|interaction.?s
 +
|Custom version of interaction shader for cubic lights.
 +
For testing, find any cubic light on a map and check that it works...
 +
Note: converted manually, supposedly before 2.06.
  
 
|-
 
|-
|test.vfp
+
|interaction_102.vfp
interaction.vfp
+
interaction_direct.vfp
|Unused (?) ARB2 shaders
+
test_prev.vfp
 
+
test_direct.vfp
 +
|Interaction
 +
|DEAD
 +
|(none)
 +
|Most likely, some old versions of interaction shader.
 
|}
 
|}
  
Line 301: Line 300:
 
'''Testing instructions''' must explain how to properly test this shader to ensure that replacement works correctly.
 
'''Testing instructions''' must explain how to properly test this shader to ensure that replacement works correctly.
 
Write exact FM/map, coordinates, settings, what to see/expect, etc.
 
Write exact FM/map, coordinates, settings, what to see/expect, etc.
 +
 +
 +
 +
 +
 +
<big>Some extra</big>:
 +
 +
{|class="wikitable sortable" border=1 cellspacing=0 cellpadding=2 width=100%
 +
 +
|-
 +
!bgcolor=#d0d0e0 width="200px"|Filename
 +
!bgcolor=#d0d0e0 width="100px"|Type
 +
!bgcolor=#d0d0e0 width="100px"|Status
 +
!bgcolor=#d0d0e0 width="200px"|Replacement
 +
!bgcolor=#d0d0e0|Testing instructions & Comments
 +
 +
|-
 +
|(fixed pipeline)
 +
|Designed for use in the 'old stage' routine (draw_common.cpp) but at some point became the 'default' shader for GUI's, etc
 +
|OK (2019.05.26)
 +
|oldStage.?s
 +
|Check any map (e.g. test/glass) + main menu
 +
 +
|-
 +
|(extra material stages)
 +
|Replacement for material stage frob highlight.
 +
|WIP (2019.05.26)
 +
|frob.?s
 +
|Any map +r_newFrob 1
 +
 +
|-
 +
|(legacy gl texgen's)
 +
|Replacement for deprecated texgen code. Material stages TG_SKYBOX_CUBE/TG_WOBBLESKY_CUBE
 +
|Stable in 2.07
 +
|cubemap.?s
 +
|(insert map name here - Hidden Hands 1?)
 +
 +
|-
 +
|(legacy gl texgen's)
 +
|Replacement for deprecated texgen code. Light material "fogLight"
 +
|Stable in 2.07
 +
|fog.?s
 +
|(insert map name here - Heart of Lone Salvation?)
 +
 +
|-
 +
|(legacy gl texgen's)
 +
|Replacement for deprecated texgen code. Light material "blendLight"
 +
|Stable in 2.07
 +
|blend.?s
 +
|(insert map name here - Closemouthed Shadows?)
 +
 +
|-
 +
|(fixed pipeline)
 +
|DepthPass
 +
|OK (2019.05.27)
 +
|depthAlpha.?s
 +
|Check any map (e.g. test/glass).
 +
Used for depth prepass, so if it uses incompatible vertex transform, everything would depth-fight like crazy.
 +
|
 +
 +
|}
  
  
 
{{coding}}
 
{{coding}}

Latest revision as of 17:18, 30 November 2019

This table should summarize the current state for every ARB shader.

Filename Type Status Replacement Testing instructions & Comments
heatHazeWithDepth.vfp Material OK (2019.05.26) heatHazeWithDepth.?s map test/glass

everything behind glass should be warped as you strafe along it

heatHazeWithAlphaDepth.vfp Material OK (2019.09.15) heatHazeWithAlphaDepth.?s Volta 2 Cauldron / setviewpos -880 390 -2700 45 80 15.

The underwater stones are darkened with increasing layers of water on top of them (link). This FM has its own copy of ARB shader. Three more FMs have a copy, but don't use their materials with this shader.

heatHaze.vfp Material OK (2019.09.14) heatHaze.?s Accountant1 / setviewpos -2020 -2570 -125 20 130 0

Rain drops cause waves, which warp the picture of the ground.

heatHazeWithMask.vfp Material OK (2019.09.14) heatHazeWithMask.?s A Night To Remember / setviewpos 4500 -1500 -1210 -90 0 0 (noclip)

When looking up from the bloody water, the ceiling is distorted: that's this shader working.

HeatHazeWithMaskAndDepth.vfp Material OK (2019.09.15) HeatHazeWithMaskAndDepth.?s Used by water_clear material, which is almost everywhere.

For instance, in Accountant1 in sewers at setviewpos -2150 -1720 -445 45 -180 0, water surface distorts floor.

heatHazeWithMaskAndBlur.vfp Material OK (2019.09.15) heatHazeWithMaskAndBlur.?s Currently used only in material water_blurred.

A Night To Remember / setviewpos 6370 -1500 -1350 50 30. Look closer into pot: carrots are not only warped, but also blurred.

heatHazeWithMaskAndVertex.vfp Material DEAD (2019.09.15) heatHazeWithMaskAndVertex.?s Only used in legacy textures/sfx/vpring3 material, which is only used in as a part of caco_lightninghit particle in Requiem FM.

However, the mentioned particle is not referenced in that FM, and is not even loaded.

blur.vfp Material DEAD (2019.12.01) blur.?s Only referenced in textures/fsfx/blur material in tdm_bloom.mtr. The material is not referenced anywhere.

Was added long time ago, not never used (reference).

ambientEnvironment.vfp Material DEAD (2019.09.14) ambientEnvironment.?s Not used anywhere in TDM 2.0+. Was used for new ambient lighting, enabled under tdm_ambient_method 2. Still present in all materials under if (global5==2).

See the original thread and probably disclaimer in wiki article.

ambientEnvVertexBlend.vfp Material DEAD (2019.09.14) ambientEnvVertexBlend.?s A rare special case of ambientEnvironment (link)

Mentioned in St. Alban's Cathedral and NHAT, but seems to be as dead as the ambientEnvironment.vfp.

fresnel.vfp Material OK (2019.09.14) fresnel.?s Accountant1 / setviewpos -2260 -2030 -130 30 -150 0 (better enable lantern)

This puddle is rendered with this shader (no idea about its effect). It seems to be the only usage across all FMs.

metaball.vfp Material/FM Needs REPACK!!! metaball.?s In the Black / setviewpos 4800 3350 600 30 -90 0.

You should see on the TV screen: bright yellow spots on blue background; moving, merging, and splitting. If the screen looks uniform without any spots, then it is broken.

transparency_hack.vfp Material DEAD (2019.11.30) transparency_hack.?s Referenced in tdm_translucent.mtr in several versions of translucent/pumpkin.

Not used anywhere.

transparent_hack.vfp Material DEAD (2019.11.30) transparent_hack.?s Used in translucent_exp.mtr in material translucent/wallpaper_fancy_red_experiment.

Works exactly the same as transparency_hack.vfp. Not used anywhere.

soft_particle.vfp Ambient (particles) OK (2019.09.14) soft_particle.?s Set r_useSoftParticles 1 and check e.g. fire.

Start NewJob, go to setviewpos 390 -1440 45 45 22 0 (noclip). Soft particles remove the blocky quadrilateral edges from the piece of wood.

environment.vfp Ambient OK (2019.05.26) environment.?s map test/glass

fake yellow reflections should be visible on the windows

bumpyEnvironment.vfp Ambient OK (2019.05.27) bumpyEnvironment.?s PD2: All the Way Up / setviewpos 4700 -250 -250 / link

Potions should look properly: see t_useGLSL 0, r_uniformTransforms 0 for reference Be sure to check that fake reflection texture is oriented the same way.

rotoedge.vfp Postprocess/Material OK (2019.09.14) rotoedge.?s This is optional/test postprocess shader (reference).

Enabled by g_testPostProcess textures/postprocess/rotoedge on any map. WS3 and WS4 missions have custom version of the material, but don't use it anywhere.

It is used in The Creeps FM: run setviewpos -900 480 -350 and take the crown. Everything you see through the revenant should be rotoscoped.

cookMath_pass1.vfp

cookMath_pass2.vfp brightPass_opt.vfp blurx.vfp blury.vfp finalScenePass_opt.vfp

Postprocess Not working (2019.11.25) {name}.?s Set r_postprocess 1 or enable postprocessing in video settings in menu.

Look at lights and check how they change if you modify r_postprocess_* cvars. Verify that candle flames become blurry if you increase "bloom".

afxadd.vfp

afxblend.vfp afxblend2.vfp afxmodulate.vfp afxweight.vfp blurx????.vfp blury????.vfp

Postprocess DEAD (2019.11.27) *.?s Were used for Bloom before the current postprocessing appeared (reference).

Referenced in tdm_bloom.mtr and tdm_bloom_afx.mtr, but those materials not used anywhere.

avgLum.vfp

avgLumInitial.vfp adaptLum.vfp brightPass.vfp simpleHalo.vfp finalScenePass.vfp cookMath_pass3.vfp cookVignette.vfp decodeTexture.vfp

Postprocess DEAD (2019.11.27) *.?s Were initially used for in postprocessing, but were removed before release (reference).

Referenced in tdm_postprocess.mtr, but those materials not used anywhere.

colorProcess.vfp Postprocess DEAD (2019.11.30) colorProcess.?s Not referenced anywhere except on forums.

It turns the image into grayscale. Not used anywhere.

frob.vfp Material DEAD (2019.11.30) frob_arb.?s Referenced in test_frobhilight.mtr, which is not packaged into releases.

Was implemented in 2009, but was not released (reference)

shadow.vp Ambient OK stencilshadow.?s Run any map, e.g. Closemouthed Shadows. Set r_shadows 1 and check that stencil shadows work properly.

Note: Converted manually, supposedly before 2.06.

ambientInteraction.vfp

ambient_cubic_light.vfp

Interaction OK ambientInteraction.?s Run e.g. Closemouthed Shadows FM and put out the candles. If this shader is not working, then it would be absolutely black in the dark, no matter how bright your monitor is.

Note: converted manually, supposedly before 2.06.

test.vfp

interaction.vfp

Interaction OK interaction.?s Start any FM, check that basic lighting works.

Note: converted manually, supposedly before 2.06. These two shaders are the most recently updated, so it is quite likely that they were used for simple/enhanced interaction before GLSL arrived.

cubic_light_point.vfp

cubic_light_proj.vfp test_cubic_light_point.vfp test_cubic_light_proj.vfp

Interaction OK interaction.?s Custom version of interaction shader for cubic lights.

For testing, find any cubic light on a map and check that it works... Note: converted manually, supposedly before 2.06.

interaction_102.vfp

interaction_direct.vfp test_prev.vfp test_direct.vfp

Interaction DEAD (none) Most likely, some old versions of interaction shader.


List of shader Types:

  • Material: shader filename is referenced in a stage of stock material definition.
Currently, each of these shaders exists in both ARB and GLSL version, but ARB version is used only if r_useGLSL is disabled.
  • FM: shader supplied or overrided by a particular FM --- most likely, specified in material definition.
  • Ambient: shader is loaded directly by C++ code and used during rendering, independent of any light source.
  • Interaction: shader is loaded directly by C++ code and used during rendering, in a light-surface interaction.
  • Postprocessing: shader used for full-screen effects after main rendering is over.


This post explains different modes for testing. In order to set OK Status to a shader, please check that it works properly with following settings:

  • r_useGLSL 1
  • r_forceGlslPrograms 1 (2019.09.14: already removed)
  • r_uniformTransforms 0 and 1 (both cases)

Also set the date when you checked it.


Replacement should specify which files contain the equivalent or superseding code in GLSL. If the replacing code is active only with some settings, write those settings under filename.


Testing instructions must explain how to properly test this shader to ensure that replacement works correctly. Write exact FM/map, coordinates, settings, what to see/expect, etc.



Some extra:

Filename Type Status Replacement Testing instructions & Comments
(fixed pipeline) Designed for use in the 'old stage' routine (draw_common.cpp) but at some point became the 'default' shader for GUI's, etc OK (2019.05.26) oldStage.?s Check any map (e.g. test/glass) + main menu
(extra material stages) Replacement for material stage frob highlight. WIP (2019.05.26) frob.?s Any map +r_newFrob 1
(legacy gl texgen's) Replacement for deprecated texgen code. Material stages TG_SKYBOX_CUBE/TG_WOBBLESKY_CUBE Stable in 2.07 cubemap.?s (insert map name here - Hidden Hands 1?)
(legacy gl texgen's) Replacement for deprecated texgen code. Light material "fogLight" Stable in 2.07 fog.?s (insert map name here - Heart of Lone Salvation?)
(legacy gl texgen's) Replacement for deprecated texgen code. Light material "blendLight" Stable in 2.07 blend.?s (insert map name here - Closemouthed Shadows?)
(fixed pipeline) DepthPass OK (2019.05.27) depthAlpha.?s Check any map (e.g. test/glass).

Used for depth prepass, so if it uses incompatible vertex transform, everything would depth-fight like crazy.