User Tools

Site Tools


arma3:terrain:v1-60-visual-upgrade-lighting-config

This is an old revision of the document!


ArmA 3 Terrain Lighting Visual Upgrade

“ArmA 3 Terrain Lighting Visual Upgrade” page is work in progress, if you can help please contact us.

ArmA 3 v1.60 Visual Upgrade aka lighting upgrade that broke all user made terrains :)

In ArmA 3 v1.60 bis changed the terrain lighting pretty much completely. Many user made terrains went belly up with their lighting as skies turned black and all kinds of weird problems how terrain looks.

This page attempts to teach you how to fix arma3 lighting in user made custom terrains.

Altis and Stratis Satellites

On official terrains bis turned down the satellite texture brightness a lot in v1.60 visual upgrade. Here is example satellite textures for both of them.

Images are 4096 x 4096 resolution and over 2 megabytes each so you have to open them manually.
Altis: v1.58 and v1.60
Stratis: v1.58 and v1.60

Pennyworth was kind enought to share his bis altis and stratis satellite images for comparison, thanks.

Satellite Texture

Open your satellite texture in photoshop / gimp, add adjustment layer for brightness / contrast. Pull brightness slider to -100 value (photoshop, dunno what equivalent is in gimp) and you can experiment with contrast but mostly it could be left alone.

Naturally you should experiment which value works for YOUR satellite texture the best, but -100 brightness is good starting point.

Config.cpp

There are a lot of new config values in visual upgrade.

What you are about to read below is a mis-mash of various user tips and configs posted in bis forums. I try to separate them into individual configs so you can pick and choose what if any to use.

New values which should adjust satellite brightness:

/// maximal darkening coef for blending of satellite map and detail map on terrain (default = 0.0f, no darkening = 1.0f}
terrainBlendMaxDarkenCoef = 1.0f;
 
/// maximal brightening coef for blending of satellite map and detail map on terrain (default = 1.0f, no brightening = 0.0f)
terrainBlendMaxBrightenCoef = 0.0f;

Greenberet40 posted

skyColorInfluencesFogColor = 1;
tonemapMethod = 0;
 
class HDRNewPars
{
	minAperture = 1e-005;
	maxAperture = 256;
	apertureRatioMax = 4;
	apertureRatioMin = 10;
	bloomImageScale = 1;
	bloomScale = 0.3;
	bloomExponent = 1;
	bloomLuminanceOffset = 0.8;
	bloomLuminanceScale = 1;
	bloomLuminanceExponent = 1.2;
	tonemapMethod = 2;
	tonemapShoulderStrength = 0.22;
	tonemapLinearStrength = 0.3;
	tonemapLinearAngle = 0.1;
	tonemapToeStrength = 0.2;
	tonemapToeNumerator = 0.01;
	tonemapToeDenominator = 0.3;
	tonemapLinearWhite = 11.2;
	tonemapExposureBias = 2;
	tonemapLinearWhiteReinhard = "2.5f";
	nvgApertureMin = 1;
	nvgApertureStandard = 7;
	nvgApertureMax = 15;
	nvgStandardAvgLum = 3;
	nvgLightGain = 100;
	nvgTransition = 1;
	nvgTransitionCoefOn = "40.0f";
	nvgTransitionCoefOff = "0.01f";
	nightShiftMinAperture = 0;
	nightShiftMaxAperture = 0.002;
	nightShiftMaxEffect = 0.6;
	nightShiftLuminanceScale = 600;
	eyeAdaptFactorLight = 0.6;
	eyeAdaptFactorDark = 0.2;
};

IceBreakrs image of above config: i.imgur.com_v5o1gp3.jpg

t-800a posted

class HDRNewPars : HDRNewPars
{
	minAperture = 1e-005;
	maxAperture = 256;
	apertureRatioMax = 4;
	apertureRatioMin = 10;
	bloomImageScale = 1;
	bloomScale = 0.09;
	bloomExponent = 0.75;
	bloomLuminanceOffset = 0.4;
	bloomLuminanceScale = 0.15;
	bloomLuminanceExponent = 0.25;
	tonemapMethod = 1;
	tonemapShoulderStrength = 0.22;
	tonemapLinearStrength = 0.12;
	tonemapLinearAngle = 0.1;
	tonemapToeStrength = 0.2;
	tonemapToeNumerator = 0.022;
	tonemapToeDenominator = 0.2;
	tonemapLinearWhite = 11.2;
	tonemapExposureBias = 1;
	tonemapLinearWhiteReinhard = "2.5f";
	eyeAdaptFactorLight = 3.3;
	eyeAdaptFactorDark = 0.75;
	nvgApertureMin = 10;
	nvgApertureStandard = 12.5;
	nvgApertureMax = 16.5;
	nvgStandardAvgLum = 10;
	nvgLightGain = 320;
	nvgTransition = 1;
	nvgTransitionCoefOn = "40.0f";
	nvgTransitionCoefOff = "0.01f";
	nightShiftMinAperture = 0;
	nightShiftMaxAperture = 0.002;
	nightShiftMaxEffect = 0.6;
	nightShiftLuminanceScale = 600;
};

and

#define __aperture(VAL1,VAL2,VAL3) apertureMin = VAL1; \
	apertureStandard = VAL2; \
	apertureMax = VAL3 \

class ThunderboltNorm :ThunderboltNorm {};
class ThunderboltHeavy : ThunderboltHeavy {};
class Lighting : Lighting {};
class Overcast : Overcast {};
 
class LightingNew : LightingNew
{
	class Lighting0 : Lighting0 {
		__aperture(4,4,8);
	};
 
	class Lighting1 : Lighting1 {
		__aperture(4,4,8);
	};
 
	class Lighting2 : Lighting2 {
		__aperture(4,4,8);
	};
 
	class Lighting3 : Lighting3 {
		__aperture(4,5,10);
	};
 
	class Lighting4 : Lighting4 {
		__aperture(5,6,18);
	};
 
	class Lighting5 : Lighting5 {
		__aperture(6,8,20);
	};
 
	class Lighting6 : Lighting6 {
		__aperture(7,9,22);
 
		diffuse[]		= {{0.75, 0.38, 0.22}, 6.6 };
		diffuseCloud[]		= {{0.75, 0.38, 0.22}, 6.0 };
	};
 
	class Lighting7 : Lighting7 {
		__aperture(8,10,22);
 
		diffuse[]		= {{0.95, 0.42, 0.22}, 9.2 };
		diffuseCloud[]		= {{0.95, 0.42, 0.22}, 8.4 };
	};
 
	class Lighting8 : Lighting8 {
		__aperture(8,16,26);
 
		diffuse[]		= {{0.95, 0.55, 0.35}, 11.2 };
		diffuseCloud[]		= {{0.95, 0.55, 0.35}, 10.2 };
	};
 
	class Lighting9 : Lighting9 {
		__aperture(20,25,35);
 
		diffuse[]		= {{1, 0.65, 0.45}, 13.5 };
		diffuseCloud[]		= {{1, 0.65, 0.45}, 12.3 };
	};
 
	class Lighting10 : Lighting10 {
		__aperture(45,60,80);
 
		diffuse[]		= {{1, 0.75, 0.62}, 17.4 };
		diffuseCloud[]		= {{1, 0.75, 0.62}, 15.8 };
	};
 
	class Lighting11 : Lighting11 {
		__aperture(70,100,120);
 
		diffuse[]		= {{1, 0.92, 0.72}, 18.9 };
		diffuseCloud[]		= {{1, 0.92, 0.72}, 17.2 };
	};
 
	class Lighting12 : Lighting12 {
		__aperture(70,100,120);
 
		diffuse[]		= {{1, 0.95, 0.77}, 18.9 };
		diffuseCloud[]		= {{1, 0.95, 0.77}, 17.2 };
	};
 
	class Lighting13 : Lighting13 {
		__aperture(5,5,10);
	};
 
	class Lighting14 : Lighting14 {
		__aperture(5,5,10);
	};
 
	class Lighting15 : Lighting15 {
		__aperture(5,5,10);
	};
 
	class Lighting16 : Lighting16 {
		__aperture(5,7,13);
	};
 
	class Lighting17 : Lighting17 {
		__aperture(7,8,23);
	};
 
	class Lighting18 : Lighting18 {
		__aperture(8,10,26);
	};
 
	class Lighting19 : Lighting19 {
		__aperture(9,12,29);
 
		diffuse[]		= {{0.75, 0.38, 0.22}, 3.3 };
		diffuseCloud[]		= {{0.75, 0.38, 0.22}, 3.0 };
	};
 
	class Lighting20 : Lighting20 {
		__aperture(10,13,31);
 
		diffuse[]		= {{0.95, 0.42, 0.22}, 4.6 };
		diffuseCloud[]		= {{0.95, 0.42, 0.22}, 4.2 };
	};
 
	class Lighting21 : Lighting21 {
		__aperture(10,21,34);
 
		diffuse[]		= {{0.95, 0.55, 0.35}, 5.6 };
		diffuseCloud[]		= {{0.95, 0.55, 0.35}, 5.1 };
	};
 
	class Lighting22 : Lighting22 {
		__aperture(26,33,46);
 
		diffuse[]		= {{1, 0.65, 0.45}, 6.8 };
		diffuseCloud[]		= {{1, 0.65, 0.45}, 6.2 };
	};
 
	class Lighting23 : Lighting23 {
		__aperture(59,78,104);
 
		diffuse[]		= {{1, 0.75, 0.62}, 8.7 };
		diffuseCloud[]		= {{1, 0.75, 0.62}, 7.9 };
	};
 
	class Lighting24 : Lighting24 {
		__aperture(91,130,156);
 
		diffuse[]		= {{1, 0.92, 0.72}, 9.5 };
		diffuseCloud[]		= {{1, 0.92, 0.72}, 8.6 };
 
		standardAvgLum = 6000;
	};
 
	class Lighting25 : Lighting25 {
		__aperture(91,130,156);
 
		diffuse[]		= {{1, 0.95, 0.77}, 9.5 };
		diffuseCloud[]		= {{1, 0.95, 0.77}, 8.6 };
 
		standardAvgLum = 7000;
	};
 
	class Lighting26 : Lighting26 {
		__aperture(8,8,15);
	};
 
	class Lighting27 : Lighting27 {
		__aperture(8,8,15);
	};
 
	class Lighting28 : Lighting28 {
		__aperture(8,8,15);
	};
 
	class Lighting29 : Lighting29 {
		__aperture(8,10,19);
	};
 
	class Lighting30 : Lighting30 {
		__aperture(10,11,34);
	};
 
	class Lighting31 : Lighting31 {
		__aperture(11,15,38);
	};
 
	class Lighting32 : Lighting32 {
		__aperture(13,17,42);
 
		diffuse[]		= {{0.216, 0.286, 0.384}, 0.7 };
		diffuseCloud[]		= {{0.054, 0.0715, 0.096}, 0.6 };
	};
 
	class Lighting33 : Lighting33 {
		__aperture(15,19,46);
 
		diffuse[]		= {{0.255, 0.325, 0.42}, 0.9 };
		diffuseCloud[]		= {{0.06375, 0.08125, 0.105}, 0.8 };
	};
 
	class Lighting34 : Lighting34 {
		__aperture(15,30,49);
 
		diffuse[]		= {{0.298, 0.365, 0.451}, 1.1 };
		diffuseCloud[]		= {{0.0745, 0.09125, 0.11275}, 1.0 };
	};
 
	class Lighting35 : Lighting35 {
		__aperture(38,48,67);
 
		diffuse[]		= {{0.376, 0.431, 0.506}, 1.4 };
		diffuseCloud[]		= {{0.094, 0.10775, 0.1265}, 1.2 };
	};
 
	class Lighting36 : Lighting36 {
		__aperture(86,114,152);
 
		diffuse[]		= {{0.5, 0.4, 0.5}, 1.7 };
		diffuseCloud[]		= {{0.5, 0.4, 0.5}, 1.7 };
		ambient[]		= {{0.5, 0.4, 0.5}, 9.8 };
		ambientCloud[]		= {{0.5, 0.4, 0.5}, 9.8 };
		ambientMid[]		= {{0.5, 0.4, 0.5}, 9.4 };
		ambientMidCloud[]	= {{0.5, 0.4, 0.5}, 9.4 };
 
	};
 
	class Lighting37 : Lighting37 {
		__aperture(133,190,228);
 
		diffuse[]		= {{0.45, 0.35, 0.45}, 1.9 };
		diffuseCloud[]		= {{0.45, 0.35, 0.45}, 1.7 };
		ambient[]		= {{0.45, 0.35, 0.45}, 10.8};
		ambientCloud[]		= {{0.45, 0.35, 0.45}, 10.8};
		ambientMid[]		= {{0.45, 0.35, 0.45}, 10.2};
		ambientMidCloud[]	= {{0.45, 0.35, 0.45}, 10.2};
 
	};
	class Lighting38 : Lighting38 {
		__aperture(133,190,228);
 
		diffuse[]		= {{0.4, 0.3, 0.4}, 1.9 };
		diffuseCloud[]		= {{0.4, 0.3, 0.4}, 1.7 };
		ambient[]		= {{0.4, 0.3, 0.4}, 10.8};
		ambientCloud[]		= {{0.4, 0.3, 0.4}, 10.8};
		ambientMid[]		= {{0.4, 0.3, 0.4}, 10.2};
		ambientMidCloud[]	= {{0.4, 0.3, 0.4}, 10.2};
 
	};
 
// under water ???
	class Lighting39 : Lighting39 {};
	class Lighting40 : Lighting40 {};
	class Lighting41 : Lighting41 {};
	class Lighting42 : Lighting42 {};
	class Lighting43 : Lighting43 {};
	class Lighting44 : Lighting44 {};
};

tpw posted lighting fix config example:

class DYALA_LIGHTING_FIX
{
	units[]={};
	weapons[]={};
	requiredVersion=0.1;
	requiredAddons[]=
	{
		"CUP_Worlds"
	};
};
 
class CfgWorlds
{
	class DefaultLighting;
	class DefaultWorld;
	class CAWorld;
	class DYA: CAWorld
	{
		delete Weather;
		delete Lighting;
	};
};

metacraze posted the following:

When parameter “skyColorInfluencesFogColor” is set to 0 (which is a part of visual update) - fog starts requiring an alpha channel value that old configs do not provide. Thus you get black horizon.

e.g. old way was fogColor[] = {r,g,b} , now it's fogColor[] = {{r,g,b},a}. So all classes under lightingNew have to be updated with that in mind.

This however lets you have fog color different from sky color which allows for much better sky looks versus old overly blueish fog - as if sky mixes with earth

Another change is new TrueSky settings for better clouds found in class simulWeather

VKing6 shared kunduz config fix in github.

Ground Detail Textures

Pennyworth made excellent comparison of the ground detail textures in google drive which lists all bis surface textures.

If you are using just bis textures then this is no issue for you as those textures are darkened already, but if you have bright textures of your own then that page is good guide for how to adjust your textures.

arma3/terrain/v1-60-visual-upgrade-lighting-config.1485087026.txt.gz · Last modified: 2017-01-22 12:10 by snakeman