自室のスペースの関係等でノートPCでやむ終えずスカイリムをやっている紳士も多いはず。
Geforceが搭載されている近年のゲーミングノートはNVIDIA Optimusという省エネ機能が付いているが、これが災いして通常のWrapper Versionを使用すると競合してしまい内蔵のIntel HDグラフィックスしか検出されない問題がある。
ただ、NvidiaのコントロールパネルからSkyrimを高パフォーマンス設定にすればIntel HDグラフィックスで検出されても内部的にGeforceグラフィックスで動作させる事が可能だがENBの一部のエフェクト(Dof、SSAO、Lens、サングレア等)が機能しない問題がある。

この問題の回避策はInjector Versionを使用する事によってGeforceグラフィックスその物を検出させる事ができるのでENBの機能をデスクトップPC同様フルに使う事が出来るが、今度はSMAAやSweetFX等の外部DLLが機能しない問題がある。

例えば私が製作したDiamond ENBはENBの他にSweetFXを駆使して独自に色調を調整して肌のエロス感を引き立てているが、このSweetFXが使えないと薄っぺらい色合しか出ないため非常に物足りないENBになってしまう。
Wrapper VersionであればSweetFXも同時に使用できるが、上記で説明した通りOptimus環境ではENBの一部のエフェクトが機能しないのでノートPCの場合はどちらかの機能を犠牲にするしかない。
こういった原因はOptimusが使用するd3d9.dllとENBが使用するd3d9.dllが競合してしまうためなので、ENB側のd3d9.dllをリネームしてTESV.exeをバイナリエディタでリネームしたd3d9.dllを読込む様に改造をすれば動作するという報告を見つけた。

しかし実際にやってみるとTESV.exeを改変した時点でSteamに不正な実行ファイルとして検出(ハッシュ値チェック)するためかエラーを吐いて起動すらさせてくれない。
まあ、Steamの読込みを回避する改造をすればいけるかも知れないが、今度はTESV.exeを改変した事によってアドレス空間も変わってしまうので恐らくSKSEとその関連のプラグインが機能しなくなる問題が出るだろう。

ちなみに「NVIDIA OPTIMUS D3D9 DLL FIX」というd3d9.dllの競合を回避するパッチが公開されているが、2013年で更新が止まっているせいか最近のENB(v0.2.xx~v0.3.xx)では動作しなかった。
せっかく高いお金を出して買ったゲーミングノートなのにデスクトップのようにENBをフルに利用する事は不可能なのかとしぶしぶ諦めかけていたが、ENBの機能をデスクトップ同様フル動作させつつSweetFX等の外部DLLも同時に使用できる方法をついに見つけた。

 

例:Diamond ENB v1.5をNVIDIA Optimus環境で動作させる方法
  1. Diamond ENB内のファイルをSkyrimフォルダへ全てコピーしその後「Injector Version」のENB本体を導入する
  2. Skyrimフォルダ内の「sweetfx_d3d9.dll」を「d3d9orig.dll」へリネームする
  3. NVIDIA OPTIMUS D3D9 DLL FIX」をDLして「d3d9.dll」をSkyrimフォルダへコピーする

上記の手順が完了したらSkyrimフォルダ内の「ENBInjector.exe」を起動後にSkyrimを起動すればGeforceグラフィックスが検出され同時にSweetFXが適用されたENBが作動しているはずである。

SweetFXが実際に適用されているかはScrollLockキーを押すことで確認ができる。
(ScrollLockキーがない場合はinjector.iniから変更)

Injector Versionを使ってもゲーム起動時にIntel HDグラフィックスが検出される場合はNvidiaコントロールパネルから「3D 設定の管理」→「プログラム設定」でSkyrim(TESV.exe)が「高パフォーマンス NVIDIA プロセッサ」になっているかを確認。

ちなみにNVIDIA OPTIMUS D3D9 DLL FIXは初期のENBであればそのまま導入するだけでWrapper Versionが動作していたようだが、現在主流のv0.2xx~v0.3xxのENBでは動作しない。
しかしInjector Versionを使うことで現行のENBでもNVIDIA OPTIMUS D3D9 DLL FIXが使える事を今回発見した。
ただd3d9.dllの競合はどうしても避けられないのでENBInjector.exeを毎回起動する必要はあるが、SKSEとENBInjectorを同時に起動させるバッチファイルを作ればWrapper Versionと同じ感覚で使えるので問題ない。

Optimus環境で現行のENBとSweetFXを同時に使う方法がどこにもなかったので少しでもノートPCユーザーの手助けになれば。