1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-27 13:09:43 +00:00
openmw/docs/source/reference/postprocessing/overview.rst

54 lines
2 KiB
ReStructuredText
Raw Normal View History

2022-05-14 01:58:00 +00:00
#####################################
Overview of Post Processing Framework
#####################################
Overview
========
OpenMW supports a moddable post process framework for creating and
controlling screenspace effects. This is integrated into OpenMW's Lua API, see
2022-05-23 01:53:38 +00:00
`reference <../lua-scripting/openmw_postprocessing.html>`_ for details.
2022-05-14 01:58:00 +00:00
Basic concepts
==============
Pass
Describes a single shader invocation pass. Currently only pixel (also known
as fragment) shaders are supported.
Technique/Shader
An ordered list of passes, techniques will encompass a single effect like
bloom or SSAO. Technique is interchangable with shader.
Installing and Activating
=========================
Shaders are managed through the virtual file system, simply install the associated
archive or folder as described in :ref:`mod-install<install>`. Shaders must be
in the `Shaders` directory to be discoverable. A shader can be activated in one
of two ways:
1. Adding the shaders filename (without its extension) to the end of the
:ref:`chain` list in ``settings.cfg``.
2. Using the in game post processor HUD, which can be activated with the ``F2``
key by default. This is the recommended method as manual editing can be error
prone.
2022-07-24 13:18:50 +00:00
Localization
============
Output text (e.g. shader description) can use the ``#{ContextName:Key}`` tags.
In this case OpenMW replaces it for value of ``Key`` key from the
``Data Files\L10n\ContextName\used_language.yaml`` file.
2022-05-14 01:58:00 +00:00
Hot Reloading
2022-07-24 13:18:50 +00:00
=============
2022-05-14 01:58:00 +00:00
It is possible to modify a shader without restarting OpenMW, :ref:`live reload`
Merge branch 'SHADER_HOT_RELOAD' into 'master' Shaders: Hot reload, togglable by lua debug command See merge request OpenMW/openmw!2238 (cherry picked from commit 4078f19c741685b7120c636108de7ded1ae6dbfd) 8d194a16 Shaders: rudimentary hot reloader on shaders 4e7c1c5b Added break when the operation failed 6b38d622 Added lua bindings to toggle hot reload (disabled by default) or to trigger a reload 31d41252 forgot memory include f78fa989 fixed include, cleaned comments and indentation fc8838c7 Renamed lua binding, and use action to avoid concurrency issue aa51d6de Missing chrono include ? 68d06989 Fixed cyclical included check b6d7293a Removed weird lines that I thought were necessary to please the compiler 9a475b0c fixed blank lines and missing breaks cdd95f78 replaced empty function body by default a1c8dc9d C++17 compat ? 7b78bf4b Fix files with different defines weren't added to the hot reload manager cc9d4364 includes now work when the same shader has different defines 15751c57 Lua debug api doc 3ab0a991 Hot reload done only once every 200 ms, no point in beeing faster df69fc76 Post processing shaders now use the same lua commands, no more launcher option... c71f3508 changed overview.rst of post processing 603b30e1 Added some variable names to make it clearer what their function was baadc06e Merge branch 'master' into 'SHADER_HOT_RELOAD' decfbc53 Fix threading issues b14cc673 adds missing decleration 16a4b571 adds missing include 166717d6 Makes sure threads are only stopped once ,and that they will be re-started 25c1f0ca Renamed variable to fix case issue
2022-08-21 09:08:27 +00:00
must be enabled by using the lua command `debug.setShaderHotReloadEnabled(true)`.
Whenever a file is modified and saved, the shader will automatically reload in game.
You can also trigger a single reload using `debug.triggerShaderReload()`
This allows shaders to be written in a text editor you are comfortable with.
The only restriction is that the VFS is not aware of new files or changes in non-shader files,
so new shaders and localization strings can not be used.