1
0
Fork 0
fgdata/Shaders
Stuart Buchanan e5123eeb46 WS30 : terrain shaders from vs
Squashed commit of the following:

commit e7c89ffb600d1bf5cee2936b7dbff31089452745
Author: vs <vs2009@mail.com>
Date:   Fri Nov 5 23:44:35 2021 +1000

    WS30 shaders:

    - WS30-ALS and WS30-ALS-ultra fargment and vertex shaders: Fix NDotL being used before it is initialised. Rename varying diffuse_term from WS2 terrain shaders to light_diffuse_comp as the full diffuse term is not calculated until the fragment shader.
    - WS30-ALS-ultra.frag: Enable haze and lighting by default.

commit 9b55ad051a8d7f3568dfdcd6890655942999e8d0
Author: vs <vs2009@mail.com>
Date:   Wed Nov 3 22:50:29 2021 +1000

    WS30 terrain shaders: ws30-ALS-ultra.frag

    - For power users looking to profile transitions on different GPUs: The test phase toggles and settings for different transition options are available at the start of ws30-ALS-ultra.frag, along with explanations, and how to get accurate profile results on different GPUs. Just need to change a few numbers, save, and debug menu > configure dev extensions > reload shaders to activate.

    - Note: at a minimum, small scale transitions to remove the 'squareness' due to the landclass texture need to be used even on old GPUs.

    - All transition options are off by default. ws30-ALS-ultra.frag is active when the terrain quality slider is set to Ultra. Start by turning one of small or large scale transitions.

    - Texture mixing for small and large scale transitions don't work together, to reduce texture lookups. Turn one off when using the other.

    - Landclasses with contrasting colours make transition issues more visble. The driver control panel texture filtering settings reduces issues with seams at landclass borders.

    - ws30-ALS.frag is left untouched in this commit, for comparison and reviewing. ws30-ALS.frag is active when terrain quality slider is set High to Low.

    Changes:

    - Implement large scale transitions and small scale de-pixelisation of landclasses by searching the landclass texture. Several options and quality levels are available for profiling on different GPUs.
    - There are fixes for multiple issues dealing with texture rendering.

    Changelog:

    1.0 - Small-scale transitions:
    -- a) Remove squareness due to landclass texture by growing neighbour landclasses onto others depending on a growth priority. This feature uses 2 landclass texture lookups, 1 noise lookup, and only 1 ground texture lookup per point. For now the growth priority is simply the landclass id number. If this approach is used, growth priority would be a materials parameter. A way to set default growth priority by landclass via an xml file would be needed. There is flickering noise at long ranges due to small scale detail in the noise function used for growing landclasses. Partial derivative are used to turn off the feature, but turning off the feature too quickly still shows some square ness in distant landclasses.
    -- b) Reduce squareness due to landclass texture by mixing base textures of neighbouring landclasses. This is not perfect, as perfectly square shapes turn into perfectly square shapes with perfectly smudged edges. This uses 2 landclass texture lookups, and 2-3 ground texture lookups.
    -- c) - a) and b) can be run at once. This option will also fade the growths  gradually with distance. This uses 2 landclass texture lookups, 1 noise lookup, and 2-3 ground texture lookups.

    2.0 - Large scale transitions:
    -- a) Implemented by searching the landclass texture. The search pattern is current landlcass for the fragment at the center, and n search points in four directions along the s and t axes forming a cross. The search directions are configurable in the code, adn a minimum of 3 directions are needed. The step size is configurable. The fewer the steps, the larger the bands formed in the transitions. There are 1+4*n landclass lookups per n search points. e.g. 1 search point: 5 lookups, 4 search points:17 lookups, 10 search points: 41 lookups.
    -- b) An option to dither the transition bands by adding mixing noise is availble. This breaks up the visual impact of bands.
    -- c) There is some functionality to grow neighbours on a large scale. No growth priority is used - bothe neighbours will lose definition. A more advanced implementation can use several material parameters to define the nature of the transition: some transitions are very sharp in nature like with agriculture, other transitions can be very gradual, some transitions are patchy. Materials can have competing parameters, to determine which neighbour grows or has a shorter transition on one side. These parameters will need a way of specifying defaults by landclass.

    3.0 - Fixes
    -- a) - Fix seams at landclass borders. These are caused by different ground textures being stretched by different amounts. At the border, an incorrect mip-map level is looked up, causing a colour disontinuity in addition to the difference between landclasses. The reason the mip-map LoD is incorrect is because GPUs use 4 neighbouring pixels to figure out how fast texture coordinates change with respect to screenspace x and y (i.e. partial derivaitves), and use that information to pick a mip-map level. At a landlcass border, this calculation is incorrect.
    -- b) Fix seams at borders caused by the current detiling function. This is due to the detiling function changing the amount textures are stretched, as well as messing with coordinates.
    -- c) The solution to a) and b) is to use textureGrad() to lookup textures. It allows specifying partial derivatives. The partial derivatives for the normal texture coordinates are obtained by built-in funcions, and these need to be multiplied by each stretching factor, including different stretching inside conditionals. All future texture lookups that use custom coordinate scaling/manipulation need to use textureGrad. This fixes various signs of incorrect mip-map lod with distance and view angle (textures look stable/solid).
    -- d) Fix ground textures being stretched out of proportion in the detiling function. This is caused by tile dimensions not being unequal and texture stretching.
2021-11-05 19:59:32 +00:00
..
HDR HDR: Implement GTAO (Ground Truth Ambient Occlusion) 2021-09-01 04:26:03 +02:00
3dcloud-ALS-detailed.frag ALS: New cloud rendering detail level with more dramatic Mie scattering at cloud fringes done inside fragment shader 2018-08-30 09:17:36 +03:00
3dcloud-ALS-detailed.vert ALS: New cloud rendering detail level with more dramatic Mie scattering at cloud fringes done inside fragment shader 2018-08-30 09:17:36 +03:00
3dcloud-ALS.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
3dcloud-ALS.vert More infrastructure for perception filtering of moonlight 2017-11-13 10:27:25 +02:00
3dcloud.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
3dcloud.vert Fix for black clouds on ATI (bug 1160) 2013-12-25 23:14:04 +00:00
agriculture-ALS.frag Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
airfield-ALS.frag Implement a simple snow shader for the low quality levels 2021-01-19 11:10:44 +01:00
birds-ALS.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
birds-ALS.vert ALS bird shader 2016-04-30 21:27:28 +03:00
bowwave-ALS.frag Filtering for most remaining ALS shaders 2016-04-06 09:26:49 +03:00
building-ALS.vert Fix random buildings shader errors 2021-04-16 07:46:35 +02:00
building-default.vert Fix random buildings shader errors 2021-04-16 07:46:35 +02:00
building-model-ALS-ultra.vert Fix shader-based buildings on AMD/macOS 2021-01-22 20:59:34 +00:00
chute-ALS.vert Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
cliffs-ALS.frag Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
cloud-impostor-ALS.vert More infrastructure for perception filtering of moonlight 2017-11-13 10:27:25 +02:00
cloud-noctilucent-ALS.vert More infrastructure for perception filtering of moonlight 2017-11-13 10:27:25 +02:00
cloud-shadowfunc.frag Some fixes for the ALS overlay shader 2017-09-18 12:47:21 +03:00
cloud-static-ALS-detailed.frag ALS: Fix rainbow fringing order in Cirrus clouds 2018-09-05 09:20:20 +03:00
cloud-static-ALS-detailed.vert ALS: Detailed scattering model for light on Cirrus clouds 2018-09-01 09:42:34 +03:00
cloud-static-ALS.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
cloud-static-ALS.vert More infrastructure for perception filtering of moonlight 2017-11-13 10:27:25 +02:00
cloud-static.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
cloud-static.vert Local Weather 1.4 by Thorsten Renk : fixes lots of graphical errors and transparency issues and provides a consistent GUI. 2012-01-03 20:21:34 +01:00
clouds-box.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
clouds-box.vert Robert (dogg360): make shaders work for AMD/ATI graphics (#96,#335 related) 2011-07-04 20:20:26 +02:00
clouds-layered.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
clouds-layered.vert Robert (dogg360): make shaders work for AMD/ATI graphics (#96,#335 related) 2011-07-04 20:20:26 +02:00
clouds-test.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
clouds-test.vert Robert (dogg360): make shaders work for AMD/ATI graphics (#96,#335 related) 2011-07-04 20:20:26 +02:00
clouds-thick.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
clouds-thick.vert Robert (dogg360): make shaders work for AMD/ATI graphics (#96,#335 related) 2011-07-04 20:20:26 +02:00
clouds-thin.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
clouds-thin.vert Robert (dogg360): make shaders work for AMD/ATI graphics (#96,#335 related) 2011-07-04 20:20:26 +02:00
clouds-thinlayer.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
clouds-thinlayer.vert Robert (dogg360): make shaders work for AMD/ATI graphics (#96,#335 related) 2011-07-04 20:20:26 +02:00
clustered-include.frag Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
color_temperature.frag Changing file permissions to remove execute bit 2020-09-02 09:42:36 +02:00
default.frag Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
default.vert Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
drunway-ALS.frag Implement a simple snow shader for the low quality levels 2021-01-19 11:10:44 +01:00
filters-ALS.frag Added dithering as an ALS post-processing effect to prevent banding 2019-04-21 18:53:19 +02:00
filters-ALS.vert ALS - begin infrastructure for moonlight perception filtering 2017-06-18 10:08:39 +03:00
flutter-ALS.vert Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
generic-ALS-base.vert Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
glass-ALS.frag Fix incorrect lightmap intensity with lightmap-multi=0 2021-04-15 11:12:07 +02:00
glass-ALS.vert Add an appropriate version number to all vertex shaders 2016-08-05 13:16:23 +02:00
grass-ALS.frag Make Compositor default 2020-11-16 13:46:30 +01:00
grass-ALS.geom Make Compositor default 2020-11-16 13:46:30 +01:00
grass-ALS.vert Changing file permissions to remove execute bit 2020-09-02 09:42:36 +02:00
hazes.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
hud-ALS.frag Fix incorrect lightmap intensity with lightmap-multi=0 2021-04-15 11:12:07 +02:00
hud-ALS.vert ALS HUD effect approximating the appearance of light projected on the combiner 2017-02-24 09:28:54 +02:00
include_fog.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
include_fog.vert Add an appropriate version number to all vertex shaders 2016-08-05 13:16:23 +02:00
light-ALS.frag Make ALS procedural light shader palatable to nouveau driver 2017-09-01 12:57:11 +03:00
light-ALS.vert Procedural aircraft lights for ALS - WIP 2016-02-03 09:13:30 +02:00
lightspot-ALS.frag ALS lightspot second projectable spot correction. 2016-10-05 14:47:44 -05:00
model-ALS-base.frag Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
model-ALS-ultra.frag Fix incorrect lightmap intensity with lightmap-multi=0 2021-04-15 11:12:07 +02:00
model-ALS-ultra.vert Make Compositor default 2020-11-16 13:46:30 +01:00
model-ALS-wingflex.vert Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
model-interior-ALS-base.frag Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
model-interior-ALS-base.vert Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
model-interior-ALS-detailed.frag Fix incorrect lightmap intensity with lightmap-multi=0 2021-04-15 11:12:07 +02:00
model-interior-ALS-detailed.vert Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
model-interior-display-ALS.frag Fix incorrect lightmap intensity with lightmap-multi=0 2021-04-15 11:12:07 +02:00
night-vision.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
noise.frag Interior glass effect with dynamic environment response for ALS 2015-03-10 13:43:08 +02:00
planet-aurora.frag Earthview 2.1 - parallax mapping for cloud layer, lightning at night, Rayleigh scattering in atmosphere and minor bugfixes 2017-04-05 16:50:31 +03:00
planet-aurora.vert Earthview 2.1 - parallax mapping for cloud layer, lightning at night, Rayleigh scattering in atmosphere and minor bugfixes 2017-04-05 16:50:31 +03:00
planet-cloudlayer.frag Improvements to Earthview: enable changing cloud density, fix aurora z-ordering issue, let moonlight give a relief effect to clouds 2018-01-29 09:25:38 +02:00
planet-high.frag Remove rgb normalization and relax cut on NdotL to positive or null (fix visible redcuts) 2020-07-12 18:40:38 +02:00
planet.frag Remove rgb normalization and relax cut on NdotL to positive or null (fix visible redcuts) 2020-07-12 18:40:38 +02:00
planet.vert Improvements and bugfixes for orbital rendering 2015-03-29 13:16:19 +03:00
rain-layer-ALS.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
rain-layer-ALS.vert Light scattering phenomena for ALS: rainbow, halo, sundogs and light pillar 2015-12-21 13:07:32 +02:00
rain-layer.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
rain-layer.vert SHADERS:fix "unified" fog function. 2012-02-14 18:39:58 +02:00
road-ALS-ultra.frag Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
rock-ALS.frag Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
runway-ALS.frag Implement a simple snow shader for the low quality levels 2021-01-19 11:10:44 +01:00
scenery-lights.frag Shader-based scenery lights. 2021-08-07 21:42:20 +03:00
scenery-lights.vert Fixed FOV side effect on light sprite size. 2021-09-04 13:41:02 +03:00
secondary_lights.frag Bugfixes for ALS light addition 2016-08-18 09:25:03 +03:00
shadows-include.frag Reorganize the shadow mapping functions 2021-06-17 18:18:27 +02:00
shadows-include.vert Tweak shadow offset parameters and cascade ranges 2021-01-05 11:24:19 +01:00
skydome-ALS.frag ALS: Detailed scattering model for light on Cirrus clouds 2018-09-01 09:42:34 +03:00
skydome-ALS.vert ALS: tentative fix for skydome monolith artifact - apparently this is a numerical accuracy issue (?) 2018-02-13 15:00:21 +02:00
space-ALS-base.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
space-ALS-base.vert Add an appropriate version number to all vertex shaders 2016-08-05 13:16:23 +02:00
space-ALS-ultra.frag Fix incorrect lightmap intensity with lightmap-multi=0 2021-04-15 11:12:07 +02:00
space-ALS-ultra.vert Experimental additional lighting options for ALS model shaders 2016-07-31 10:29:02 +03:00
surface-light-ALS.frag Make ALS procedural light sprite more palatable to nouveau GPU driver 2017-03-04 10:01:45 +02:00
surface-light-ALS.vert Fix for light point sprite shader when light definition is initially small and creates nmerical issues 2019-10-06 11:26:42 +03:00
terrain-ALS-base.frag Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
terrain-ALS-detailed.frag Implement a simple snow shader for the low quality levels 2021-01-19 11:10:44 +01:00
terrain-ALS-detailed.vert Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
terrain-ALS-ultra.frag Create overlay mixing scales based on texture scale. 2021-07-26 11:13:00 +01:00
terrain-ALS-ultra.vert Add clustered shading support to most Effects and shaders 2020-12-23 11:10:34 +01:00
terrain-nocolor.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
terrain-overlay-ALS.frag Make Compositor default 2020-11-16 13:46:30 +01:00
terrain-overlay-ALS.geom Make Compositor default 2020-11-16 13:46:30 +01:00
text.frag Add shaders for osgText 2021-05-14 22:45:36 +02:00
text.vert Add shaders for osgText 2021-05-14 22:45:36 +02:00
thrustflame-ALS-detailed.frag Introduce detailed version of thruster flame 2016-08-01 11:47:44 +03:00
thrustflame-ALS.frag Bugfix and noise seed option for ALS thrust flame shader 2017-04-17 10:30:49 +03:00
thrustflame-ALS.vert Improvements to flame effect 2015-05-22 10:51:54 +03:00
tree-ALS-shadow.frag ALS: do not clamp haze color in object shaders, this leads to mismatch with terrain at high light intensity 2018-02-09 14:08:01 +02:00
tree-ALS-shadow.vert Add an appropriate version number to all vertex shaders 2016-08-05 13:16:23 +02:00
tree-ALS.frag ALS: do not clamp haze color in object shaders, this leads to mismatch with terrain at high light intensity 2018-02-09 14:08:01 +02:00
tree-ALS.vert Add an appropriate version number to all vertex shaders 2016-08-05 13:16:23 +02:00
tree.frag Standardized fog 2011-12-01 20:52:59 +00:00
tree.vert Speculative fix for shader cast issue on Mac. 2013-05-31 19:50:57 +01:00
trivial.frag Add missing shader version tags for the other shaders too 2016-08-03 09:59:29 +02:00
trivial.vert Procedural Texturing 2012-08-07 09:01:14 +02:00
wake-ALS.vert ALS maintenance - reworked light curves, streamlining, minor bugfixes,... 2014-12-15 15:50:47 +02:00
water-ALS-base.frag Enable filtering for ALS lower quality terrain, water and model shaders 2016-03-27 20:27:32 +03:00
water-ALS-high.frag It's now possible to create a overrides of water colour and shallowness for waterbodies through regional definitions. Note: Overrides are constant and apply throughout the waterbody. This is mainly useful for inland waterbodies. 2021-05-10 11:52:45 +02:00
water-ALS.vert ALS maintenance - reworked light curves, streamlining, minor bugfixes,... 2014-12-15 15:50:47 +02:00
ws30-ALS-ultra.frag WS30 : terrain shaders from vs 2021-11-05 19:59:32 +00:00
ws30-ALS-ultra.vert WS30 : terrain shaders from vs 2021-11-05 19:59:32 +00:00
ws30-ALS.frag WS30 : terrain shaders from vs 2021-11-05 19:59:32 +00:00
ws30-ALS.vert WS30 : terrain shaders from vs 2021-11-05 19:59:32 +00:00
ws30-q1.frag WS30: Improved ambient color 2021-11-05 19:55:05 +00:00
ws30.frag WS30: Improved ambient color 2021-11-05 19:55:05 +00:00
ws30.vert WS30: Add basic shaders 2021-01-23 17:15:12 +00:00