TES Skyrim 0.266

Forum rules
new topics are not allowed in this subsection, only replies.
  • Author
  • Message
Offline
User avatar
*blah-blah-blah maniac*
Posts: 1498
Joined: 31 Mar 2012, 15:06
Location: France

Re: TES Skyrim 0.266

Boris
Thanx !

kingeric1992
For sure it'll be usefull for new effects, like your Starburst (which I ported to my shader) or any flares. Will improve their definition and ' presence '.

prod80
Bas, are you an ' anti-flare ' type of guy ?... ;)
You crazy coder, you :)
_________________
Lian Li PC011 Dynamic, Corsair AX 1500i PSU, i9 10850K @5.0 Ghz, Aorus Z490 Ultra, RTX3090 MSI Gaming X Trio, 32GB Corsair Vengeance Pro RGB RAM@3600, Corsair MP600 1TB NVME System Drive, 10 TB Storage, W10 Pro 64, Custom Hard Tubing Watercooling Loop

Offline
User avatar
*blah-blah-blah maniac*
Posts: 618
Joined: 18 Jul 2013, 13:08
Location: UK

Re: TES Skyrim 0.266

Boris
Tried CTD test last night - no loss in stability for me
_________________

i7 11700k @5.2GHz
RTX 4080
32gb DDR4 RAM C16
WDBlack 2TB Gen 4 NVMEe SSD
Over 100TB of additional storage


my Flickr
my videos

Offline
Posts: 23
Joined: 27 Apr 2014, 23:48

Re: TES Skyrim 0.266

Any AMD users here?
I sometimes have CTD after the loading screen when I load a save or use the coc whiterun command on the main menu on my r9 290 with the latest binaries.
I can't really find what's causing it though opening and closing the GUI before loading a save seemed to prevent it for some reason.
However, my game is not an example of stability, so I was wondering if anyone got the same issue.

Offline
*sensei*
Posts: 331
Joined: 20 Jul 2013, 00:34

Re: TES Skyrim 0.266

When I used EnableZPrepass=true, I got CTD while fighting a dragon with 2 followers. I set it back to false, and haven't had a CTD yet. This might be related to my skyrimprefs.ini config.

I always CTD when I tried to load a save from the main menu because I have a few mods with heavily scripted. I always coc to a cell like whiterunbreezehome to initialize all scripted mods then load.

The ctdtest appears to keeping the memory usage lower than the official 0.266. The ctdtest lowered TESV memory usage when I switched a cell while 0.266 stayed same or raised. I had ENB compression off, and coc to breezehome, cow tamriel 8,-1, coc to honeyside then do the list again. Moved around each cell before I moved to the next cell.
cdtest
enbhost: 1.7G to 1.9G usage
TESV: 0.9G to 1.2G
0.266
enbhost: 1.7G to 2.1 usage
TESV: 1.0G to 1.4G

I haven't notice any stability issue with the ctdtest, but I did notice ctdtest had a little brighter bloom than 0.266.

Boris
Can ENB do multi-cores/threads access the GPU? I heard Dx9 is limited to a single core and single thread accessing GPU, and Dx11 does have some limited multi access to GPU. The TombRaider and Thief are Dx11, and I saw all my i7 cores and threads were evenly used.
_________________
AMD R9 6900HX, 16GB DDR5-4800
Win 11Pro 64bit on NvMe, Skyrim on NvMe 2nd partition
Nvidia GTX 1070 FE eGPU v531.209
OrganicENB SE
OrganicENB LE

Offline
*sensei*
Posts: 289
Joined: 08 Dec 2012, 23:05

Re: TES Skyrim 0.266

CTD on load on a modded game is not connected to your graphics card or drivers. I first encountered it on GTX570, now i have 290 and it's exactly the same.
_________________
i5 2500k@4.0ghz - 24Gb RAM - R9-290 4Gb Tri-X - SSD 240gb Intel 520 - Win7x64

Offline
*sensei*
Posts: 372
Joined: 28 Jul 2013, 23:26

Re: TES Skyrim 0.266

Ok, I'd like to come back to the bloom texture topic because I am at a loss again... just when I finally got the whole bloom file working it's broken again for some reason. I got the whole file independent from texture size and have tried changing about about every piece of code in there without luck.

On 265 Binary my bloom looks like this... its depth tested, so it looks a bit odd for a blur... and I should of set probably a lot less wide blur (its about 120 pixel wide blur), too, anyway;

Image

Now on 266 I get odd horizontal lines

Image

Previously I didn't notice this because all the stacked textures, so this is output of Texture1 only.
For the life of me I can't figure out where they come from. Is there anything else in the bloom shader changed? Whats the scale of depth texture, has that been adjusted perhaps?...

This is the code part I use now

Code: Select all

float4 PS_BloomPrePass(VS_OUTPUT_POST IN) : COLOR
{
	float4 bloomuv;
	float4 bloom		= 0.0;
	const float2 offset[4]=
	{
		float2(0.25, 0.25),
		float2(0.25, -0.25),
		float2(-0.25, 0.25),
		float2(-0.25, -0.25)
	};
	float2 screenfact	= TempParameters.z;
	screenfact.y		*= ScreenSize.z;
	for (int i=0; i<4; i++)
	{
		bloomuv.xy		= offset[i];
		bloomuv.xy		= ( bloomuv.xy * screenfact.xy ) + IN.txcoord0.xy;
		bloom.xyz		+= tex2Dlod( SamplerBloom1, float4( bloomuv.xy, 0, 0 ));
	}
	bloom.xyz			*= 0.25;
	
	if( TempParameters.w == 1 ) //first pass skip this code, only run before going to Texture1 pass
	{
		float BinBlack		= lerp(	lerp(	BinBlackN,	BinBlackD,	ENightDayFactor	),	BinBlackI,	EInteriorFactor ); 
		float BinGamma		= lerp(	lerp(	BinGammaN,	BinGammaD,	ENightDayFactor	),	BinGammaI,	EInteriorFactor ); 
		float BinWhite		= lerp(	lerp(	BinWhiteN,	BinWhiteD,	ENightDayFactor	),	BinWhiteI,	EInteriorFactor );
		float BoutWhite		= lerp( lerp(	BoutWhiteN,	BoutWhiteD,	ENightDayFactor ),	BoutWhiteI,	EInteriorFactor );
		float BoutBlack		= lerp( lerp(	BoutBlackN,	BoutBlackD,	ENightDayFactor ),	BoutBlackI,	EInteriorFactor );
		
		bloom.xyz			= pow( max( bloom.xyz - BinBlack , 0.0f ) / max( BinWhite - BinBlack, 0.0001f ), BinGamma ) * max( BoutWhite - BoutBlack, 0.0001f ) + BoutBlack;
	}
	bloom.xyz			= min( bloom.xyz, 32768.0 );
	bloom.xyz			= max( bloom.xyz, 0.0 );
	bloom.w				= 1;
	return bloom;
}

float4 PS_BloomTexture1(VS_OUTPUT_POST IN) : COLOR
{
	// --------------------------- //
	//    FIRST GAUSSIAN PASSES    //
	//   BLOOM TINT HAPPENS HERE   //
	// --------------------------- //

	float Q				= 0.0f;
	if ( QUALITYLEVEL == 2 )
		Q = 0.6f;
	else if ( QUALITYLEVEL == 1 ) 
		Q = 0.8f;
	else if ( QUALITYLEVEL == 0 ) //best
		Q = 0.985f;
	
	float hIntensity	= lerp( lerp( hIntensityN, hIntensityD, ENightDayFactor ), hIntensityI, EInteriorFactor );
	float BloomSigma	= lerp( lerp( BloomSigmaN, BloomSigmaD, ENightDayFactor ), BloomSigmaI, EInteriorFactor );
	float minDepth		= lerp( minDepthE, minDepthI, EInteriorFactor );
	float px 			= TempParameters.z;
	float py 			= TempParameters.z * ScreenSize.z;
	BloomSigma			*= (ScreenSize.y/TempParameters.z);
	
	// Get Depth info and apply to Sigma
	float Depth			= tex2Dlod( SamplerDepth, float4( IN.txcoord0.xy, 0, 0 )).x;
	float SigmaDepth	= min( max( linearDepth( Depth, 0.5f, zfar ), minDepth ), 1.0f );
	BloomSigma			= max( BloomSigma * SigmaDepth, 0.6f ); //limited to not give weird result
	
	// Declare all needed variables
	float SigmaSum;
	float3 Sigma;
	float sampleOffset;
	float4 bloom;
	float4 bloom1;
	float4 bloom2;
	float4 srcbloom;
	float d;
	float d1;
	float d2;
	float2 q;
	
	// Get bloom
	bloom				= tex2Dlod(SamplerBloom1, float4( IN.txcoord0.xy, 0, 0 ));
	srcbloom			= bloom;
	d					= linearDepth( Depth, 0.5f, 3500.0f );
	
	q = float2(1, 0); //horizontal, left switch for future use
	
	SigmaSum			= 0.0f;
	Sigma.x				= 1.0f / ( sqrt( 2.0f * PI ) * BloomSigma );
	Sigma.y				= exp( -0.5f / ( BloomSigma * BloomSigma ));
	Sigma.z				= Sigma.y * Sigma.y;
	
	sampleOffset		= 1.0f;
	bloom				*= Sigma.x;
	SigmaSum			+= Sigma.x;
	Sigma.xy			*= Sigma.yz;
	
	for(int i = 1; i < LOOPCOUNT && SigmaSum < Q; ++i) {
		bloom1 			= tex2Dlod(SamplerBloom1, float4( IN.txcoord0.xy + float2(sampleOffset*px*q.x, sampleOffset*py*q.y), 0, 0 )) * Sigma.x;
		bloom2 			= tex2Dlod(SamplerBloom1, float4( IN.txcoord0.xy - float2(sampleOffset*px*q.x, sampleOffset*py*q.y), 0, 0 )) * Sigma.x;
		
		d1				= tex2Dlod(SamplerDepth, float4( IN.txcoord0.xy + float2(sampleOffset*px*q.x, sampleOffset*py*q.y), 0, 0 )).x;
		d1				= linearDepth( d1, 0.5f, 3500.0f );
		d2				= tex2Dlod(SamplerDepth, float4( IN.txcoord0.xy - float2(sampleOffset*px*q.x, sampleOffset*py*q.y), 0, 0 )).x;
		d2				= linearDepth( d2, 0.5f, 3500.0f );

		bloom			+= lerp( srcbloom * Sigma.x, bloom1, smoothstep( d-d1, d, d1 ));		
		bloom			+= lerp( srcbloom * Sigma.x, bloom2, smoothstep( d-d2, d, d2 ));

		SigmaSum		+= ( 2.0f * Sigma.x );
		sampleOffset	+= 1.0f;
		Sigma.xy		*= Sigma.yz;
	}
	bloom.xyz			/= SigmaSum;
	bloom.xyz 			*= hIntensity;
		
	//Bloom Tinting
	if (use_tinting==true) {
			
		float3 tint_color	= lerp( lerp( tint_colorN, tint_colorD, ENightDayFactor ), tint_colorI, EInteriorFactor );
		float tint_level	= lerp( lerp( tint_levelN, tint_levelD, ENightDayFactor ), tint_levelI, EInteriorFactor );
		float tint_mix		= lerp( lerp( tint_mixN, tint_mixD, ENightDayFactor ), tint_mixI, EInteriorFactor );
		
		float3 tintColor	= 0.0f;
		
		if (tint_type==1)
			tintColor = tint_color * tint_level;
		if (tint_type==2)
			tintColor = tex2Dlod(SamplerBloom6, float4( IN.txcoord0.xy, 0, 0 )).xyz * tint_level;
		if (tint_type==3) {
			float3 tcol1 	= tint_color;
			float3 tcol2 	= tex2Dlod(SamplerBloom6, float4( IN.txcoord0.xy, 0, 0 )).xyz;
			tintColor		= lerp( tcol1.xyz, tcol2.xyz, tint_mix ) * tint_level;
			}
		
		float ttt		= max( dot( bloom.xyz, 0.33333332f ) - dot( srcbloom.xyz, 0.33333332f ), 0.0f );
		float gray		= BloomParameters.z * ttt * 10.0f;
		float mixfact	= gray / ( gray + 1.0f );
		mixfact			*= 1.0f - saturate( ( TempParameters.w - 1.0f ) * 0.2f );
		tintColor.xy	+= 1.0f - saturate( ( TempParameters.w - 1.0f ) * 0.3f );
		tintColor.xy	= saturate( tintColor.xy );
		
		bloom.xyz		*= lerp( 1.0f, tintColor.xyz, mixfact );
	}
	bloom.xyz			= saturate( bloom.xyz );
	bloom.w				= 1.0f;
	
	return bloom;
}

float4 PS_BloomTexture2(VS_OUTPUT_POST IN) : COLOR
{
	// --------------------------- //
	//   SECOND GAUSSIAN PASSES    //
	// --------------------------- //

	float Q				= 0.0f;
	if ( QUALITYLEVEL == 2 )
		Q = 0.6f;
	else if ( QUALITYLEVEL == 1 ) 
		Q = 0.8f;
	else if ( QUALITYLEVEL == 0 ) //best
		Q = 0.985f;
	
	float vIntensity	= lerp( lerp( vIntensityN, vIntensityD, ENightDayFactor ), vIntensityI, EInteriorFactor );
	float BloomSigma	= lerp( lerp( BloomSigmaN, BloomSigmaD, ENightDayFactor ), BloomSigmaI, EInteriorFactor );
	float minDepth		= lerp( minDepthE, minDepthI, EInteriorFactor );
	float px 			= TempParameters.z;
	float py 			= TempParameters.z * ScreenSize.z;
	BloomSigma			*= (ScreenSize.y/TempParameters.z);
	
	// Get Depth info and apply to Sigma
	float Depth			= tex2Dlod( SamplerDepth, float4( IN.txcoord0.xy, 0, 0 )).x;
	float SigmaDepth	= min( max( linearDepth( Depth, 0.5f, zfar ), minDepth ), 1.0f );
	BloomSigma			= max( BloomSigma * SigmaDepth, 0.6f ); //limited to not give weird result
	
	// Declare all needed variables
	float SigmaSum;
	float3 Sigma;
	float sampleOffset;
	float4 bloom;
	float4 bloom1;
	float4 bloom2;
	float4 srcbloom;
	float d;
	float d1;
	float d2;
	float2 q;
	
	// Get bloom
	bloom				= tex2Dlod(SamplerBloom1, float4( IN.txcoord0.xy, 0, 0 ));
	srcbloom			= bloom;
	d					= linearDepth( Depth, 0.5f, 3500.0f );
	
	q = float2(0, 1); //vertical, left switch for future use
	
	SigmaSum			= 0.0f;
	Sigma.x				= 1.0f / ( sqrt( 2.0f * PI ) * BloomSigma );
	Sigma.y				= exp( -0.5f / ( BloomSigma * BloomSigma ));
	Sigma.z				= Sigma.y * Sigma.y;
	
	sampleOffset		= 1.0f;
	bloom				*= Sigma.x;
	SigmaSum			+= Sigma.x;
	Sigma.xy			*= Sigma.yz;
	
	for(int i = 1; i < LOOPCOUNT && SigmaSum < Q; ++i) {
		bloom1 			= tex2Dlod(SamplerBloom1, float4( IN.txcoord0.xy + float2(sampleOffset*px*q.x, sampleOffset*py*q.y), 0, 0 )) * Sigma.x;
		bloom2 			= tex2Dlod(SamplerBloom1, float4( IN.txcoord0.xy - float2(sampleOffset*px*q.x, sampleOffset*py*q.y), 0, 0 )) * Sigma.x;
		
		d1				= tex2Dlod(SamplerDepth, float4( IN.txcoord0.xy + float2(sampleOffset*px*q.x, sampleOffset*py*q.y), 0, 0 )).x;
		d1				= linearDepth( d1, 0.5f, 3500.0f );
		d2				= tex2Dlod(SamplerDepth, float4( IN.txcoord0.xy - float2(sampleOffset*px*q.x, sampleOffset*py*q.y), 0, 0 )).x;
		d2				= linearDepth( d2, 0.5f, 3500.0f );

		bloom			+= lerp( srcbloom * Sigma.x, bloom1, smoothstep( d-d1, d, d1 ));	
		bloom			+= lerp( srcbloom * Sigma.x, bloom2, smoothstep( d-d2, d, d2 ));
		
		SigmaSum		+= ( 2.0f * Sigma.x );
		sampleOffset	+= 1.0f;
		Sigma.xy		*= Sigma.yz;
	}
	bloom.xyz			/= SigmaSum;
	bloom.xyz 			*= vIntensity;
	bloom.xyz			= saturate( bloom.xyz );
	bloom.w				= 1.0f;
	
	return bloom;
}
Postpass just stacks the layers, nothing else is happening in the file

Edit:
Doing manual editing to change the offsets coming from TempParameters.z fixes the issue for some reason. Does TempParameters.z still feed the same (and right) info to the shader in .266?
Ie.

Code: Select all

	float px			= 0.001953125; //(1/512)
	float py			= px * ScreenSize.z;
And everything works, but of course performance is worse because that offset is suppose to be adjusted to the size of the texture it reads...

Offline
*blah-blah-blah maniac*
Posts: 659
Joined: 19 Jul 2013, 13:04

Re: TES Skyrim 0.266

Oyama wrote:
prod80
Bas, are you an ' anti-flare ' type of guy ?... ;)
You crazy coder, you :)

i hate flare and lens effect too, look stupid. My eyes is not a lens. ;)
_________________
W10*I7 6700K*MSI Z170A MPower Gaming Titanium*2x Titan X Pascal*32GB 3600mhz DDR4* 3x 512GB Samsung Pro SSD*ASUS ROG Swift PG348Q
ENBSeries wrote: Welcome to AMD world! Don't complains to me, you bought it, have a nice time.

Offline
*blah-blah-blah maniac*
Posts: 659
Joined: 19 Jul 2013, 13:04

Re: TES Skyrim 0.266

skysan4298 wrote:When I used EnableZPrepass=true, I got CTD while fighting a dragon with 2 followers. I set it back to false, and haven't had a CTD yet. This might be related to my skyrimprefs.ini config.

I always CTD when I tried to load a save from the main menu because I have a few mods with heavily scripted. I always coc to a cell like whiterunbreezehome to initialize all scripted mods then load.

The ctdtest appears to keeping the memory usage lower than the official 0.266. The ctdtest lowered TESV memory usage when I switched a cell while 0.266 stayed same or raised. I had ENB compression off, and coc to breezehome, cow tamriel 8,-1, coc to honeyside then do the list again. Moved around each cell before I moved to the next cell.
cdtest
enbhost: 1.7G to 1.9G usage
TESV: 0.9G to 1.2G
0.266
enbhost: 1.7G to 2.1 usage
TESV: 1.0G to 1.4G

I haven't notice any stability issue with the ctdtest, but I did notice ctdtest had a little brighter bloom than 0.266.

Boris
Can ENB do multi-cores/threads access the GPU? I heard Dx9 is limited to a single core and single thread accessing GPU, and Dx11 does have some limited multi access to GPU. The TombRaider and Thief are Dx11, and I saw all my i7 cores and threads were evenly used.
access multicore GPU, wtf are you talking about? do you mean CPU or GPU SLI or Crossfire?

As for your crash it's your PC or your mods. Log your game and see if you ran out of vram or memory blocks. The last 4 ENB series update versions been very stable, work perfectly.
_________________
W10*I7 6700K*MSI Z170A MPower Gaming Titanium*2x Titan X Pascal*32GB 3600mhz DDR4* 3x 512GB Samsung Pro SSD*ASUS ROG Swift PG348Q
ENBSeries wrote: Welcome to AMD world! Don't complains to me, you bought it, have a nice time.

Offline
*sensei*
Posts: 331
Joined: 20 Jul 2013, 00:34

Re: TES Skyrim 0.266

charlievoviii wrote:access multicore GPU, wtf are you talking about? do you mean CPU or GPU SLI or Crossfire?
CPU sends rending instruction in sequence to GPU with Dx9, and Dx11 handles this a little better with threads. Win10 Dx12 got better with CPU multi-core and multi-thread sending to GPU.
_________________
AMD R9 6900HX, 16GB DDR5-4800
Win 11Pro 64bit on NvMe, Skyrim on NvMe 2nd partition
Nvidia GTX 1070 FE eGPU v531.209
OrganicENB SE
OrganicENB LE

Offline
User avatar
Posts: 61
Joined: 16 Nov 2014, 05:12
Location: USA

Re: TES Skyrim 0.266

ENBSeries wrote:Default values are:
iBlurDeferredShadowMask=3
bShadowMaskZPrepass=0
bMainZPrepass=0
bDeferredShadows=1
Just to clarify as some of the users assumptions are confusing me...

For the new ZPrepass feature in ENBSeries, are all four of the above parameters in the SkyrimPrefs.ini affected and should be set to defaults or just the bShadowMaskZPrepass and bMainZPrepass parameters?

Thanks!
Post Reply