Geforce GTX670のドライバをGeForce 334.89 WHQL driversに更新したところ以前のエントリで紹介したRise of FlightのHelix Modの動作がおかしくなりました。
マウスカーソルやメニューの一部などが奥行きが適用されたりされなかったりを一秒間に数回切り替わるようになってしまいました。
ShaderOverride\VertexShaders内のファイルを出し入れして調べてみたところD24C0281.txtで変更が行われている項目の表示がおかしくなっていました。
D24C0281.txtの中を覗いてみたところ前半で座標の取得を行って、後半の
if_eq r14.x, c220.w
texldl r1, c220.z, s0// retrieve values from stereo texture
mul r1.x, r1.x, -c220.x// multiplicity Separation * c220.x
add r3.x, r3.x, -r1.x// correct output vertex position
endif
mov o0, r3 // mov from temprary register to output
mov o3, v1 // ocolor<0,1,2,3>
mov o4, v2 // ofactor<0,1,2,3>
が座標の適用を行っています。
適用されるされないなどの条件分岐がおこりえるのはif文のあるこの部分だけですのでここを色々弄ってみたところ、if文をコメントアウトした
//if_eq r14.x, c220.w
texldl r1, c220.z, s0// retrieve values from stereo texture
mul r1.x, r1.x, -c220.x// multiplicity Separation * c220.x
add r3.x, r3.x, -r1.x// correct output vertex position
//endif
mov o0, r3 // mov from temprary register to output
mov o3, v1 // ocolor<0,1,2,3>
mov o4, v2 // ofactor<0,1,2,3>
で正常に表示されるようになりました。
普通に考えたらありえない修正ではあるのですが、if文の中と外で変更が適用される項目に重複がないのと、同じ方が作られてるIL-2 Sturmovik: Battle of Stalingrad用のHelix Modではif文を使わず変更をまとめて適用しているので、元々if文は必要なかったのかもしれません。