Ultimate Oblivion Mod Guide 2016: The Next Edition

Post » Thu May 19, 2016 4:16 pm

Hi all. It's me again.



Previous thread here: http://www.gamesas.com/topic/1601170-help-with-ultimate-oblivion-mod-guide-2016/



After having installed my intended load order (http://pastebin.com/MQybWVub), I would get the occasional crash anywhere from 5 to 30 minutes after playing the game. At first, I thought maybe it was Custom Auto Save. So I disabled and went to Duke Patrick's Safe Save. Well that didn't work and all Duke's mod did was pop up an annoying message any time I farted. I was still getting random crashes and I couldn't trace the problem. I almost gave up. I really did.



But per gothemasticator's instructions and with a little bit of frustration and determination, I uninstalled everything and started from scratch.



I began with vanilla + UOP + Alternate Beginnings (I trust Arthmoor and I couldn't bear to do another venture in the tutorial dungeon). Kept OSR and moreHeap at 768 + 1024 respectively. Capped framerate at 40. Enabled Distant Buildings just to see what happens. Started game at a few locations, coc over to Chorrol, Imperial Isle, etc. Test some problem areas. Everything works great. It runs! Then I added Better Cities + UL. Obvious performance decrease but stable. Cool. Oh hey Oblivion Reloaded showed up to the party. And let's throw OOO + MOO into the mix. Cuz you gotta have those unicorns that MOO adds, y'know?



And then the random crashes start again. I'm sitting there stunned. How is this happening? I'm using mods that everyone else uses just fine. Kid tested, mother approved. It can't be the mods, can it?



Nah, bro. Let's think about this. Is it the ini? Nah I reset that. Did you run TES4LOD? Sure did. Missing any masters or anything red in Wrye Bash? Nope!



Well what about the fact that OSR states that ReplaceHeap can cause some people instability with it? Hm. There's a thought. Let's roll the heapsize back to default 450 on both OSR and moreHeap. Booted up game. Tested some areas. Seems to be stable now.



Will test further tonight using 450 heap but it seems heap replacement could be my problem? Maybe I should just disable? How necessary are moreHeap and OSR? I know that they add better memory performance but has anyone found that the cons outweigh the pros? Would like to understand better. Please let me know.



Thanks for reading!

User avatar
Sammykins
 
Posts: 3330
Joined: Fri Jun 23, 2006 10:48 am

Post » Thu May 19, 2016 3:41 pm

Totally worth ditching heap replacement for stability. If you find your crashes start again, I would disable the heap replacement in OSR and MoreHeap and see if that solves it.



Another thing to be aware of: corrupt spawns. I once had a spawning something-or-other that would crash the game as soon as it entered my field of view. So I never saw it. If I entered the room backwards, I could get some distance into the room, but as soon as I turned around... BAM CTD! The other thing about a corrupt spawn, is that usually it is from a list, so only one possible spawn at that point might be corrupt. So, any save close enough to the spawn point that would have caused the corrupt thing to appear already - all those saves will crash reproducibly at the same point. Playing from saves further away will generate a chance of a corrupt spawn. But sometimes another non-corrupt item from the list will spawn instead. In that case, no CTD, and you're left just banging your head against the wall.



In general, I experienced more crashes with MMM in my load order than after I stopped using it. YMMV



Good luck!

User avatar
Killah Bee
 
Posts: 3484
Joined: Sat Oct 06, 2007 12:23 pm

Post » Thu May 19, 2016 7:58 pm

If it's a corrupt spawn, you may want to troubleshoot it easily:



1. Go to same cell well away from crash point, preferably interior.


2. wait for 3 days + 1 hour just in case (3 days is the default value of cell full respawn).


3. travel to crash place - if it's gone it might mean that your problem is solved.



Or not. But that's just how Oblivion works. You never know for sure.

User avatar
Rachel Briere
 
Posts: 3438
Joined: Thu Dec 28, 2006 9:09 am

Post » Thu May 19, 2016 5:00 pm

He's using MOO, so he should check the MOO ini to see if it is set for a longer respawn time (and if so, reduce it back to 3 days) before following this procedure.

User avatar
Kerri Lee
 
Posts: 3404
Joined: Sun Feb 25, 2007 9:37 pm

Post » Thu May 19, 2016 7:55 pm

Thanks for the responses, everyone!



My gut instinct is that these crashes could be OSR. I've experimented with heap size replacement off/on before and it can really make or break the game. Besides the performance increase using heap is nominal at best so I'd rather keep with stability. It's probably why the feature is turned off by default, hmm?



Interesting to know about spawns especially re: MMM. I was using MMM for an FCOM build once before and I would get the occasional crash then too. Luckily not using MMM this time. It seems that OOO+MOO will be great since MOO accounts for OOO being enabled.



I haven't even edited the MOO ini yet even tho I actually don't want any unicorns lol. Vanilla timespawn for MOO looks like this:



; By default respawn time remains unchanged (== -1). Normally set to 72 hours.

; Suggested options: (-1), 24, 48, 72, etc. -> (unchanged), any hours


set MOO.ini_respawntime to -1



So unless I have another mod editing time (which I'm unaware of), it's probably OSR.



Will test further this weekend. Thanks again :)

User avatar
Nadia Nad
 
Posts: 3391
Joined: Thu Aug 31, 2006 3:17 pm

Post » Thu May 19, 2016 4:46 pm

What about just leaving OOO and uninstalling MOO? No problem there?


If you uninstall both OOO and MOO now, are the CTDs gone?


Can anyone verify that BOSS loads MOO after the Bashed Patch as is recommended?


Careful if regenerating Oblivion.ini especially when it is edited by mods, you might lose important edits. E.g. incorrect Border Settings.http://www.uesp.net/wiki/Oblivion_talk:Ini_Settings#Border_Remover. Please post it.


Also get better performance with a lower value of fLODFadeOutMultActors.


What's in your OSR ini? Mine works, but then not running BC or MOO.



Spoiler



Master = {


_comment = You can turn on or off each distinct feature from here.


bManageFPS = 1


bHookCriticalSections = 1


bHookHashtables = 1


bReplaceHeap = 1


bReplaceGetTickCount = 1


bLogToConsole = 0


bFastExit = 1


bExtraProfiling = 0


bFlushLog = 1


iSchedulingResolution = 1


bReplaceRandom = 1


bExperimentalStuff = 1


iMainHookPoint = 1


}


Experimental = {


_comment =bReduceSleep and iThreadsFixedToCPUs can probably reasonably be used at 1. > 1 is a bad idea atm.


_comment =other settings here you're probably better off not touching


bReduceSleep = 0


iThreadsFixedToCPUs = 1


bSuppressRandomSeeding = 0


bMonitorBSShaderAccumulator = 0


iPrintSceneGraphDepth = 0


bReplaceRandomWrappers = 1


bBenchmarkHeap = 0


bAlternateHeapHooks = 0


iHeapMainBlockAddress = 0


}


FPS_Management = {


_comment =Absent a good reason otherwise, bInject_iFPSClamp=1, fMaximumFPS= 30 to 85 (or 0), fMinimumFPS= 10 to 20, iFPS_Report_Period = 2000 to 60000, fExtraSleepPercent = 0.0 to 0.2


bInject_iFPSClamp = 1


fMaximumFPS = 35


fMinimumFPS = 8


iFPS_Report_Period = 15000


fExtraSleepPercent =0.05


}


GetTickCount = {


_comment =This section is disabled by default - see Master/bReplaceGetTickCount


bForceResolution = 1


bPreserveDC_Bias = 1


bPreserveHighFreqComponents = 0


bForceSync = 0


iSyncLimitMilliseconds = 50


}


CriticalSections = {


_comment = CS stuff helps Oblivion, Fallout, and New Vegas significantly


_comment = much of the benefit comes from the Renderer+0x180 suppression (see overrides below)


_comment = modes: 1=vanilla, 2=fair, 3=staggering(hybrid of 1 & 2), 5=suppressed


bUseOverrides = 1


iDefaultMode = 3


iDefaultSpin = 1300


iStaggerLevel = 5


bEnableMessages = 0


bEnableProfiling = 0


}


Heap = {


_comment =This section is disabled by default - see Master/bReplaceHeap


_comment =I recommend enabling it however.


_comment = Heap replacement can produce MAJOR improvements in performance on Oblivion at a significant cost in stability


_comment = It crashes instantly on Fallout3 last I remember checking


_comment = It seems to work on Fallout: New Vegas ?


_comment = Algorithms: 1=FastMM4, 2=Microsoft (slow on XP), 3=SimpleHeap1, 4=TBBMalloc, 5=ThreadHeap2, 6=ThreadHeap3, 8=tcmalloc


_comment = Algorithms numbers 1, 4, and 8 require external DLL files in the Data/OBSE/Plugins/ComponentDLLs folder


_comment = Size is in units of megabytes, and only effects algorithms 3, 5, and 6 (other algorithms dynamically determine their own size)


iHeapAlgorithm = 6


bEnableProfiling = 0


iHeapSize = 768


bEnableMessages = 0


bZeroAllocations = 0



User avatar
Danger Mouse
 
Posts: 3393
Joined: Sat Oct 07, 2006 9:55 am

Post » Thu May 19, 2016 1:02 pm

Hey,



This combination of settings works well for me, it reduces a LOT CTDs for me



OSR


bReplaceHeap = 0



OR


set ORLoaderQuest.Purger to 1



MoreHeap:


DefaultHeapSize=768



You should try it.


Hope it helps.

User avatar
A Dardzz
 
Posts: 3370
Joined: Sat Jan 27, 2007 6:26 pm

Post » Fri May 20, 2016 3:52 am

FWIW ENBboost seems to dramatically reduce 'random' crashes for me. I also use OSR's heap replacement but as people have said it requires a bit of experimentation to get it to work in a stable way. I think I use heap algorithm 6.

User avatar
xx_Jess_xx
 
Posts: 3371
Joined: Thu Nov 30, 2006 12:01 pm

Post » Thu May 19, 2016 8:08 pm

Well guys.



I have some good news and some bad news.



I started off slowly building on top of BC + UL + OOO + MOO after testing stability. I installed mods that have been verified to be clean and working with no bugs. Still the game would randomly crash. I tried turning off OSR and moreHeap. Crash. Turned them back on and tried different heap sizes. Eventual crash. One thing I did notice was that the game would not run without heap replacement. I assume this is because of my heavily modded load order. So with that in mind, I realized that maybe it wasn't a mod or heap issue. Specifically, it's the way the game is handling memory. So I gave one last try and installed ENBoost.



And poof! The CTDs seem to have disappeared.



Great. Unfortunately this means that I'm only using Oblivion Reloaded's graphic modifications. While good, they're not on the same level as ENB itself. There is OR'S lack of solid DOF, coloring, shadows, etc that ENB provides. But using ENB = inevitable crash. Using ENBoost = no crashes. I accepted this fact and decided to explore other options that could work alongside ENBoost. Well, Sweetfx didn't work with ENBoost enabled. Same with Reshade which means the same for Mastereffect. I looked at this japanese guy's OR cell settings which seemed to be what I was looking for but it doesn't work with current version of OR: http://www.nexusmods.com/oblivion/mods/46336/?



So I'm stuck. Trying to figure out today if I can edit OR's shader inis to look somewhat decent like the above. I'll be honest, even as someone who works with Photoshop all day, I have no idea how to manipulate OR to my liking. While I'm not back at square one, I am hitting a major point of frustration. The whole point of my venture was to include both major content + graphics overhaul. Without ENB effects or some form of graphic update, the game doesn't feel right. Especially the coloring.



Any suggestions?



+++++++++++++++



Here's my LO: http://pastebin.com/vu9L2pn2



OSR: http://pastebin.com/Sp7hPH9Y



moreHeap is 512



Oblivion ini: http://pastebin.com/nXt3eq3R

User avatar
Eoh
 
Posts: 3378
Joined: Sun Mar 18, 2007 6:03 pm

Post » Thu May 19, 2016 2:07 pm

For a start you haven't used any of the OR recommended modifications to Oblivion.ini.


Note on the OR page: Disable the OR purger to use ENBoost

You can certainly do your own shaders in OR, better quality and performance. ENB is ok but post process.

User avatar
butterfly
 
Posts: 3467
Joined: Wed Aug 16, 2006 8:20 pm

Post » Thu May 19, 2016 10:49 pm

Too bad ENB has no ENBoost included.


If you want to add some colors to your game, tweak the coloring.ini in OR, it can give nice results.

User avatar
alicia hillier
 
Posts: 3387
Joined: Tue Feb 06, 2007 2:57 am

Post » Fri May 20, 2016 3:03 am


I know what you mean about the visual difference between ENB and OR but ultimately I'm in the same boat as you in having to choose between graphics and basic playability. I have been playing about with OR's shaders (in a highly amateur copy-paste kind of way so be forewarned) and if you're interested you could give my settings a go?



This involves opening some of OR's .hlsl file in notepad or wordpad and simply replacing their contents with the modified version. For the modified shaders to work you'll need to set 'CompileShaders = 1' in 'OBSE\Plugins\OblivionReloaded.ini'. The main idea is to improve OR's tonemapping and colouration. If you don't like the changes simply re-install the default OR files. What you need is in the spoilers below.



This is a modified 'Color.hlsl' file to be replace the contents of the file in 'Shaders\OblivionReloaded\HDR\Includes' (NB: Not to be confused with the 'Coloring' shader):




Spoiler
static const

float3 WhitePointE = {0.959456f, 1.00f, 1.088754f};


static const

float3 BlueShift = {1.05f, 0.97f, 1.27f};


static const

float3x3 XYZ_RGB = {{+ 0.412453, + 0.357580, + 0.180423},

{+ 0.212671, + 0.715160, + 0.072169},

{+ 0.019334, + 0.119193, + 0.950227}};


static const

float3x3 RGB_XYZ = {{+ 3.240479 , - 1.537150 , - 0.498535 },

{- 0.969256 , + 1.875992 , + 0.041556 },

{+ 0.055648 , - 0.204043 , + 1.057311 }};


float GetLuminance( const float3 rgb )

{

return max(dot( XYZ_RGB[1], rgb ), 0.001);

}


float3 GetXYZfromRGB( const float3 rgb )

{

return mul( XYZ_RGB, rgb );

}


float3 GetRGBfromXYZ( const float3 xyz )

{

return mul( RGB_XYZ, xyz );

}


float3 GetWhitePoint()

{

return mul( RGB_XYZ, WhitePointE );

}


float3 GammaEncode(float3 color) {

const float barrier = 0.018, soffs = 0.099;

const float bfac = 1.0 / 2.2, sfac = 10 * bfac;


float3 fac = color * sfac;

float3 col = pow((1.0 + soffs) * color, bfac) - soffs;


/* easier with a lerp than other way with cmp */

return lerp(col, fac, color > barrier ? 0 : 1);

}



This is modified code for the file HDR004.pso.hlsl in 'Shaders\OblivionReloaded\HDR':




Spoiler
//

// Generated by Microsoft ® D3DX9 Shader Compiler 9.08.299.0000

//

// vsa shaderdump19/HDR004.pso /Fcshaderdump19/HDR004.pso.dis

//

//

#define ScreenSpace Src0

// Parameters:

//

sampler2D AvgLum : register(s2);

sampler2D DestBlend : register(s1);

float4 HDRParam : register(c1);

sampler2D ScreenSpace : register(s0);


float4 obge_ToneMapping : register(c63);


//

// SetPixelShaderConstantF[0+] [BlurShaderHDR]

// |0.000000|0.000000|0.000000|0.000000| fTargetLUM=1.2000

// SetPixelShaderConstantF[1+] fUpperLUMClamp=1.4000

// |1.200000|1.350000|0.500000|1.400000| fGrassDimmer=1.3000

// SetPixelShaderConstantF[2+] fTreeDimmer=1.2000

// |0.000000|0.003906|0.000000|0.000000| fEmissiveHDRMult=2.0000

// SetPixelShaderConstantF[3+] fEyeAdaptSpeed=0.7000

// |-7.000000|-7.000000|0.000000|0.000000| fSunlightDimmer=1.3000

// |-6.000000|-6.000000|0.000000|0.000000| fSIEmmisiveMult=1.0000

// |-5.000000|-5.000000|0.000000|0.000000| fSISpecularMult=1.5000

// |-4.000000|-4.000000|0.000000|0.000000| fSkyBrightness=0.5000

// |-3.000000|-3.000000|0.000000|0.000000| fSunBrightness=0.0000

// |-2.000000|-2.000000|0.000000|0.000000| fBrightScale=1.5000

// |-1.000000|-1.000000|0.106507|0.000000| fBrightClamp=1.3500

// |0.000000|0.000000|0.786986|0.000000| fBlurRadius=1.0000

// |1.000000|1.000000|0.106507|0.000000| iNumBlurpasses=1

// |2.000000|2.000000|0.000000|0.000000| iBlendType=2

// |3.000000|3.000000|0.000000|0.000000| bDoHighDynamicRange=1

// |4.000000|4.000000|0.000000|0.000000|

// |5.000000|5.000000|0.000000|0.000000|

// |6.000000|6.000000|0.000000|0.000000|

// |7.000000|7.000000|0.000000|0.000000|

// |0.000000|0.000000|0.000000|0.000000|

//

// Registers:

//

// Name Reg Size

// ------------ ----- ----

// HDRParam const_1 1

// ScreenSpace texture_0 1

// DestBlend texture_1 1

// AvgLum texture_2 1

//


#include "Includes/Color.hlsl"


// Structures:


struct VS_OUTPUT {

float2 ScreenOffset : TEXCOORD0;

float2 texcoord_1 : TEXCOORD1;

};


struct PS_OUTPUT {

float4 color_0 : COLOR0;

};


float rand_1_10(in float2 uv)

{

float2 noise = (frac(sin(dot(uv ,float2(12.9898,78.233)*2.0)) * 43758.5453));

return frac(noise.x + noise.y) * 2.0 - 1.0;

}


// Code:


PS_OUTPUT main(VS_OUTPUT IN) {

PS_OUTPUT OUT;


#define weight(v) dot(v, 1)


float3 reslt;

float3 color;

float3 avlum;

float3 blurc;

float3 UC2color;

float3 curr;

float3 whiteScale;

float rwhite;

float whitep, whitef;

float luma, lumc, amplify;




blurc = tex2D(ScreenSpace, IN.ScreenOffset.xy).rgb;

color = tex2D(DestBlend, IN.texcoord_1.xy).rgb;

avlum = tex2D(AvgLum, IN.ScreenOffset.xy).rgb;

avlum = max(0.05, avlum);



rwhite = 1.0 / max(weight(avlum), HDRParam.x); // 1.0 / max(range, fTargetLUM)

reslt = ((rwhite * HDRParam.x) * color) + max(blurc * (rwhite * 0.5), 0);


luma = GetLuminance(avlum);

lumc = GetLuminance(color);


/* eye-adaption */

whitep = HDRParam.x;

// whitef = whitep / max(luma, whitep /*- 0.125*/);

whitef = pow(whitep, 0.3 / luma);

// whitef = GetIntensity(r2.xyz);

// whitef = log(2 + whitef) / log(2 + whitep);


/* whitepoint-based eye-adaption */

blurc = blurc * (whitef * GetWhitePoint() * obge_ToneMapping.y);

color = color * (whitef * GetWhitePoint() * obge_ToneMapping.z);


/* final color (color + blur) */

reslt = (blurc) + (color);


luma = GetLuminance(avlum);

lumc = GetLuminance(reslt);


/* Uncharted2 */


const float A = 0.15;

const float B = 0.50;

const float C = 0.10;

const float D = 0.20;

const float E = 0.02;

const float F = 0.30;

const float W = 11.2;


#define Uncharted2Tonemap(x) ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F


float adaptedLum = 1.0f / max(HDRParam.x, luma);

curr = Uncharted2Tonemap(obge_ToneMapping.x * color * adaptedLum);

color = curr;

curr = Uncharted2Tonemap(saturate(blurc * adaptedLum));


reslt = GammaEncode((color + curr) / Uncharted2Tonemap(W));


luma = GetLuminance(avlum);

lumc = GetLuminance(reslt);


/* night blue-shift */

reslt = lerp(lerp(BlueShift / 32, reslt * BlueShift / length(BlueShift), saturate(sqrt(luma) * 2)), reslt, saturate(sqrt(lumc) * 2));



/* rod-grain */

reslt = reslt - (saturate(0.05 - luma) * rand_1_10(IN.ScreenOffset.xy * float2(lumc, luma)));


OUT.color_0.a = 1;

OUT.color_0.rgb = reslt;


return OUT;

};


// approximately 13 instruction slots used (3 texture, 10 arithmetic)



Settings for HDR.ini in 'Shaders\OblivionReloaded\HDR':



Spoiler
[Default]

ToneMapping = 2.2

ToneMappingBlur = 0.5

ToneMappingColor = 1



Settings for Bloom.ini in 'Shaders\OblivionReloaded\Bloom':



Spoiler
[Default]

BloomIntensity = 1

OriginalIntensity = 1

BloomSaturation = 1

OriginalSaturation = 1

Luminance = 0.06

MiddleGray = 0.333

WhiteCutOff = 2



Settings for Coloring.ini in 'Shaders\OblivionReloaded\Coloring':



Spoiler
[Default]

Strength = 0.5

BaseGamma = 1.6

Fade = 0.3

Contrast = 1

Saturation = -0.3

Bleach = -0.5

BleachLuma = -0.5

ColorCurve = 1

ColorCurveR = 0.9

ColorCurveG = 1

ColorCurveB = 1

EffectGamma = 1

EffectGammaR = 1

EffectGammaG = 1

EffectGammaB = 1

Linearization = 1



I'd also recommend using this mod http://www.nexusmods.com/oblivion/mods/46815/?with the following settings:



Spoiler
ORSetCustomValue "Flare" "fFlareThreshold" 0.5

ORSetCustomValue "Flare" "fHaloThreshold" 0.5

ORSetCustomValue "Flare" "fFlareGain" 4.0

ORSetCustomValue "Flare" "fHaloGain" 4.0



Visual changes like this can be a bit subjective of course, but would be interested to hear opinions!



OBGE had some really nice Bokeh Depth Of Field effects and I think in some cases the code from them was actually the basis for the fancy DOF shaders you see with some ENBs. Would be awesome to see them ported at some point but it's a bit beyond my knowledge/skill level!

User avatar
Flutterby
 
Posts: 3379
Joined: Mon Sep 25, 2006 11:28 am

Post » Thu May 19, 2016 12:17 pm

@http://www.gamesas.com/user/627613-noonemusteverknow/: Nice. The BBccode nuked some of the characters in HDR004.pso.hlsl. What were they?

Bokeh_Circle_DoF.fx here (Bokeh_Hexagon_DoF.fx next post: why aren't they in OR I wonder?)


Spoiler


// Shaped Bokeh Depth of Field

// CoC Calculations based off Knu's DoF shader for MGE

// Blurring Algorithm Created by Tomerk

// Optimized by Ethatron



// ---------------------------------------

// NOTES

//

// If you use "Bloom" instead of "HDR" it is necessary

// to bump the screen-buffer depth to 16bits with

// "iBufferTexturesNumBits=-16" in the OBGE.ini



// ---------------------------------------

// TWEAKABLE VARIABLES.





#undef TEST_MODE

// Toggle for test-mode. If enabled, you can see the raw ssao

//"#define ..." is enabled, and "#undef ..." is disabled.



iface float fr

< string help = "retina focus point, dpt";

string description = "set slightly lower than fp to simulate myopia or as an alternative to MGE's distant blur.\n"

"set slightly higher than fp+fpa to simulate hyperopia"; >

= 60.0;



iface float fp

< string help = "eye relaxed focus power, dpt"; >

= 60.0;



iface float fpa

< string help = "accomodation, dpt";

string description = "set lower to simulate presbyopia"; >

= 10.0;



iface float base_blur_radius

< string help = "base blur radius;";

string description = "higher values mean more blur when out of DoF and shorter DoF."; >

= 0.75;



iface float R

< string help = "maximum blur radius in pixels;"; >

= 16.0;



#undef EDGEWEIGHTING // #undef has constant weighting in highlights,

// #define gives edges more weight in highlights



#undef WEAPONBLUR // Define to keep weapons from blurring



iface float weaponblur_cutoff

< string help = "Cutoff distance for what is considered a weapon"; >

= 0.8;



#define SMOOTHBLUR // when defined, smooths the blur, may have a performance hit





// END OF TWEAKABLE VARIABLES.

// ---------------------------------------



#include "includes/Resolution.hlsl"

#include "includes/Depth.hlsl"

#include "includes/Color.hlsl"

#include "includes/IO.hlsl"



#define drangeZ oblv_ProjectionDepthRange_MAINPASS.z * 0.01



texture2D obge_LastRendertarget0_EFFECTPASS;

sampler2D PassSamplerL = sampler_state {

Texture = ;



AddressU = MIRROR;

AddressV = MIRROR;



MagFilter = LINEAR;

MinFilter = LINEAR;

MipFilter = NONE;

};



struct VSOUT

{

float4 vertPos : POSITION;

float2 UVCoord : TEXCOORD0;

};



struct VSIN

{

float4 vertPos : POSITION0;

float2 UVCoord : TEXCOORD0;

};



VSOUT FrameVS(VSIN IN)

{

VSOUT OUT = (VSOUT)0.0f;



OUT.vertPos = IN.vertPos;

OUT.UVCoord = IN.UVCoord;



return OUT;

}



static const float focus = LinearDepth(float2(0.5, 0.5));



#define precalc(x, y) float2(x,y)

#define M 60

static const float2 taps[M] =

{

precalc(-0.0000, -1.0000),

precalc(-0.2588, -0.9659),

precalc( 0.2588, -0.9659),

precalc( 0.5000, -0.8660),

precalc(-0.5000, -0.8660),

precalc(-0.0000, -0.7500),

precalc(-0.7071, -0.7071),

precalc( 0.7071, -0.7071),

precalc(-0.2565, -0.7048),

precalc( 0.2565, -0.7048),

precalc( 0.4821, -0.5745),

precalc(-0.4821, -0.5745),

precalc(-0.0000, -0.5000),

precalc(-0.8660, -0.5000),

precalc( 0.8660, -0.5000),

precalc( 0.2500, -0.4330),

precalc(-0.2500, -0.4330),

precalc( 0.6495, -0.3750),

precalc(-0.6495, -0.3750),

precalc(-0.9659, -0.2588),

precalc( 0.9659, -0.2588),

precalc(-0.4330, -0.2500),

precalc( 0.4330, -0.2500),

precalc(-0.0000, -0.2500),

precalc(-0.7386, -0.1302),

precalc( 0.7386, -0.1302),

precalc(-0.2165, -0.1250),

precalc( 0.2165, -0.1250),

precalc( 0.5000, -0.0000),

precalc( 1.0000, -0.0000),

precalc(-1.0000, 0.0000),

precalc(-0.5000, 0.0000),

precalc(-0.2165, 0.1250),

precalc( 0.2165, 0.1250),

precalc(-0.7386, 0.1302),

precalc( 0.7386, 0.1302),

precalc( 0.0000, 0.2500),

precalc(-0.4330, 0.2500),

precalc( 0.4330, 0.2500),

precalc(-0.9659, 0.2588),

precalc( 0.9659, 0.2588),

precalc( 0.6495, 0.3750),

precalc(-0.6495, 0.3750),

precalc( 0.2500, 0.4330),

precalc(-0.2500, 0.4330),

precalc( 0.0000, 0.5000),

precalc( 0.8660, 0.5000),

precalc(-0.8660, 0.5000),

precalc( 0.4821, 0.5745),

precalc(-0.4821, 0.5745),

precalc( 0.2565, 0.7048),

precalc(-0.2565, 0.7048),

precalc(-0.7071, 0.7071),

precalc( 0.7071, 0.7071),

precalc( 0.0000, 0.7500),

precalc( 0.5000, 0.8660),

precalc(-0.5000, 0.8660),

precalc(-0.2588, 0.9659),

precalc( 0.2588, 0.9659),

precalc( 0.0000, 1.0000),

};



static const float k = 0.00001;



float4 DepthOfField(float2 tex : TEXCOORD0) : COLOR0 {

float depth = LinearDepth(tex);

float s = focus * drangeZ;

float z = depth * drangeZ;



float fpf = clamp(1 / s + fr, fp, fp + fpa);

float c = base_blur_radius * 0.009 * (fr - fpf + 1 / z) / fr / k;

c = sign(z - s) * min(abs©, R);



#ifndef WEAPONBLUR

c *= smoothstep(weaponblur_cutoff - 0.05, weaponblur_cutoff, z);

#endif



#ifdef TEST_MODE

return abs©;

#else

return float4(tex2D(PassSamplerL, tex).rgb, store(c, R));

#endif

}



float4 SmartBlur( float2 tex : TEXCOORD0 ) : COLOR0 {

float4 color = tex2D(PassSamplerL, tex);

float c = load(color.a, R);

float weight = (1 / (c * c + 1)) * GetLuminance(color.rgb + 0.01);



weight = max(0, weight);

#ifdef EDGEWEIGHTING

weight *= 0.25;

#endif



color.rgb *= weight;

float amount = weight;



[unroll]

for (int i = 0; i < M; i++) {

const float2 dir = taps[i].xy;

const float len = length(dir.xy) * abs©;



float2 s_tex = tex + rcpres * c * dir.xy;

float4 s_color = tex2D(PassSamplerL, s_tex);

float s_c = abs(load(s_color.a, R));



// if (c < 0) s_c = max(abs©, s_c);

s_c = max( -c , s_c);



weight = (1 / (s_c * s_c + 1)) * GetLuminance(s_color.rgb + 0.01);

weight *= saturate(1 - smoothstep(s_c, s_c * 1.1, len));



#ifdef EDGEWEIGHTING

weight *= saturate(0.25 + 0.75 * pow(len / (s_c), 2));

#endif



/* weight is positive [0,inf]*[0,1]*[0,1] */

color.rgb += s_color.rgb * weight;

amount += weight;

}



#ifdef SMOOTHBLUR

return float4(color.rgb / amount, color.a);

#endif



return float4(color.rgb / amount, 1);

}



float4 HorizontalBlur(float2 tex : TEXCOORD0) : COLOR0 {



float4 color = tex2D(PassSamplerL, tex);

float c = load(color.a, R);

float scale = c / 8; color.rgb *= 6;



color.rgb += tex2D(PassSamplerL, float2(tex.x - (rcpres.x ) * scale, tex.y)).rgb * 4;

color.rgb += tex2D(PassSamplerL, float2(tex.x + (rcpres.x ) * scale, tex.y)).rgb * 4;



color.rgb += tex2D(PassSamplerL, float2(tex.x - (rcpres.x * 2) * scale, tex.y)).rgb * 1;

color.rgb += tex2D(PassSamplerL, float2(tex.x + (rcpres.x * 2) * scale, tex.y)).rgb * 1;



return float4(color.rgb / 16, color.a);

}



float4 VerticalBlur(float2 tex : TEXCOORD0) : COLOR0 {



float4 color = tex2D(PassSamplerL, tex);

float c = load(color.a, R);

float scale = c / 8; color.rgb *= 6;



color.rgb += tex2D(PassSamplerL, float2(tex.x, tex.y - (rcpres.y ) * scale)).rgb * 4;

color.rgb += tex2D(PassSamplerL, float2(tex.x, tex.y + (rcpres.y ) * scale)).rgb * 4;



color.rgb += tex2D(PassSamplerL, float2(tex.x, tex.y - (rcpres.y * 2) * scale)).rgb * 1;

color.rgb += tex2D(PassSamplerL, float2(tex.x, tex.y + (rcpres.y * 2) * scale)).rgb * 1;



return float4(color.rgb / 16, 1);

}





technique main

<

int group = EFFECTGROUP_POST;

int fxclass = EFFECTCLASS_DOF;

int conditions = EFFECTCOND_ZBUFFER | EFFECTCOND_ACHANNEL;

>

{

pass {

VertexShader = compile vs_3_0 FrameVS();

PixelShader = compile ps_3_0 DepthOfField();

}



#ifndef TEST_MODE

pass {

VertexShader = compile vs_3_0 FrameVS();

PixelShader = compile ps_3_0 SmartBlur();

}

#endif



#ifdef SMOOTHBLUR

pass {

VertexShader = compile vs_3_0 FrameVS();

PixelShader = compile ps_3_0 HorizontalBlur();

}



pass {

VertexShader = compile vs_3_0 FrameVS();

PixelShader = compile ps_3_0 VerticalBlur();

}

#endif

}


User avatar
michael danso
 
Posts: 3492
Joined: Wed Jun 13, 2007 9:21 am

Post » Thu May 19, 2016 8:50 pm

Bokeh_Hexagon_DoF.fx:


Spoiler


// Shaped Bokeh Depth of Field

// CoC Calculations based off Knu's DoF shader for MGE

// Blurring Algorithm Created by Tomerk

// Optimized and lens effects by Ethatron



// ---------------------------------------

// NOTES

//

// If you use "Bloom" instead of "HDR" it is necessary

// to bump the screen-buffer depth to 16bits with

// "iBufferTexturesNumBits=-16" in the OBGE.ini



// ---------------------------------------

// TWEAKABLE VARIABLES.





#undef TEST_MODE

// Toggle for test-mode. If enabled, you can see the raw ssao

//"#define ..." is enabled, and "#undef ..." is disabled.



iface float fr

< string help = "retina focus point, dpt"; >

= 60.0;

// set slightly lower than fp to simulate myopia or as an alternative to MGE's distant blur

// set slightly higher than fp+fpa to simulate hyperopia



iface float fp

< string help = "eye relaxed focus power, dpt"; >

= 60.0;

iface float fpa

< string help = "accomodation, dpt"; >

= 10.0;

// set lower to simulate presbyopia



iface float base_blur_radius

< string help = "base blur radius;"; >

= 0.75;

// higher values mean more blur when out of DoF and shorter DoF.



iface float R

< string help = "maximum blur radius in pixels;"; >

= 16.0;



/* 4.87ms without

* 4.93ms with global astigmatism

* 5.15ms with full local astigmatism

* 9.05ms with global aberration

* 9.02ms with full local aberration

* 9.05ms everything

*/

#define ABERRATION 0 // take lens refraction into account

#define ASTIGMATISM 1 // take lens curvature into account



#undef EDGEWEIGHTING // #undef has constant weighting in highlights,

// #define gives edges more weight in highlights



#undef WEAPONBLUR // Define to keep weapons from blurring



iface float weaponblur_cutoff

< string help = "Cutoff distance for what is considered a weapon"; >

= 0.8;



#define SMOOTHBLUR // when defined, smooths the blur, may have a performance hit





// END OF TWEAKABLE VARIABLES.

// ---------------------------------------



#include "includes/Resolution.hlsl"

#include "includes/Depth.hlsl"

#include "includes/Color.hlsl"

#include "includes/IO.hlsl"



#define drangeZ oblv_ProjectionDepthRange_MAINPASS.z * 0.01



texture2D obge_LastRendertarget0_EFFECTPASS;

sampler2D PassSamplerL = sampler_state {

Texture = ;



AddressU = Mirror;

AddressV = Mirror;



MagFilter = LINEAR;

MinFilter = LINEAR;

MipFilter = LINEAR;

};



struct VSOUT

{

float4 vertPos : POSITION;

float2 UVCoord : TEXCOORD0;

};



struct VSIN

{

float4 vertPos : POSITION0;

float2 UVCoord : TEXCOORD0;

};



VSOUT FrameVS(VSIN IN)

{

VSOUT OUT = (VSOUT)0.0f;



OUT.vertPos = IN.vertPos;

OUT.UVCoord = IN.UVCoord;



return OUT;

}



static const float focus = LinearDepth(float2(0.5, 0.5));



#define precalc(x,y,z) float3(x,y,z)

#define M 60

static const float3 taps[M] =

{

precalc( -0.0000, -1.0000, 1.0000 ),

precalc( -0.2158, -0.8763, 0.9070 ),

precalc( 0.2170, -0.8750, 0.9065 ),

precalc( -0.4325, -0.7509, 0.8670 ),

precalc( 0.4340, -0.7500, 0.8670 ),

precalc( -0.0000, -0.7500, 1.0000 ),

precalc( -0.2160, -0.6259, 0.8851 ),

precalc( -0.6493, -0.6254, 0.9065 ),

precalc( 0.6510, -0.6250, 0.9070 ),

precalc( 0.2170, -0.6250, 0.8847 ),

precalc( -0.4328, -0.5004, 0.8847 ),

precalc( -0.0000, -0.5000, 1.0000 ),

precalc( 0.8660, -0.5000, 1.0000 ),

precalc( -0.8660, -0.5000, 1.0000 ),

precalc( 0.4340, -0.5000, 0.8851 ),

precalc( -0.2163, -0.3754, 0.8670 ),

precalc( 0.2170, -0.3750, 0.8670 ),

precalc( 0.6495, -0.3750, 1.0000 ),

precalc( -0.6495, -0.3750, 1.0000 ),

precalc( -0.8668, -0.2513, 0.9070 ),

precalc( 0.4330, -0.2500, 1.0000 ),

precalc( -0.0000, -0.2500, 1.0000 ),

precalc( -0.4330, -0.2500, 1.0000 ),

precalc( 0.8663, -0.2496, 0.9065 ),

precalc( -0.6500, -0.1259, 0.8851 ),

precalc( 0.2165, -0.1250, 1.0000 ),

precalc( -0.2165, -0.1250, 1.0000 ),

precalc( 0.6498, -0.1246, 0.8847 ),

precalc( -0.8665, -0.0009, 0.8670 ),

precalc( -0.4333, -0.0004, 0.8670 ),

precalc( 0.4333, 0.0004, 0.8670 ),

precalc( 0.8665, 0.0009, 0.8670 ),

precalc( -0.6498, 0.1246, 0.8847 ),

precalc( -0.2165, 0.1250, 1.0000 ),

precalc( 0.2165, 0.1250, 1.0000 ),

precalc( 0.6500, 0.1259, 0.8851 ),

precalc( -0.8663, 0.2496, 0.9065 ),

precalc( 0.0000, 0.2500, 1.0000 ),

precalc( -0.4330, 0.2500, 1.0000 ),

precalc( 0.4330, 0.2500, 1.0000 ),

precalc( 0.8668, 0.2513, 0.9070 ),

precalc( -0.6495, 0.3750, 1.0000 ),

precalc( -0.2170, 0.3750, 0.8670 ),

precalc( 0.6495, 0.3750, 1.0000 ),

precalc( 0.2163, 0.3754, 0.8670 ),

precalc( 0.0000, 0.5000, 1.0000 ),

precalc( -0.8660, 0.5000, 1.0000 ),

precalc( -0.4340, 0.5000, 0.8851 ),

precalc( 0.8660, 0.5000, 1.0000 ),

precalc( 0.4328, 0.5004, 0.8847 ),

precalc( -0.6510, 0.6250, 0.9070 ),

precalc( -0.2170, 0.6250, 0.8847 ),

precalc( 0.6493, 0.6254, 0.9065 ),

precalc( 0.2160, 0.6259, 0.8851 ),

precalc( -0.4340, 0.7500, 0.8670 ),

precalc( 0.0000, 0.7500, 1.0000 ),

precalc( 0.4325, 0.7509, 0.8670 ),

precalc( -0.2170, 0.8750, 0.9065 ),

precalc( 0.2158, 0.8763, 0.9070 ),

precalc( 0.0000, 1.0000, 1.0000 ),

};



static const float k = 0.00001;



/* does a poor job optimizing this way */

#define lodm 0.0 // 0.0

#define lodw 1.0 // 1.0 / (1.0 + lodm * lodm * 0.5)

#define lod 0.0 // clamp(lodm * c / R, 0.0, lodm)



float4 DepthOfField(float2 tex : TEXCOORD0) : COLOR0 {

float depth = LinearDepth(tex);

float s = focus * drangeZ;

float z = depth * drangeZ;

float weapon = 1;



float fpf = clamp(1 / s + fr, fp, fp + fpa);

float c = base_blur_radius * 0.009 * (fr - fpf + 1 / z) / fr / k;

c = sign(z - s) * min(abs©, R);



#ifndef WEAPONBLUR

weapon = smoothstep(weaponblur_cutoff - 0.05, weaponblur_cutoff, z);

c *= weapon;

#endif



#ifdef TEST_MODE

return abs©;

#else

return float4(tex2D(PassSamplerL, tex).rgb, store(c, R));

#endif

}



float4 SmartBlur(float2 tex : TEXCOORD0) : COLOR0 {

float4 color = tex2D(PassSamplerL, tex);

const float c = load(color.a, R);

float weight = (1 / (c * c + 1)) * GetLuminance(color.rgb + 0.01);



weight = max(0, weight) * lodw;

#ifdef EDGEWEIGHTING

weight *= 0.25;

#endif



float2 curvature = 0.0;

float modifier = 1.0;

float chroma = 1.0;



#if (ASTIGMATISM >= 1) || (ABERRATION >= 1)

curvature = (tex - 0.5) * float2(1.0, raspect);

#endif

#if (ASTIGMATISM >= 1)

modifier = pow(1.0 + dot(3.0 * curvature, 3.0 * curvature), 0.5);

#endif

#if (ABERRATION >= 1)

chroma = pow(1.0 + dot(1.5 * curvature, 1.5 * curvature), 1.0);

#endif



color.rgb *= weight;

float amount = weight;



[unroll]

for (int i = 0; i < M; i++) {

const float3 dir = taps[i];

const float len = length(dir.xy) * abs©;



#if (ASTIGMATISM >= 2) || (ABERRATION >= 2)

curvature = (tex + rcpres * c * dir.xy - 0.5) * float2(1.0, raspect);

#endif

#if (ASTIGMATISM >= 2)

modifier = pow(1.0 + dot(3.0 * curvature, 3.0 * curvature), 0.5);

#endif

#if (ABERRATION >= 2)

chroma = pow(1.0 + dot(1.5 * curvature, 1.5 * curvature), 1.0);

#endif



float2 s_tex = tex + rcpres * c * modifier * dir.xy;

float4 s_color = tex2Dlod(PassSamplerL, float4(s_tex, 0, 0));

float s_c = abs(load(s_color.a, R)) * dir.z;



/* TODO: alternate implementation:

* weight the colors against a shifted smoothstep per channel

* then we don't need read more samples

*

* |bokeh range|

* _____

* __|_/ \___|__ r

* _____

* __|__/ \__|__ g

* _____

* __|___/ \_|__ b

*/

#if (ABERRATION >= 1)

float2 s_tex_r = tex + rcpres * c * modifier * dir.xy * float2(chroma, 1.0);

float2 s_tex_g = tex + rcpres * c * modifier * dir.xy * float2(1.0 , 1.0);

float2 s_tex_b = tex + rcpres * c * modifier * dir.xy * float2(1.0, chroma);



s_color.r = tex2Dlod(PassSamplerL, float4(s_tex_r, 0, lod)).r;

s_color.g = tex2Dlod(PassSamplerL, float4(s_tex_g, 0, lod)).g;

s_color.b = tex2Dlod(PassSamplerL, float4(s_tex_b, 0, lod)).b;

#endif



// if (c < 0) s_c = max(abs©, s_c);

s_c = max( -c , s_c);



weight = (1 / (s_c * s_c + 1)) * GetLuminance(s_color.rgb + 0.01);

weight *= saturate(1 - smoothstep(s_c, s_c * 1.1, len));



#ifdef EDGEWEIGHTING

weight *= saturate(0.25 + 0.75 * pow(len / (s_c), 2));

#endif



/* weight is positive [0,inf]*[0,1]*[0,1] */

color.rgb += s_color.rgb * weight;

amount += weight;

}



#ifdef SMOOTHBLUR

return float4(color.rgb / amount, color.a);

#endif



return float4(color.rgb / amount, 1);

}



float4 HorizontalBlur(float2 tex : TEXCOORD0) : COLOR0 {



float4 color = tex2D(PassSamplerL, tex);

float c = load(color.a, R);



float scale = c / 8; color.rgb *= 6;



color.rgb += tex2Dlod(PassSamplerL, float4(tex.x - (rcpres.x ) * scale, tex.y, 0, lod)).rgb * 4;

color.rgb += tex2Dlod(PassSamplerL, float4(tex.x + (rcpres.x ) * scale, tex.y, 0, lod)).rgb * 4;



color.rgb += tex2Dlod(PassSamplerL, float4(tex.x - (rcpres.x * 2) * scale, tex.y, 0, lod)).rgb * 1;

color.rgb += tex2Dlod(PassSamplerL, float4(tex.x + (rcpres.x * 2) * scale, tex.y, 0, lod)).rgb * 1;



return float4(color.rgb / 16, color.a);

}



float4 VerticalBlur(float2 tex : TEXCOORD0) : COLOR0 {



float4 color = tex2D(PassSamplerL, tex);

float c = load(color.a, R);



float scale = c / 8; color.rgb *= 6;



color.rgb += tex2Dlod(PassSamplerL, float4(tex.x, tex.y - (rcpres.y ) * scale, 0, lod)).rgb * 4;

color.rgb += tex2Dlod(PassSamplerL, float4(tex.x, tex.y + (rcpres.y ) * scale, 0, lod)).rgb * 4;



color.rgb += tex2Dlod(PassSamplerL, float4(tex.x, tex.y - (rcpres.y * 2) * scale, 0, lod)).rgb * 1;

color.rgb += tex2Dlod(PassSamplerL, float4(tex.x, tex.y + (rcpres.y * 2) * scale, 0, lod)).rgb * 1;



return float4(color.rgb / 16, 1);

}





technique main

<

int group = EFFECTGROUP_POST;

int fxclass = EFFECTCLASS_DOF;

int conditions = EFFECTCOND_ZBUFFER | EFFECTCOND_ACHANNEL

#if (ABERRATION >= 1)

| EFFECTCOND_MIPMAPS

#endif

;

>

{

pass {

VertexShader = compile vs_3_0 FrameVS();

PixelShader = compile ps_3_0 DepthOfField();

}



#ifndef TEST_MODE

pass {

VertexShader = compile vs_3_0 FrameVS();

PixelShader = compile ps_3_0 SmartBlur();

}

#endif



#ifdef SMOOTHBLUR

pass {

VertexShader = compile vs_3_0 FrameVS();

PixelShader = compile ps_3_0 HorizontalBlur();

}



pass {

VertexShader = compile vs_3_0 FrameVS();

PixelShader = compile ps_3_0 VerticalBlur();

}

#endif

}


There's also Pseudo_Bokeh_DoF.fx and Shaped_Bokeh_DoF.fx. Surely they must be included. Hmmm, there are many other fx files: should they be posted as a separate download?

Ah- oops, no, as the OBGE fx component installs SMAA which Alenet does not use. Perhaps they do not all require SMAA?

User avatar
noa zarfati
 
Posts: 3410
Joined: Sun Apr 15, 2007 5:54 am

Post » Fri May 20, 2016 12:37 am

Wow. This is great stuff. I'm glad I could open a discussion about this.





Didn't use OR's recommended ini settings since I was testing playability and CTDs. Will edit those.


Good tip about the memory purger tho!





Very interesting. Will be happy to test out your revisions. I think OR has room for improvement through modification.





Yes. I'm wondering about this myself. Could you post on pastebin or something like that so code isn't interfered?

User avatar
Roberta Obrien
 
Posts: 3499
Joined: Tue Oct 23, 2007 1:43 pm

Post » Thu May 19, 2016 12:37 pm

Ok. Here's some screens: http://imgur.com/a/IkNjD



I tried out your settings but found them to be a little too much. Went back to default OR and bumped up HDR and Coloring ini settings.



Still tinkering but thought I'd share progress. Would love for people to share any modified OR settings they have :)



Starting to get there: http://imgur.com/Kd8uqnj



And just to be sure:



Nobody has been able to figure out how to get Reshade + ENBoost to work together?

User avatar
loste juliana
 
Posts: 3417
Joined: Sun Mar 18, 2007 7:37 pm

Post » Thu May 19, 2016 8:26 pm

I use ENBoost with OR purger without problems. So it's not strictly mandatory.

User avatar
Jack Bryan
 
Posts: 3449
Joined: Wed May 16, 2007 2:31 am

Post » Fri May 20, 2016 2:39 am

I might be getting somewhere using sweetfx and ENBoost following this skyrim mod's instructions and sweetfx preset: http://www.nexusmods.com/skyrim/mods/52718



I tried different names for dll before this but this time seemed to work.



The game didn't crash. ENBoost loaded. And I got an overall different color palette. Going to experiment and report back.

User avatar
Matt Fletcher
 
Posts: 3355
Joined: Mon Sep 24, 2007 3:48 am

Post » Thu May 19, 2016 7:03 pm

SUCCESS!



I now have ENBoost and Sweetfx running together.



It's great. Sweetfx adds a lot more vibrancy and makes the image pop more. It's not ENB quality unfortunately but together with OR, it comes close. And with ENBoost I can almost feel where the game used to crash but now it just plows through.



The only problem is that Sweetfx affects the menu as well, so the text and backgrounds are blown out color wise. I am not sure how to fix.



See here: http://imgur.com/a/xTtf0

User avatar
Nuno Castro
 
Posts: 3414
Joined: Sat Oct 13, 2007 1:40 am

Post » Thu May 19, 2016 10:17 pm


Oops - sorry about that. I've updated my post to remove the silly emoticons. The code should work now.





Yeah the bloom, coloring and flare settings will look very extreme without the modified tonemapping algorithm - but obviously you couldn't use that because there were smileys where there shouldn't have been! :facepalm:

User avatar
emma sweeney
 
Posts: 3396
Joined: Fri Sep 22, 2006 7:02 pm

Post » Thu May 19, 2016 1:39 pm


Thanks for the tip about using Sweetfx and Enboost, everything looks lovely :). I'm using the Dark Darn UI mod and the Menus look really nice with it. http://www.nexusmods.com/oblivion/mods/11280/?

User avatar
Sun of Sammy
 
Posts: 3442
Joined: Mon Oct 22, 2007 3:38 pm

Post » Thu May 19, 2016 6:01 pm


Please note that it only works with Sweetfx 1.5



Have yet to be able to figure out Reshade/Sweetfx 2.0 without crash

User avatar
Amanda savory
 
Posts: 3332
Joined: Mon Nov 27, 2006 10:37 am

Post » Thu May 19, 2016 12:45 pm

Ok. Maybe you guys know...



I tried asking on Reshade and ENB forums but nobody has helped so far. I would like to figure out how to make Reshade work with ENBoost. Reshade offers more options and control over SweetFX 1.5 so I'm hoping I can figure this out.



ENBoost wrapper uses a d3d9.dll and so does Reshade. I tried renaming Reshade dll but it didn't work.



So I tried ENBoost injector with proxy library enabled for Reshade d3d9.dll. Game crashes. What's interesting is that you can use Reshade + ENB but not ENBoost + Reshade??



Was hoping someone knew how to avoid this or could explain to me. Please let me know.


UPDATE:


Installing Reshade manually and renaming d3d9.dll to dxgi.dll seems to have worked.
User avatar
Michelle Serenity Boss
 
Posts: 3341
Joined: Tue Oct 17, 2006 10:49 am

Post » Thu May 19, 2016 10:37 pm

This is a difficult decision.



Do I live with the crashes and use ENB for all it's glory?


Or do I accept ENBoost that "might" add stability but not prevent 100% crashes?



http://imgur.com/a/fxcc9



What do y'all think?

User avatar
dean Cutler
 
Posts: 3411
Joined: Wed Jul 18, 2007 7:29 am

Post » Thu May 19, 2016 9:52 pm

Honestly, I prefer the version without the ENB. And especially since it's causing crashes I would totally get rid of it

User avatar
Teghan Harris
 
Posts: 3370
Joined: Mon Mar 05, 2007 1:31 pm

Next

Return to IV - Oblivion