Previously haze calculations were performed
in the main body of the ws30 shaders (inherited
from the ALS terrain shaders). This change creates
a common applyHaze function to consistently apply haze.
This is not ws30 specific, and could be used to replace the
haze calculations of all ALS shaders for improved consistency.
This brings a developer comment to the FlightGear-Qt.xlf files that will
hopefully draw the translators' attention on the fact that they should
put the *up-to-date* address of the "getstart" manual in their language
(use correct address + two occurrences of 'en' to change).
Added enabled tags to video-start and video-stop. These are set to true/false
by C++ code depending on whether we are encoding to video or not. [There
doesn't seem to be a way of doing this directly in xml - expressions are not
supported in menu items?]
Squashed commit of the following:
commit 115511888c20c53670eba17a82c81c9af99d7302
Author: vs <vs2009@mail.com>
Date: Mon Dec 6 18:52:06 2021 +1000
WS30 effects and shaders:
Changelog:
ws30-ALS-ultra.frag:
- Ground textures lookups use their own coordinates separate from the landclass texture lookup.
- Partial derivatives dFdx and Dfdy are packed together in a vec4, so simple multiplication to scale can be done in 1 instruction. dFdx = s and t components. dFdy = p and q components. These must be scaled properly for ground texture access as ground texture stretching and detiling of tex coords mean textures are scaled differently.
- Added calculation of partial derivatives for texture coordinates used by the 5 non- base textures. dFdx() and dFdy() were called for nontrivial texture coordinate manipulation.
- New control randomise_texture_lookups added at top of ws30-ALS-ultra.frag, in the development tools section. Setting this to 1 will do a stress test of ground texture array lookups. A fast random number generation function is used to assign each landclass 4 random textures from the ground texture array - this is done by . Performance will not be as bad in the full ALS port as some texture slots will better caching in memory - e.g. have 1 or a few variants.
- Possible optimisation: use a 2nd or 3rd texture array for some of the non-base texture slots that typically have 256, 512, or 1024 textures. The resolutions of these arrays should change based on the largest loaded texture size in the active regional definitions - this will allow taking full advantage of smaller texture sizes in some areas. The disadvantage is some texture duplication with more slots.
- Possible optimisation: offer the option to shrink textures by 50% or 25% - for texture slots that use large textures like base or mix slots.
- Very temporary - reduce procedural normal map features with photoscenery active without breaking profiling, as the inputs to shaders are effect defaults or placeholder (by request on ML).
----
ws30-ALS-ultra.vert:
- Start of conversion of geocentic world space xyz into lat/lon coords used for ground texture lookups. Currently commented out as it's unknown what model space coords are in (not geocentric it seems).
ws20-ALS-landclass-search-functions.frag:
- Add control for changing the ground texture array lookup function for debugging in case old compilers/GPUs have issues. tex_lookup_type: 0: normal( textureGrad(), 1: textureLod (manual Lod calculation), 2: texture() with no partial derivative adjustment.
- New get6_random_integers() will extract 6 limited random values from the full precision of a 32 bit random value.
- Old landclass_texel_size_m references are removed since textureSize() is used. There are no 'const in float' arguments that may cause issues on AMD compilers.
----
WS30-overlay effect (Inactive):
- ws30-overlay.eff (derived from terrain-overlay.eff). Technique no "4" is used for two passes. The 1st pass is a copy of the ALS ultra pass (technique no "5") from ws30.eff. The 2nd pass is the same as terrain-overlay.eff. The 2nd pass uses terrain- overlay.frag from WS2.
- grass-ALS.vert copied to ws30-ovelay-ALS.vert. To do: needs texture coords that don't change with tiles.
- terrain-overlay-ALS.geom copied to ws30-overlay-ALS.geom. To do: uses gl_PositionIn [i].xy for position in the horizontal plane - assumes z is vertical. Tile model space doesn't seem to match this.
- WS3 doesn't seem to have a way of switching references to terrain-overlay.eff (which inherits from terrain-default.eff) to the new ws3-overlay.eff (which needs to inherit from ws30.eff). The ws3-overlay.eff included /might/ just work without any other changes: the first pass is the WS3 als ultra settings pass, and the second overlay pass is unchanged from WS2 (the same terrain overlay shaders should probably work apart from texcoords and rawpos not being correct).
- Materials/base/materials-base.xml: ws30Road material: uncomment line declaring terrain-default as the effect. The target effect for ws30 roads is road-*.eff and it's added to ws30Road and ws30Freeway but commented out as it's not working currently.
- Misc: large scale transitions are turned on in ws30-ALS-landclass-search-functions.frag by default. Grow landclass borders with large scale transitions is now on by default.
----
Changes after the multi-texture support commit:
ws30-ALS-ultra.vert
- Added documentation: WS30 model space and z up space - for future people working on WS30, and people looking through shaders to rule out possibilities e.g. when fixing bugs, or interpreting visual bug reports.
ws30-ALS-landclass-search-functions.frag:
- For now, lookup_ground_texture_array() also looks up the relevant texture's index based on an integer.
- Add get_mixed_texel() - looks up texel for this fragment and any neighbors before mixing. Moves currently shared mixing code out of 3 fragment shaders.
Misc: changed indentation from mixed tabs/spaces to spaces in ws30-ALS-ultra frag and vert. The indentation can be changed again when the porting is complete.
ws30-ALS vert/frag and ws30-ALS-detailed vert/frag:
- Add varying for ground texture coordiante, currently set to gl_TexCoord[0]. Apply texture stretching dimensions in fragment shaders.
- Misc: varying rawPos is set to vec2 for now, as relPos.z+eye_alt might be faster. Misc: keep WS2 mixing logic for now , including turning off mixing via the alpha channel of the textures
----
Changes after sending material parameters in uniform arrays commit:
- Materials parameter for rock_strata is cast into an int so rock_strata==1 should work. Misc: Left over uniform for rock strata cleaned up.
- ws30-ALS-ultra.frag and ws30-ALS-detailed.frag: Add missing mat_shininess for photoscenery case .
Use buttons for Continuous record start/stop instead of checkbox.
Grey-out Continuous settings checkboxes if we are already doing a Continuous
recording.
Added button to (re)show the Replay dialogue; greyed-out if we are not
replaying.
Various other tweaks.
If /sim/time/fixed-dt is not zero and time mode is simple-time, we use the
specified fixed dt value regardless of framerate. Useful for creating videos.
Translations/default/menu.xml
defaults.xml
Added /sim/video/ items.
gui/dialogs/video.xml
New, allows one to select the video container, codec, quality, speed and
bitrate to be used when encoding videos. Radio buttons are provided for
common containers and codecs.
gui/menubar.xml
File menu now has 'video start' and 'video stop' items, plus an item that
opens new 'video control' dialogue. [We use menu items for video start/stop
to minimise the visual affect at the beginning and end of the generated
video.]
Add the following translatable strings to sys.xml: license-url,
units-kbytes, units-kbytes-per-sec, units-mbytes, and
units-mbytes-per-sec.
I know that the SI prefix for kilo is 'k', not 'K', and that these KB
and MB "units" have no well-defined meaning. This is not my choice; just
trying to help with
<https://sourceforge.net/p/flightgear/fgdata/merge-requests/273/>.
Squashed commit of the following:
commit 87dde155b2ee472a5a2c12cc1f395256a68fbf7c
Author: Roman Ludwicki <romek21@op.pl>
Date: Fri Nov 19 18:18:44 2021 +0100
Fix not working multi-key commands.
Replace the nonexistent @pop command with @delete0 to delete the first waypoint in the route.
Fix "position on ground" dialog.
Squashed commit of the following:
commit bc270c30de615a0dff8a4ba422f8181ae18643f6
Author: Roman Ludwicki <romek21@op.pl>
Date: Thu Nov 18 19:02:45 2021 +0100
Delete obsolete multi-key weather scenarios and replace them with the current ones.
Add multi-key to change weather engine.
commit 918aa4402143638133153dff722ef3a6b4feead7
Author: vs <vs2009@mail.com>
Date: Sat Nov 20 23:38:52 2021 +1000
ALS water effect & shaders:
Add object shadows for water in a similar fashion to terrain.
Add commented out code of what should be the shader part of clustered lighting for the compositor. getClusteredLightsContribution() normally multiplies the texel by light contributions. It is fed input such that the light contribution term is similar to secondary lights in the water lighting equation, and both are added together.
Squashed commit of the following:
commit c5b72beed4f79675191507a31757b698b6e856d8
Author: vs <vs2009@mail.com>
Date: Sun Nov 21 20:46:05 2021 +1000
Terrain shaders: Fix terrain overlays not rendering correctly with overlays enabled (WS2 terrain shaders, not WS3). Fixes issue 2648: https://sourceforge.net/p/flightgear/codetickets/2648/ . The 1st pass for the overlays technique is a copy of the ALS ultra shaders pass, and it needed an update adding a new uniform.