Total War: ROME II - Emperor Edition

Total War: ROME II - Emperor Edition

R2:TW GEMFX - Graphic Enhancement Mod 1.0.9
Ganossa  [developer] 8 Sep, 2014 @ 11:58pm
You wonder what GEM is?
GEM for R2 is a post-processing tool which is created to allow others to tweak and share their enhancement settings. It adds new features from what we could previously get (with e.g. SweetFX) but of course also re-uses/provides the existing shader stack instead of re-inventing the wheel. Since it is originated from R2 and I played R2 too, I of course provide default settings that I like and think fit well to the common taste and let people go from there if they like to tweak it further.

The details are explained in the following::

First of all, GEM is not using the SweetFX library but GEMFX which is developed and build by me (for Win7).

However, GEM reuses some of SweetFX's shaders and loads them with the GEMFX library files plus additional features, such as::
- K-Blur
- ambiente light
- HBO shader
- improved performance and memory management
- improved rendering order for better image quality
- taking SS with working steamoverlay in R2
- some (currently removed) features like several sun-flares

Further, the gem.pack content adjusts all BM's and CM's for better Sun, better NOHDR, reduced oversaturation, and quiet recently even moving clouds on all BM's (with weather dependent speed).

There is also the GEMShader itself which I started to develop as a custom shader for SweetFX/ENB. Furthermore, I ported many shaders from dx9 to dx11 for eFX which you cannot find in the internet. This way, even Win8.1 users can enjoy GEM eventhough there exists no compiled binary for them (yet).
GEM combines the knowledge of HLSL, C++ and R2 tables, since all of this is needed to improve R2 the way GEM improves it.

(as a side note, the same of course applies for the dx9 libraries in DSII, M2TW and ETW which also provide similar features which would not be possible with the common SweetFX shaders)

For people interested, here are some small snippets from the GEMFX library file::
//hbo init if (hbo && Settings::get().getIsGEMHBO()) { gDefDeviceContext->CopyResource(tmpRT_nonSRGB_DX11, *backbufferRT); hbo->go(tmpRT_nonSRGBSRV_DX11, *backbufferRT, 0); gDefDeviceContext->CopyResource(tmpRT_nonSRGB_DX11, *backbufferRT); hbo->go(tmpRT_nonSRGBSRV_DX11, *backbufferRT, 1); gDefDeviceContext->CopyResource(tmpRT_nonSRGB_DX11, *backbufferRT); hbo->go(tmpRT_nonSRGBSRV_DX11, *backbufferRT, 2); } //K-Blur init if (GEMExpEffects && Settings::get().getIsGEMExpEffects()) { if (GEMBlur && Settings::get().getIsGEMBlur()) { if (custom) { gDefDeviceContext->CopyResource(tmpRT_nonSRGB_DX11, *backbufferRT); custom->go(tmpRT_nonSRGBSRV_DX11, *backbufferRT, 0);//4 gDefDeviceContext->CopyResource(tmpRT_nonSRGB_DX11, *backbufferRT); custom->go(tmpRT_nonSRGBSRV_DX11, *backbufferRT, 1);//2 3 gDefDeviceContext->CopyResource(tmpRT_nonSRGB_DX11, *backbufferRT);//2 3 custom->go(tmpRT_nonSRGBSRV_DX11, *backbufferRT, 2); } } //AL init if (customBloom) { gDefDeviceContext->CopyResource(tmpRT_nonSRGB_DX11, *backbufferRT); customBloom->go(tmpRT_nonSRGBSRV_DX11, *backbufferRT); } //code-fragment of K-Blur button if (GetAsyncKeyState(Settings::get().getGEMBlurKey())) { if (!Settings::get().getIsGEMBlurKeyPress()) { Settings::get().setIsGEMBlurKeyPress(true); Settings::get().setCurrentPress(nint64); Settings::get().setIsReset(true); } else if (seconds_since_startPress > delay && Settings::get().getIsGEMBlurKeyPress() && Settings::get().getIsReset()) { SDLOG("ToggleGEMBlur..."); GEMBlur = !GEMBlur; Sleep(20); Settings::get().setCurrentPress(nint64); Settings::get().setIsReset(false); Sleep(20); } }

All credits to GEM can be found @the credit section of this workshop-item or @TWC the main thread.
Last edited by Ganossa; 9 Sep, 2014 @ 12:11am