Resident Evil 7
  2 / 23    
I think real survival horror games are more interested in you being disturbed and feeling helpless than fun. RE series became a snoozefest when they started giving you too much ammo....
I think real survival horror games are more interested in you being disturbed and feeling helpless than fun.
RE series became a snoozefest when they started giving you too much ammo....

i7-4790K CPU 4.8Ghz stable overclock.
16 GB RAM Corsair
ASUS Turbo 2080TI
Samsung SSD 840Pro
ASUS Z97-WS3D
Surround ASUS Rog Swift PG278Q(R), 2x PG278Q (yes it works)
Obutto R3volution.
Windows 10 pro 64x (Windows 7 Dual boot)

#16
Posted 12/20/2016 05:30 AM   
[quote="necropants"]I think real survival horror games are more interested in you being disturbed and feeling helpless than fun. RE series became a snoozefest when they started giving you too much ammo....[/quote] I think being scared and feeling helpless IN GAMES is fun but is no fun when you can´t do nothing but escape, it has nothing to do with REALITY.
necropants said:I think real survival horror games are more interested in you being disturbed and feeling helpless than fun.
RE series became a snoozefest when they started giving you too much ammo....


I think being scared and feeling helpless IN GAMES is fun but is no fun when you can´t do nothing but escape,
it has nothing to do with REALITY.

CoreX9 Custom watercooling (valkswagen polo radiator)
I7-8700k@4.7
TitanX pascal with shitty stock cooler
Win7/10
Video: Passive 3D fullhd 3D@60hz/channel Denon x1200w /Hc5 x 2 Geobox501->eeColorBoxes->polarizers/omega filttersCustom made silverscreen
Ocupation: Enterprenior.Painting/surfacing/constructions
Interests/skills:
3D gaming,3D movies, 3D printing,Drums, Bass and guitar.
Suomi - FINLAND - perkele

#17
Posted 12/20/2016 11:35 AM   
Exactly the reason why "Outlast"-ish games don't appeal to me!
Exactly the reason why "Outlast"-ish games don't appeal to me!

#18
Posted 12/20/2016 12:44 PM   
no surround support...:_____(
no surround support...:_____(

i7 4970k@4.5Ghz, SLI GTX1080Ti Aorus Gigabyte Xtreme, 16GB G Skill 2400hrz, 3*PG258Q in 3D surround.

#19
Posted 12/20/2016 02:54 PM   
Pretty surprised with amazing performance of it. Tested on 4k / .9 screen resolution all settings maxed except I turned off nvidias ridiculous HBA0+. Constant 60+ fps on a 1080 gtx. Its not really talked about since they havent really discussed game past intro as far as I know [u]but there are guns.[/u] TBH, I dont know about surround in this title regardless. Its supposed to be claustrophobic. I know some people are bound to mess with FOV because its PC but meh. ALOT of the game your holding a flashlight and the game is only visibile in that small light spectrum. It has everything I want in a PC title as far as optimization/options/demo etc. Im just a bit worried because capcom has been going downhill. God knows they can pull something ridiculous like little content but required season pass. Then again.... cd key sites are selling it dirt cheap.
Pretty surprised with amazing performance of it. Tested on 4k / .9 screen resolution all settings maxed except I turned off nvidias ridiculous HBA0+. Constant 60+ fps on a 1080 gtx.

Its not really talked about since they havent really discussed game past intro as far as I know but there are guns.

TBH, I dont know about surround in this title regardless. Its supposed to be claustrophobic. I know some people are bound to mess with FOV because its PC but meh. ALOT of the game your holding a flashlight and the game is only visibile in that small light spectrum.

It has everything I want in a PC title as far as optimization/options/demo etc. Im just a bit worried because capcom has been going downhill. God knows they can pull something ridiculous like little content but required season pass.
Then again.... cd key sites are selling it dirt cheap.

Co-founder/Web host of helixmod.blog.com

Donations for web hosting @ paypal -eqzitara@yahoo.com
or
https://www.patreon.com/user?u=791918

#20
Posted 12/21/2016 03:16 AM   
I have partially downloaded the demo. I'll play it tonight. I saw the gamegpu benchmarks. It seems that 60fps in 3D will be impossible for me at 1440p with max settings. But I'll try to tweak the settings.
I have partially downloaded the demo. I'll play it tonight.

I saw the gamegpu benchmarks. It seems that 60fps in 3D will be impossible for me at 1440p with max settings. But I'll try to tweak the settings.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: MSI GeForce RTX 2080Ti Gaming X Trio
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#21
Posted 12/21/2016 07:58 AM   
Its kind of funny how different things are a dealbraker for each one of us. Like for example i don't think 60fps is that mandatory, id rather bump up all graphics and play at 45 but i can't stand active shuttering and Any lag between left and right image no matter what. Even jerky framerate at perfect synch is more comfortable. but i ques that just indicates how different all of our Brains are. I tried bumping the resolution scale to 2x, im using fullhd and the framerate just died. Don't know did it have an affect i have 3D vision Turned on and i just Turned it off with keyboard commands (is it really off?) Or maby the i52500k@4,5ghz and gtx980ti aint just cutting it to render 4K Don't know why the game looked way too dark after adjusting brightness according to test images ingame. Sometimes i think games use different colorspace as same setting in display side are way way off looking good.
Its kind of funny how different things are a dealbraker for each one of us. Like for example i don't think 60fps is that mandatory, id rather bump up all graphics and play at 45 but i can't stand active shuttering and Any lag between left and right image no matter what. Even jerky framerate at perfect synch is more comfortable. but i ques that just indicates how different all of our Brains are.

I tried bumping the resolution scale to 2x, im using fullhd and the framerate just died.
Don't know did it have an affect i have 3D vision Turned on and i just Turned it off with keyboard commands (is it really off?)
Or maby the i52500k@4,5ghz and gtx980ti aint just cutting it to render 4K

Don't know why the game looked way too dark after adjusting brightness according to test images ingame.
Sometimes i think games use different colorspace as same setting in display side are way way off looking good.

CoreX9 Custom watercooling (valkswagen polo radiator)
I7-8700k@4.7
TitanX pascal with shitty stock cooler
Win7/10
Video: Passive 3D fullhd 3D@60hz/channel Denon x1200w /Hc5 x 2 Geobox501->eeColorBoxes->polarizers/omega filttersCustom made silverscreen
Ocupation: Enterprenior.Painting/surfacing/constructions
Interests/skills:
3D gaming,3D movies, 3D printing,Drums, Bass and guitar.
Suomi - FINLAND - perkele

#22
Posted 12/21/2016 12:37 PM   
Is anyone find a good 3dCM profile? I tried AC Unity, 3d was ok but we loose frequently 3d (like in AC Unity) whatever AA is used...
Is anyone find a good 3dCM profile?
I tried AC Unity, 3d was ok but we loose frequently 3d (like in AC Unity) whatever AA is used...

http://photos.3dvisionlive.com/chtiblue/album/530b52d4cb85770d6e000049/3Dvision with 55" LG OLED EG920 interlieved 3D (3840x2160) overide mode, GTX 2080 Ti XC Ultra EVGA, core i5 @4.3GHz, 16Gb@2130, windows 7&10 64bit, Dolby Atmos 5.1.4 Marantz 6010 AVR

#23
Posted 12/21/2016 12:53 PM   
Played the demo like 4 times to get all the endings. While I find the game interesting, this is NOT Resident Evil for me... It can be a good horror/scary game on it's own but there isn't it anything Resident Evil inside. (At least not in the Demo) Actually reminds me more of Outlast than RE. Anyway, I played it in CM mode with a flag that randomly switches from 2D to 3D on different angles. Geometry 3D is very very busted - to a degree that I'm not sure it can be fixable (Whole lighting is missing in one eye for example). For CM I used my flag from AC: Syndicate: [code] Setting ID_0x709adada = 0x07F5854A InternalSettingFlag=V0 [/code] You need a full 3D Vision profile for 3D Vision to kick in btw;) Something like: [code] Profile "Resident Evil 7 / Biohazard 7" ShowOn GeForce ProfileType Application Executable "re7trial.exe" Setting ID_0x0015f512 = 0x53855200 Setting ID_0x1033cec1 = 0x00000003 Setting ID_0x1033dcd2 = 0x00000004 Setting ID_0x1034cb89 = 0x00000000 Setting ID_0x10ecdb82 = 0x00000005 Setting ID_0x701eb457 = 0x2241ab21 InternalSettingFlag=V0 SettingString ID_0x7049c7ec = "웭ꑢ쫐₰" InternalSettingFlag=V0 SettingString ID_0x7051e5f5 = "籭鸙" InternalSettingFlag=V0 Setting ID_0x708db8c5 = 0x216e14bd InternalSettingFlag=V0 Setting ID_0x709a1ddf = 0x00000000 InternalSettingFlag=V0 SettingString ID_0x70b5603f = "榻鳈⏹ꢗ" InternalSettingFlag=V0 Setting ID_0x70edb381 = 0x24208b6c InternalSettingFlag=V0 Setting ID_0x709adada = 0x07F5854A InternalSettingFlag=V0 EndProfile [/code]
Played the demo like 4 times to get all the endings.
While I find the game interesting, this is NOT Resident Evil for me... It can be a good horror/scary game on it's own but there isn't it anything Resident Evil inside. (At least not in the Demo)
Actually reminds me more of Outlast than RE.

Anyway, I played it in CM mode with a flag that randomly switches from 2D to 3D on different angles. Geometry 3D is very very busted - to a degree that I'm not sure it can be fixable (Whole lighting is missing in one eye for example).
For CM I used my flag from AC: Syndicate:
Setting ID_0x709adada = 0x07F5854A InternalSettingFlag=V0


You need a full 3D Vision profile for 3D Vision to kick in btw;) Something like:

Profile "Resident Evil 7 / Biohazard 7"
ShowOn GeForce
ProfileType Application
Executable "re7trial.exe"
Setting ID_0x0015f512 = 0x53855200
Setting ID_0x1033cec1 = 0x00000003
Setting ID_0x1033dcd2 = 0x00000004
Setting ID_0x1034cb89 = 0x00000000
Setting ID_0x10ecdb82 = 0x00000005
Setting ID_0x701eb457 = 0x2241ab21 InternalSettingFlag=V0
SettingString ID_0x7049c7ec = "웭ꑢ쫐₰" InternalSettingFlag=V0
SettingString ID_0x7051e5f5 = "籭鸙" InternalSettingFlag=V0
Setting ID_0x708db8c5 = 0x216e14bd InternalSettingFlag=V0
Setting ID_0x709a1ddf = 0x00000000 InternalSettingFlag=V0
SettingString ID_0x70b5603f = "榻鳈⏹ꢗ" InternalSettingFlag=V0
Setting ID_0x70edb381 = 0x24208b6c InternalSettingFlag=V0
Setting ID_0x709adada = 0x07F5854A InternalSettingFlag=V0
EndProfile

1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc


My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com

(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)

#24
Posted 12/21/2016 05:17 PM   
thanx for the info helifax
thanx for the info helifax

http://photos.3dvisionlive.com/chtiblue/album/530b52d4cb85770d6e000049/3Dvision with 55" LG OLED EG920 interlieved 3D (3840x2160) overide mode, GTX 2080 Ti XC Ultra EVGA, core i5 @4.3GHz, 16Gb@2130, windows 7&10 64bit, Dolby Atmos 5.1.4 Marantz 6010 AVR

#25
Posted 12/21/2016 05:22 PM   
Well, that was short. I guess most of the size was textures. At 1440p in 3D, I went from 33-40fps to solid 60fps just by changing HBAO+ to SSAO (setting shadows to High instead of Very High helped a bit too). About 3D. There is a shader (that controls light exposure or something like that) that zooms in the image a bit, screwing with the native resolution (making it blurrier than it should be). The shadows shader (I think it's that) has ten examples of "needs manual fix": [code] // ---- Created with 3Dmigoto v1.2.51 on Wed Dec 21 19:47:21 2016 cbuffer SceneInfo : register(b0) { row_major float4x4 viewProjMat : packoffset(c0); row_major float4x4 viewMat : packoffset(c4); row_major float4x4 viewInvMat : packoffset(c8); row_major float4x4 projMat : packoffset(c12); row_major float4x4 projInvMat : packoffset(c16); row_major float4x4 viewProjInvMat : packoffset(c20); row_major float4x4 prevViewProjMat : packoffset(c24); float3 prevCameraPos : packoffset(c28); float cameraNearPlane : packoffset(c28.w); float3 prevCameraDir : packoffset(c29); float cameraFarPlane : packoffset(c29.w); float4 viewFrustum[6] : packoffset(c30); float3 ZToLinear : packoffset(c36); float subdivisionLevel : packoffset(c36.w); float2 screenSize : packoffset(c37); float2 screenInverseSize : packoffset(c37.z); } SamplerState PointWrap_s : register(s0); SamplerState BilinearWrap_s : register(s1); Texture2D<float3> DiffuseBuffer : register(t0); Texture2D<uint> SubSurfaceParam : register(t1); StructuredBuffer<BakedGaussianProfiles> BakedGaussianProfiles : register(t2); // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : SV_Position0, out float3 o0 : SV_Target0) { // Needs manual fix for instruction: // unknown dcl_: dcl_resource_structured t2, 152 float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21; uint4 bitmask, uiDest; float4 fDest; r0.zw = screenInverseSize.xy * v0.xy; r1.xyz = DiffuseBuffer.Sample(PointWrap_s, r0.zw).xyz; r2.xy = (uint2)v0.xy; r2.zw = float2(0,0); r1.w = SubSurfaceParam.Load(r2.xyz).x; r2.x = f16tof32(r1.w); r1.w = (uint)r1.w >> 16; r2.y = cmp((uint)r1.w < 7); // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r3.xyzw, r1.w, l(16), t2.xyzw r3.x = PointWrap[]..swiz; r3.y = PointWrap[]..swiz; r3.z = PointWrap[]..swiz; r3.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r4.xyzw, r1.w, l(32), t2.xyzw r4.x = PointWrap[]..swiz; r4.y = PointWrap[]..swiz; r4.z = PointWrap[]..swiz; r4.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r5.xyzw, r1.w, l(48), t2.xyzw r5.x = PointWrap[]..swiz; r5.y = PointWrap[]..swiz; r5.z = PointWrap[]..swiz; r5.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r6.xyzw, r1.w, l(64), t2.xyzw r6.x = PointWrap[]..swiz; r6.y = PointWrap[]..swiz; r6.z = PointWrap[]..swiz; r6.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r7.xyzw, r1.w, l(80), t2.xyzw r7.x = PointWrap[]..swiz; r7.y = PointWrap[]..swiz; r7.z = PointWrap[]..swiz; r7.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r8.xyzw, r1.w, l(96), t2.xyzw r8.x = PointWrap[]..swiz; r8.y = PointWrap[]..swiz; r8.z = PointWrap[]..swiz; r8.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r9.xyzw, r1.w, l(112), t2.xyzw r9.x = PointWrap[]..swiz; r9.y = PointWrap[]..swiz; r9.z = PointWrap[]..swiz; r9.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r10.xyzw, r1.w, l(128), t2.xyzw r10.x = PointWrap[]..swiz; r10.y = PointWrap[]..swiz; r10.z = PointWrap[]..swiz; r10.w = PointWrap[]..swiz; r2.z = -r2.x * projMat._m23 + projMat._m33; r2.z = projMat._m11 / r2.z; r2.z = screenSize.x * r2.z; r2.z = 0.25 * r2.z; r2.w = r3.w * r2.z; r0.y = r2.w * 2.99999992e-005 + r0.z; r11.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r0.yw).xyz; r2.w = r4.w * r2.z; r0.x = r2.w * 2.99999992e-005 + r0.z; r12.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r0.xw).xyz; r2.w = r5.w * r2.z; r13.z = r2.w * 2.99999992e-005 + r0.z; r13.w = r0.w; r14.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r13.zw).xyz; r2.w = r6.w * r2.z; r13.y = r2.w * 2.99999992e-005 + r0.z; r15.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r13.yw).xyz; r2.w = r7.w * r2.z; r13.x = r2.w * 2.99999992e-005 + r0.z; r16.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r13.xw).xyz; r2.w = r8.w * r2.z; r17.z = r2.w * 2.99999992e-005 + r0.z; r17.w = r13.w; r18.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r17.zw).xyz; r2.w = r9.w * r2.z; r17.y = r2.w * 2.99999992e-005 + r0.z; r19.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r17.yw).xyz; r2.z = r10.w * r2.z; r17.x = r2.z * 2.99999992e-005 + r0.z; r20.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r17.xw).xyz; if (r2.y != 0) { // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r2.yzw, r1.w, l(0), t2.xxyz r2.y = PointWrap[]..swiz; r2.z = PointWrap[]..swiz; r2.w = PointWrap[]..swiz; r0.xyzw = screenSize.xyxy * r0.ywxw; r21.xy = (int2)r0.xy; r21.zw = float2(0,0); r0.x = SubSurfaceParam.Load(r21.xyz).x; r0.y = f16tof32(r0.x); r0.x = (uint)r0.x >> 16; r0.x = cmp((int)r0.x == (int)r1.w); r0.y = r0.y + -r2.x; r0.y = saturate(10 * abs(r0.y)); r0.x = r0.x ? r0.y : 1; r21.xyz = -r11.xyz + r1.xyz; r11.xyz = r0.xxx * r21.xyz + r11.xyz; r3.xyz = r11.xyz * r3.xyz; r3.xyz = max(float3(0,0,0), r3.xyz); r2.yzw = r1.xyz * r2.yzw + r3.xyz; r0.xy = (int2)r0.zw; r0.zw = float2(0,0); r0.x = SubSurfaceParam.Load(r0.xyz).x; r0.y = f16tof32(r0.x); r0.x = (uint)r0.x >> 16; r0.x = cmp((int)r0.x == (int)r1.w); r0.y = r0.y + -r2.x; r0.y = saturate(10 * abs(r0.y)); r0.x = r0.x ? r0.y : 1; r0.yzw = -r12.xyz + r1.xyz; r0.xyz = r0.xxx * r0.yzw + r12.xyz; r0.xyz = r0.xyz * r4.xyz; r0.xyz = max(float3(0,0,0), r0.xyz); r0.xyz = r2.yzw + r0.xyz; r3.xyzw = screenSize.xyxy * r13.zwyw; r4.xy = (int2)r3.xy; r4.zw = float2(0,0); r0.w = SubSurfaceParam.Load(r4.xyz).x; r2.y = f16tof32(r0.w); r0.w = (uint)r0.w >> 16; r0.w = cmp((int)r0.w == (int)r1.w); r2.y = r2.y + -r2.x; r2.y = saturate(10 * abs(r2.y)); r0.w = r0.w ? r2.y : 1; r2.yzw = -r14.xyz + r1.xyz; r2.yzw = r0.www * r2.yzw + r14.xyz; r2.yzw = r2.yzw * r5.xyz; r2.yzw = max(float3(0,0,0), r2.yzw); r0.xyz = r2.yzw + r0.xyz; r3.xy = (int2)r3.zw; r3.zw = float2(0,0); r0.w = SubSurfaceParam.Load(r3.xyz).x; r2.y = f16tof32(r0.w); r0.w = (uint)r0.w >> 16; r0.w = cmp((int)r0.w == (int)r1.w); r2.y = r2.y + -r2.x; r2.y = saturate(10 * abs(r2.y)); r0.w = r0.w ? r2.y : 1; r2.yzw = -r15.xyz + r1.xyz; r2.yzw = r0.www * r2.yzw + r15.xyz; r2.yzw = r2.yzw * r6.xyz; r2.yzw = max(float3(0,0,0), r2.yzw); r0.xyz = r2.yzw + r0.xyz; r2.yz = screenSize.xy * r13.xw; r3.xy = (int2)r2.yz; r3.zw = float2(0,0); r0.w = SubSurfaceParam.Load(r3.xyz).x; r2.y = f16tof32(r0.w); r0.w = (uint)r0.w >> 16; r0.w = cmp((int)r0.w == (int)r1.w); r2.y = r2.y + -r2.x; r2.y = saturate(10 * abs(r2.y)); r0.w = r0.w ? r2.y : 1; r2.yzw = -r16.xyz + r1.xyz; r2.yzw = r0.www * r2.yzw + r16.xyz; r2.yzw = r2.yzw * r7.xyz; r2.yzw = max(float3(0,0,0), r2.yzw); r0.xyz = r2.yzw + r0.xyz; r3.xyzw = screenSize.xyxy * r17.zwyw; r4.xy = (int2)r3.xy; r4.zw = float2(0,0); r0.w = SubSurfaceParam.Load(r4.xyz).x; r2.y = f16tof32(r0.w); r0.w = (uint)r0.w >> 16; r0.w = cmp((int)r0.w == (int)r1.w); r2.y = r2.y + -r2.x; r2.y = saturate(10 * abs(r2.y)); r0.w = r0.w ? r2.y : 1; r2.yzw = -r18.xyz + r1.xyz; r2.yzw = r0.www * r2.yzw + r18.xyz; r2.yzw = r2.yzw * r8.xyz; r2.yzw = max(float3(0,0,0), r2.yzw); r0.xyz = r2.yzw + r0.xyz; r3.xy = (int2)r3.zw; r3.zw = float2(0,0); r0.w = SubSurfaceParam.Load(r3.xyz).x; r2.y = f16tof32(r0.w); r0.w = (uint)r0.w >> 16; r0.w = cmp((int)r0.w == (int)r1.w); r2.y = r2.y + -r2.x; r2.y = saturate(10 * abs(r2.y)); r0.w = r0.w ? r2.y : 1; r2.yzw = -r19.xyz + r1.xyz; r2.yzw = r0.www * r2.yzw + r19.xyz; r2.yzw = r2.yzw * r9.xyz; r2.yzw = max(float3(0,0,0), r2.yzw); r0.xyz = r2.yzw + r0.xyz; r2.yz = screenSize.xy * r17.xw; r3.xy = (int2)r2.yz; r3.zw = float2(0,0); r0.w = SubSurfaceParam.Load(r3.xyz).x; r2.y = f16tof32(r0.w); r0.w = (uint)r0.w >> 16; r0.w = cmp((int)r0.w == (int)r1.w); r1.w = r2.y + -r2.x; r1.w = saturate(10 * abs(r1.w)); r0.w = r0.w ? r1.w : 1; r2.xyz = -r20.xyz + r1.xyz; r2.xyz = r0.www * r2.xyz + r20.xyz; r2.xyz = r2.xyz * r10.xyz; r2.xyz = max(float3(0,0,0), r2.xyz); o0.xyz = r2.xyz + r0.xyz; } else { o0.xyz = r1.xyz; } return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 // // using 3Dmigoto v1.2.51 on Wed Dec 21 19:47:21 2016 // // // Buffer Definitions: // // cbuffer SceneInfo // { // // row_major float4x4 viewProjMat; // Offset: 0 Size: 64 [unused] // row_major float4x4 viewMat; // Offset: 64 Size: 64 [unused] // row_major float4x4 viewInvMat; // Offset: 128 Size: 64 [unused] // row_major float4x4 projMat; // Offset: 192 Size: 64 // row_major float4x4 projInvMat; // Offset: 256 Size: 64 [unused] // row_major float4x4 viewProjInvMat; // Offset: 320 Size: 64 [unused] // row_major float4x4 prevViewProjMat;// Offset: 384 Size: 64 [unused] // float3 prevCameraPos; // Offset: 448 Size: 12 [unused] // float cameraNearPlane; // Offset: 460 Size: 4 [unused] // float3 prevCameraDir; // Offset: 464 Size: 12 [unused] // float cameraFarPlane; // Offset: 476 Size: 4 [unused] // float4 viewFrustum[6]; // Offset: 480 Size: 96 [unused] // float3 ZToLinear; // Offset: 576 Size: 12 [unused] // float subdivisionLevel; // Offset: 588 Size: 4 [unused] // float2 screenSize; // Offset: 592 Size: 8 // float2 screenInverseSize; // Offset: 600 Size: 8 // // } // // Resource bind info for BakedGaussianProfiles // { // // struct BakedGaussianProfile // { // // float4 mGaussianKernel[9]; // Offset: 0 // float2 mScreenRadiusCoeff; // Offset: 144 // // } $Element; // Offset: 0 Size: 152 // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // PointWrap sampler NA NA 0 1 // BilinearWrap sampler NA NA 1 1 // DiffuseBuffer texture float3 2d 0 1 // SubSurfaceParam texture uint 2d 1 1 // BakedGaussianProfiles texture struct r/o 2 1 // SceneInfo cbuffer NA NA 0 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Position 0 xyzw 0 POS float xy // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyz 0 TARGET float xyz // ps_5_0 dcl_globalFlags refactoringAllowed dcl_constantbuffer cb0[38], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_resource_texture2d (float,float,float,float) t0 dcl_resource_texture2d (uint,uint,uint,uint) t1 dcl_resource_structured t2, 152 dcl_input_ps_siv linear noperspective v0.xy, position dcl_output o0.xyz dcl_temps 22 mul r0.zw, v0.xxxy, cb0[37].zzzw sample_indexable(texture2d)(float,float,float,float) r1.xyz, r0.zwzz, t0.xyzw, s0 ftou r2.xy, v0.xyxx mov r2.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r1.w, r2.xyzw, t1.yzwx f16tof32 r2.x, r1.w ushr r1.w, r1.w, l(16) ult r2.y, r1.w, l(7) ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r3.xyzw, r1.w, l(16), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r4.xyzw, r1.w, l(32), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r5.xyzw, r1.w, l(48), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r6.xyzw, r1.w, l(64), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r7.xyzw, r1.w, l(80), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r8.xyzw, r1.w, l(96), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r9.xyzw, r1.w, l(112), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r10.xyzw, r1.w, l(128), t2.xyzw mad r2.z, -r2.x, cb0[14].w, cb0[15].w div r2.z, cb0[13].y, r2.z mul r2.z, r2.z, cb0[37].x mul r2.z, r2.z, l(0.250000) mul r2.w, r2.z, r3.w mad r0.y, r2.w, l(0.000030), r0.z sample_indexable(texture2d)(float,float,float,float) r11.xyz, r0.ywyy, t0.xyzw, s1 mul r2.w, r2.z, r4.w mad r0.x, r2.w, l(0.000030), r0.z sample_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xwxx, t0.xyzw, s1 mul r2.w, r2.z, r5.w mad r13.z, r2.w, l(0.000030), r0.z mov r13.w, r0.w sample_indexable(texture2d)(float,float,float,float) r14.xyz, r13.zwzz, t0.xyzw, s1 mul r2.w, r2.z, r6.w mad r13.y, r2.w, l(0.000030), r0.z sample_indexable(texture2d)(float,float,float,float) r15.xyz, r13.ywyy, t0.xyzw, s1 mul r2.w, r2.z, r7.w mad r13.x, r2.w, l(0.000030), r0.z sample_indexable(texture2d)(float,float,float,float) r16.xyz, r13.xwxx, t0.xyzw, s1 mul r2.w, r2.z, r8.w mad r17.z, r2.w, l(0.000030), r0.z mov r17.w, r13.w sample_indexable(texture2d)(float,float,float,float) r18.xyz, r17.zwzz, t0.xyzw, s1 mul r2.w, r2.z, r9.w mad r17.y, r2.w, l(0.000030), r0.z sample_indexable(texture2d)(float,float,float,float) r19.xyz, r17.ywyy, t0.xyzw, s1 mul r2.z, r2.z, r10.w mad r17.x, r2.z, l(0.000030), r0.z sample_indexable(texture2d)(float,float,float,float) r20.xyz, r17.xwxx, t0.xyzw, s1 if_nz r2.y ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r2.yzw, r1.w, l(0), t2.xxyz mul r0.xyzw, r0.ywxw, cb0[37].xyxy ftoi r21.xy, r0.xyxx mov r21.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.x, r21.xyzw, t1.xyzw f16tof32 r0.y, r0.x ushr r0.x, r0.x, l(16) ieq r0.x, r0.x, r1.w add r0.y, -r2.x, r0.y mul_sat r0.y, |r0.y|, l(10.000000) movc r0.x, r0.x, r0.y, l(1.000000) add r21.xyz, r1.xyzx, -r11.xyzx mad r11.xyz, r0.xxxx, r21.xyzx, r11.xyzx mul r3.xyz, r3.xyzx, r11.xyzx max r3.xyz, r3.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) mad r2.yzw, r1.xxyz, r2.yyzw, r3.xxyz ftoi r0.xy, r0.zwzz mov r0.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.x, r0.xyzw, t1.xyzw f16tof32 r0.y, r0.x ushr r0.x, r0.x, l(16) ieq r0.x, r0.x, r1.w add r0.y, -r2.x, r0.y mul_sat r0.y, |r0.y|, l(10.000000) movc r0.x, r0.x, r0.y, l(1.000000) add r0.yzw, r1.xxyz, -r12.xxyz mad r0.xyz, r0.xxxx, r0.yzwy, r12.xyzx mul r0.xyz, r4.xyzx, r0.xyzx max r0.xyz, r0.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) add r0.xyz, r0.xyzx, r2.yzwy mul r3.xyzw, r13.zwyw, cb0[37].xyxy ftoi r4.xy, r3.xyxx mov r4.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r4.xyzw, t1.yzwx f16tof32 r2.y, r0.w ushr r0.w, r0.w, l(16) ieq r0.w, r0.w, r1.w add r2.y, -r2.x, r2.y mul_sat r2.y, |r2.y|, l(10.000000) movc r0.w, r0.w, r2.y, l(1.000000) add r2.yzw, r1.xxyz, -r14.xxyz mad r2.yzw, r0.wwww, r2.yyzw, r14.xxyz mul r2.yzw, r5.xxyz, r2.yyzw max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000) add r0.xyz, r0.xyzx, r2.yzwy ftoi r3.xy, r3.zwzz mov r3.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx f16tof32 r2.y, r0.w ushr r0.w, r0.w, l(16) ieq r0.w, r0.w, r1.w add r2.y, -r2.x, r2.y mul_sat r2.y, |r2.y|, l(10.000000) movc r0.w, r0.w, r2.y, l(1.000000) add r2.yzw, r1.xxyz, -r15.xxyz mad r2.yzw, r0.wwww, r2.yyzw, r15.xxyz mul r2.yzw, r6.xxyz, r2.yyzw max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000) add r0.xyz, r0.xyzx, r2.yzwy mul r2.yz, r13.xxwx, cb0[37].xxyx ftoi r3.xy, r2.yzyy mov r3.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx f16tof32 r2.y, r0.w ushr r0.w, r0.w, l(16) ieq r0.w, r0.w, r1.w add r2.y, -r2.x, r2.y mul_sat r2.y, |r2.y|, l(10.000000) movc r0.w, r0.w, r2.y, l(1.000000) add r2.yzw, r1.xxyz, -r16.xxyz mad r2.yzw, r0.wwww, r2.yyzw, r16.xxyz mul r2.yzw, r7.xxyz, r2.yyzw max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000) add r0.xyz, r0.xyzx, r2.yzwy mul r3.xyzw, r17.zwyw, cb0[37].xyxy ftoi r4.xy, r3.xyxx mov r4.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r4.xyzw, t1.yzwx f16tof32 r2.y, r0.w ushr r0.w, r0.w, l(16) ieq r0.w, r0.w, r1.w add r2.y, -r2.x, r2.y mul_sat r2.y, |r2.y|, l(10.000000) movc r0.w, r0.w, r2.y, l(1.000000) add r2.yzw, r1.xxyz, -r18.xxyz mad r2.yzw, r0.wwww, r2.yyzw, r18.xxyz mul r2.yzw, r8.xxyz, r2.yyzw max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000) add r0.xyz, r0.xyzx, r2.yzwy ftoi r3.xy, r3.zwzz mov r3.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx f16tof32 r2.y, r0.w ushr r0.w, r0.w, l(16) ieq r0.w, r0.w, r1.w add r2.y, -r2.x, r2.y mul_sat r2.y, |r2.y|, l(10.000000) movc r0.w, r0.w, r2.y, l(1.000000) add r2.yzw, r1.xxyz, -r19.xxyz mad r2.yzw, r0.wwww, r2.yyzw, r19.xxyz mul r2.yzw, r9.xxyz, r2.yyzw max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000) add r0.xyz, r0.xyzx, r2.yzwy mul r2.yz, r17.xxwx, cb0[37].xxyx ftoi r3.xy, r2.yzyy mov r3.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx f16tof32 r2.y, r0.w ushr r0.w, r0.w, l(16) ieq r0.w, r0.w, r1.w add r1.w, -r2.x, r2.y mul_sat r1.w, |r1.w|, l(10.000000) movc r0.w, r0.w, r1.w, l(1.000000) add r2.xyz, r1.xyzx, -r20.xyzx mad r2.xyz, r0.wwww, r2.xyzx, r20.xyzx mul r2.xyz, r10.xyzx, r2.xyzx max r2.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) add o0.xyz, r0.xyzx, r2.xyzx else mov o0.xyz, r1.xyzx endif ret // Approximately 169 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ [/code] No idea about how to fix that. After that, I played the demo in 2D at 120fps.
Well, that was short. I guess most of the size was textures. At 1440p in 3D, I went from 33-40fps to solid 60fps just by changing HBAO+ to SSAO (setting shadows to High instead of Very High helped a bit too).

About 3D. There is a shader (that controls light exposure or something like that) that zooms in the image a bit, screwing with the native resolution (making it blurrier than it should be). The shadows shader (I think it's that) has ten examples of "needs manual fix":

// ---- Created with 3Dmigoto v1.2.51 on Wed Dec 21 19:47:21 2016

cbuffer SceneInfo : register(b0)
{
row_major float4x4 viewProjMat : packoffset(c0);
row_major float4x4 viewMat : packoffset(c4);
row_major float4x4 viewInvMat : packoffset(c8);
row_major float4x4 projMat : packoffset(c12);
row_major float4x4 projInvMat : packoffset(c16);
row_major float4x4 viewProjInvMat : packoffset(c20);
row_major float4x4 prevViewProjMat : packoffset(c24);
float3 prevCameraPos : packoffset(c28);
float cameraNearPlane : packoffset(c28.w);
float3 prevCameraDir : packoffset(c29);
float cameraFarPlane : packoffset(c29.w);
float4 viewFrustum[6] : packoffset(c30);
float3 ZToLinear : packoffset(c36);
float subdivisionLevel : packoffset(c36.w);
float2 screenSize : packoffset(c37);
float2 screenInverseSize : packoffset(c37.z);
}

SamplerState PointWrap_s : register(s0);
SamplerState BilinearWrap_s : register(s1);
Texture2D<float3> DiffuseBuffer : register(t0);
Texture2D<uint> SubSurfaceParam : register(t1);
StructuredBuffer<BakedGaussianProfiles> BakedGaussianProfiles : register(t2);


// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
float4 v0 : SV_Position0,
out float3 o0 : SV_Target0)
{
// Needs manual fix for instruction:
// unknown dcl_: dcl_resource_structured t2, 152
float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21;
uint4 bitmask, uiDest;
float4 fDest;

r0.zw = screenInverseSize.xy * v0.xy;
r1.xyz = DiffuseBuffer.Sample(PointWrap_s, r0.zw).xyz;
r2.xy = (uint2)v0.xy;
r2.zw = float2(0,0);
r1.w = SubSurfaceParam.Load(r2.xyz).x;
r2.x = f16tof32(r1.w);
r1.w = (uint)r1.w >> 16;
r2.y = cmp((uint)r1.w < 7);
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r3.xyzw, r1.w, l(16), t2.xyzw
r3.x = PointWrap[]..swiz;
r3.y = PointWrap[]..swiz;
r3.z = PointWrap[]..swiz;
r3.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r4.xyzw, r1.w, l(32), t2.xyzw
r4.x = PointWrap[]..swiz;
r4.y = PointWrap[]..swiz;
r4.z = PointWrap[]..swiz;
r4.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r5.xyzw, r1.w, l(48), t2.xyzw
r5.x = PointWrap[]..swiz;
r5.y = PointWrap[]..swiz;
r5.z = PointWrap[]..swiz;
r5.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r6.xyzw, r1.w, l(64), t2.xyzw
r6.x = PointWrap[]..swiz;
r6.y = PointWrap[]..swiz;
r6.z = PointWrap[]..swiz;
r6.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r7.xyzw, r1.w, l(80), t2.xyzw
r7.x = PointWrap[]..swiz;
r7.y = PointWrap[]..swiz;
r7.z = PointWrap[]..swiz;
r7.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r8.xyzw, r1.w, l(96), t2.xyzw
r8.x = PointWrap[]..swiz;
r8.y = PointWrap[]..swiz;
r8.z = PointWrap[]..swiz;
r8.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r9.xyzw, r1.w, l(112), t2.xyzw
r9.x = PointWrap[]..swiz;
r9.y = PointWrap[]..swiz;
r9.z = PointWrap[]..swiz;
r9.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r10.xyzw, r1.w, l(128), t2.xyzw
r10.x = PointWrap[]..swiz;
r10.y = PointWrap[]..swiz;
r10.z = PointWrap[]..swiz;
r10.w = PointWrap[]..swiz;
r2.z = -r2.x * projMat._m23 + projMat._m33;
r2.z = projMat._m11 / r2.z;
r2.z = screenSize.x * r2.z;
r2.z = 0.25 * r2.z;
r2.w = r3.w * r2.z;
r0.y = r2.w * 2.99999992e-005 + r0.z;
r11.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r0.yw).xyz;
r2.w = r4.w * r2.z;
r0.x = r2.w * 2.99999992e-005 + r0.z;
r12.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r0.xw).xyz;
r2.w = r5.w * r2.z;
r13.z = r2.w * 2.99999992e-005 + r0.z;
r13.w = r0.w;
r14.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r13.zw).xyz;
r2.w = r6.w * r2.z;
r13.y = r2.w * 2.99999992e-005 + r0.z;
r15.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r13.yw).xyz;
r2.w = r7.w * r2.z;
r13.x = r2.w * 2.99999992e-005 + r0.z;
r16.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r13.xw).xyz;
r2.w = r8.w * r2.z;
r17.z = r2.w * 2.99999992e-005 + r0.z;
r17.w = r13.w;
r18.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r17.zw).xyz;
r2.w = r9.w * r2.z;
r17.y = r2.w * 2.99999992e-005 + r0.z;
r19.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r17.yw).xyz;
r2.z = r10.w * r2.z;
r17.x = r2.z * 2.99999992e-005 + r0.z;
r20.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r17.xw).xyz;
if (r2.y != 0) {
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r2.yzw, r1.w, l(0), t2.xxyz
r2.y = PointWrap[]..swiz;
r2.z = PointWrap[]..swiz;
r2.w = PointWrap[]..swiz;
r0.xyzw = screenSize.xyxy * r0.ywxw;
r21.xy = (int2)r0.xy;
r21.zw = float2(0,0);
r0.x = SubSurfaceParam.Load(r21.xyz).x;
r0.y = f16tof32(r0.x);
r0.x = (uint)r0.x >> 16;
r0.x = cmp((int)r0.x == (int)r1.w);
r0.y = r0.y + -r2.x;
r0.y = saturate(10 * abs(r0.y));
r0.x = r0.x ? r0.y : 1;
r21.xyz = -r11.xyz + r1.xyz;
r11.xyz = r0.xxx * r21.xyz + r11.xyz;
r3.xyz = r11.xyz * r3.xyz;
r3.xyz = max(float3(0,0,0), r3.xyz);
r2.yzw = r1.xyz * r2.yzw + r3.xyz;
r0.xy = (int2)r0.zw;
r0.zw = float2(0,0);
r0.x = SubSurfaceParam.Load(r0.xyz).x;
r0.y = f16tof32(r0.x);
r0.x = (uint)r0.x >> 16;
r0.x = cmp((int)r0.x == (int)r1.w);
r0.y = r0.y + -r2.x;
r0.y = saturate(10 * abs(r0.y));
r0.x = r0.x ? r0.y : 1;
r0.yzw = -r12.xyz + r1.xyz;
r0.xyz = r0.xxx * r0.yzw + r12.xyz;
r0.xyz = r0.xyz * r4.xyz;
r0.xyz = max(float3(0,0,0), r0.xyz);
r0.xyz = r2.yzw + r0.xyz;
r3.xyzw = screenSize.xyxy * r13.zwyw;
r4.xy = (int2)r3.xy;
r4.zw = float2(0,0);
r0.w = SubSurfaceParam.Load(r4.xyz).x;
r2.y = f16tof32(r0.w);
r0.w = (uint)r0.w >> 16;
r0.w = cmp((int)r0.w == (int)r1.w);
r2.y = r2.y + -r2.x;
r2.y = saturate(10 * abs(r2.y));
r0.w = r0.w ? r2.y : 1;
r2.yzw = -r14.xyz + r1.xyz;
r2.yzw = r0.www * r2.yzw + r14.xyz;
r2.yzw = r2.yzw * r5.xyz;
r2.yzw = max(float3(0,0,0), r2.yzw);
r0.xyz = r2.yzw + r0.xyz;
r3.xy = (int2)r3.zw;
r3.zw = float2(0,0);
r0.w = SubSurfaceParam.Load(r3.xyz).x;
r2.y = f16tof32(r0.w);
r0.w = (uint)r0.w >> 16;
r0.w = cmp((int)r0.w == (int)r1.w);
r2.y = r2.y + -r2.x;
r2.y = saturate(10 * abs(r2.y));
r0.w = r0.w ? r2.y : 1;
r2.yzw = -r15.xyz + r1.xyz;
r2.yzw = r0.www * r2.yzw + r15.xyz;
r2.yzw = r2.yzw * r6.xyz;
r2.yzw = max(float3(0,0,0), r2.yzw);
r0.xyz = r2.yzw + r0.xyz;
r2.yz = screenSize.xy * r13.xw;
r3.xy = (int2)r2.yz;
r3.zw = float2(0,0);
r0.w = SubSurfaceParam.Load(r3.xyz).x;
r2.y = f16tof32(r0.w);
r0.w = (uint)r0.w >> 16;
r0.w = cmp((int)r0.w == (int)r1.w);
r2.y = r2.y + -r2.x;
r2.y = saturate(10 * abs(r2.y));
r0.w = r0.w ? r2.y : 1;
r2.yzw = -r16.xyz + r1.xyz;
r2.yzw = r0.www * r2.yzw + r16.xyz;
r2.yzw = r2.yzw * r7.xyz;
r2.yzw = max(float3(0,0,0), r2.yzw);
r0.xyz = r2.yzw + r0.xyz;
r3.xyzw = screenSize.xyxy * r17.zwyw;
r4.xy = (int2)r3.xy;
r4.zw = float2(0,0);
r0.w = SubSurfaceParam.Load(r4.xyz).x;
r2.y = f16tof32(r0.w);
r0.w = (uint)r0.w >> 16;
r0.w = cmp((int)r0.w == (int)r1.w);
r2.y = r2.y + -r2.x;
r2.y = saturate(10 * abs(r2.y));
r0.w = r0.w ? r2.y : 1;
r2.yzw = -r18.xyz + r1.xyz;
r2.yzw = r0.www * r2.yzw + r18.xyz;
r2.yzw = r2.yzw * r8.xyz;
r2.yzw = max(float3(0,0,0), r2.yzw);
r0.xyz = r2.yzw + r0.xyz;
r3.xy = (int2)r3.zw;
r3.zw = float2(0,0);
r0.w = SubSurfaceParam.Load(r3.xyz).x;
r2.y = f16tof32(r0.w);
r0.w = (uint)r0.w >> 16;
r0.w = cmp((int)r0.w == (int)r1.w);
r2.y = r2.y + -r2.x;
r2.y = saturate(10 * abs(r2.y));
r0.w = r0.w ? r2.y : 1;
r2.yzw = -r19.xyz + r1.xyz;
r2.yzw = r0.www * r2.yzw + r19.xyz;
r2.yzw = r2.yzw * r9.xyz;
r2.yzw = max(float3(0,0,0), r2.yzw);
r0.xyz = r2.yzw + r0.xyz;
r2.yz = screenSize.xy * r17.xw;
r3.xy = (int2)r2.yz;
r3.zw = float2(0,0);
r0.w = SubSurfaceParam.Load(r3.xyz).x;
r2.y = f16tof32(r0.w);
r0.w = (uint)r0.w >> 16;
r0.w = cmp((int)r0.w == (int)r1.w);
r1.w = r2.y + -r2.x;
r1.w = saturate(10 * abs(r1.w));
r0.w = r0.w ? r1.w : 1;
r2.xyz = -r20.xyz + r1.xyz;
r2.xyz = r0.www * r2.xyz + r20.xyz;
r2.xyz = r2.xyz * r10.xyz;
r2.xyz = max(float3(0,0,0), r2.xyz);
o0.xyz = r2.xyz + r0.xyz;
} else {
o0.xyz = r1.xyz;
}
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// using 3Dmigoto v1.2.51 on Wed Dec 21 19:47:21 2016
//
//
// Buffer Definitions:
//
// cbuffer SceneInfo
// {
//
// row_major float4x4 viewProjMat; // Offset: 0 Size: 64 [unused]
// row_major float4x4 viewMat; // Offset: 64 Size: 64 [unused]
// row_major float4x4 viewInvMat; // Offset: 128 Size: 64 [unused]
// row_major float4x4 projMat; // Offset: 192 Size: 64
// row_major float4x4 projInvMat; // Offset: 256 Size: 64 [unused]
// row_major float4x4 viewProjInvMat; // Offset: 320 Size: 64 [unused]
// row_major float4x4 prevViewProjMat;// Offset: 384 Size: 64 [unused]
// float3 prevCameraPos; // Offset: 448 Size: 12 [unused]
// float cameraNearPlane; // Offset: 460 Size: 4 [unused]
// float3 prevCameraDir; // Offset: 464 Size: 12 [unused]
// float cameraFarPlane; // Offset: 476 Size: 4 [unused]
// float4 viewFrustum[6]; // Offset: 480 Size: 96 [unused]
// float3 ZToLinear; // Offset: 576 Size: 12 [unused]
// float subdivisionLevel; // Offset: 588 Size: 4 [unused]
// float2 screenSize; // Offset: 592 Size: 8
// float2 screenInverseSize; // Offset: 600 Size: 8
//
// }
//
// Resource bind info for BakedGaussianProfiles
// {
//
// struct BakedGaussianProfile
// {
//
// float4 mGaussianKernel[9]; // Offset: 0
// float2 mScreenRadiusCoeff; // Offset: 144
//
// } $Element; // Offset: 0 Size: 152
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// PointWrap sampler NA NA 0 1
// BilinearWrap sampler NA NA 1 1
// DiffuseBuffer texture float3 2d 0 1
// SubSurfaceParam texture uint 2d 1 1
// BakedGaussianProfiles texture struct r/o 2 1
// SceneInfo cbuffer NA NA 0 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float xy
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyz 0 TARGET float xyz
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[38], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (uint,uint,uint,uint) t1
dcl_resource_structured t2, 152
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyz
dcl_temps 22
mul r0.zw, v0.xxxy, cb0[37].zzzw
sample_indexable(texture2d)(float,float,float,float) r1.xyz, r0.zwzz, t0.xyzw, s0
ftou r2.xy, v0.xyxx
mov r2.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r1.w, r2.xyzw, t1.yzwx
f16tof32 r2.x, r1.w
ushr r1.w, r1.w, l(16)
ult r2.y, r1.w, l(7)
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r3.xyzw, r1.w, l(16), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r4.xyzw, r1.w, l(32), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r5.xyzw, r1.w, l(48), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r6.xyzw, r1.w, l(64), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r7.xyzw, r1.w, l(80), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r8.xyzw, r1.w, l(96), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r9.xyzw, r1.w, l(112), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r10.xyzw, r1.w, l(128), t2.xyzw
mad r2.z, -r2.x, cb0[14].w, cb0[15].w
div r2.z, cb0[13].y, r2.z
mul r2.z, r2.z, cb0[37].x
mul r2.z, r2.z, l(0.250000)
mul r2.w, r2.z, r3.w
mad r0.y, r2.w, l(0.000030), r0.z
sample_indexable(texture2d)(float,float,float,float) r11.xyz, r0.ywyy, t0.xyzw, s1
mul r2.w, r2.z, r4.w
mad r0.x, r2.w, l(0.000030), r0.z
sample_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xwxx, t0.xyzw, s1
mul r2.w, r2.z, r5.w
mad r13.z, r2.w, l(0.000030), r0.z
mov r13.w, r0.w
sample_indexable(texture2d)(float,float,float,float) r14.xyz, r13.zwzz, t0.xyzw, s1
mul r2.w, r2.z, r6.w
mad r13.y, r2.w, l(0.000030), r0.z
sample_indexable(texture2d)(float,float,float,float) r15.xyz, r13.ywyy, t0.xyzw, s1
mul r2.w, r2.z, r7.w
mad r13.x, r2.w, l(0.000030), r0.z
sample_indexable(texture2d)(float,float,float,float) r16.xyz, r13.xwxx, t0.xyzw, s1
mul r2.w, r2.z, r8.w
mad r17.z, r2.w, l(0.000030), r0.z
mov r17.w, r13.w
sample_indexable(texture2d)(float,float,float,float) r18.xyz, r17.zwzz, t0.xyzw, s1
mul r2.w, r2.z, r9.w
mad r17.y, r2.w, l(0.000030), r0.z
sample_indexable(texture2d)(float,float,float,float) r19.xyz, r17.ywyy, t0.xyzw, s1
mul r2.z, r2.z, r10.w
mad r17.x, r2.z, l(0.000030), r0.z
sample_indexable(texture2d)(float,float,float,float) r20.xyz, r17.xwxx, t0.xyzw, s1
if_nz r2.y
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r2.yzw, r1.w, l(0), t2.xxyz
mul r0.xyzw, r0.ywxw, cb0[37].xyxy
ftoi r21.xy, r0.xyxx
mov r21.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.x, r21.xyzw, t1.xyzw
f16tof32 r0.y, r0.x
ushr r0.x, r0.x, l(16)
ieq r0.x, r0.x, r1.w
add r0.y, -r2.x, r0.y
mul_sat r0.y, |r0.y|, l(10.000000)
movc r0.x, r0.x, r0.y, l(1.000000)
add r21.xyz, r1.xyzx, -r11.xyzx
mad r11.xyz, r0.xxxx, r21.xyzx, r11.xyzx
mul r3.xyz, r3.xyzx, r11.xyzx
max r3.xyz, r3.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
mad r2.yzw, r1.xxyz, r2.yyzw, r3.xxyz
ftoi r0.xy, r0.zwzz
mov r0.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.x, r0.xyzw, t1.xyzw
f16tof32 r0.y, r0.x
ushr r0.x, r0.x, l(16)
ieq r0.x, r0.x, r1.w
add r0.y, -r2.x, r0.y
mul_sat r0.y, |r0.y|, l(10.000000)
movc r0.x, r0.x, r0.y, l(1.000000)
add r0.yzw, r1.xxyz, -r12.xxyz
mad r0.xyz, r0.xxxx, r0.yzwy, r12.xyzx
mul r0.xyz, r4.xyzx, r0.xyzx
max r0.xyz, r0.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.xyz, r0.xyzx, r2.yzwy
mul r3.xyzw, r13.zwyw, cb0[37].xyxy
ftoi r4.xy, r3.xyxx
mov r4.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r4.xyzw, t1.yzwx
f16tof32 r2.y, r0.w
ushr r0.w, r0.w, l(16)
ieq r0.w, r0.w, r1.w
add r2.y, -r2.x, r2.y
mul_sat r2.y, |r2.y|, l(10.000000)
movc r0.w, r0.w, r2.y, l(1.000000)
add r2.yzw, r1.xxyz, -r14.xxyz
mad r2.yzw, r0.wwww, r2.yyzw, r14.xxyz
mul r2.yzw, r5.xxyz, r2.yyzw
max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.xyz, r0.xyzx, r2.yzwy
ftoi r3.xy, r3.zwzz
mov r3.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx
f16tof32 r2.y, r0.w
ushr r0.w, r0.w, l(16)
ieq r0.w, r0.w, r1.w
add r2.y, -r2.x, r2.y
mul_sat r2.y, |r2.y|, l(10.000000)
movc r0.w, r0.w, r2.y, l(1.000000)
add r2.yzw, r1.xxyz, -r15.xxyz
mad r2.yzw, r0.wwww, r2.yyzw, r15.xxyz
mul r2.yzw, r6.xxyz, r2.yyzw
max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.xyz, r0.xyzx, r2.yzwy
mul r2.yz, r13.xxwx, cb0[37].xxyx
ftoi r3.xy, r2.yzyy
mov r3.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx
f16tof32 r2.y, r0.w
ushr r0.w, r0.w, l(16)
ieq r0.w, r0.w, r1.w
add r2.y, -r2.x, r2.y
mul_sat r2.y, |r2.y|, l(10.000000)
movc r0.w, r0.w, r2.y, l(1.000000)
add r2.yzw, r1.xxyz, -r16.xxyz
mad r2.yzw, r0.wwww, r2.yyzw, r16.xxyz
mul r2.yzw, r7.xxyz, r2.yyzw
max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.xyz, r0.xyzx, r2.yzwy
mul r3.xyzw, r17.zwyw, cb0[37].xyxy
ftoi r4.xy, r3.xyxx
mov r4.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r4.xyzw, t1.yzwx
f16tof32 r2.y, r0.w
ushr r0.w, r0.w, l(16)
ieq r0.w, r0.w, r1.w
add r2.y, -r2.x, r2.y
mul_sat r2.y, |r2.y|, l(10.000000)
movc r0.w, r0.w, r2.y, l(1.000000)
add r2.yzw, r1.xxyz, -r18.xxyz
mad r2.yzw, r0.wwww, r2.yyzw, r18.xxyz
mul r2.yzw, r8.xxyz, r2.yyzw
max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.xyz, r0.xyzx, r2.yzwy
ftoi r3.xy, r3.zwzz
mov r3.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx
f16tof32 r2.y, r0.w
ushr r0.w, r0.w, l(16)
ieq r0.w, r0.w, r1.w
add r2.y, -r2.x, r2.y
mul_sat r2.y, |r2.y|, l(10.000000)
movc r0.w, r0.w, r2.y, l(1.000000)
add r2.yzw, r1.xxyz, -r19.xxyz
mad r2.yzw, r0.wwww, r2.yyzw, r19.xxyz
mul r2.yzw, r9.xxyz, r2.yyzw
max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.xyz, r0.xyzx, r2.yzwy
mul r2.yz, r17.xxwx, cb0[37].xxyx
ftoi r3.xy, r2.yzyy
mov r3.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx
f16tof32 r2.y, r0.w
ushr r0.w, r0.w, l(16)
ieq r0.w, r0.w, r1.w
add r1.w, -r2.x, r2.y
mul_sat r1.w, |r1.w|, l(10.000000)
movc r0.w, r0.w, r1.w, l(1.000000)
add r2.xyz, r1.xyzx, -r20.xyzx
mad r2.xyz, r0.wwww, r2.xyzx, r20.xyzx
mul r2.xyz, r10.xyzx, r2.xyzx
max r2.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
add o0.xyz, r0.xyzx, r2.xyzx
else
mov o0.xyz, r1.xyzx
endif
ret
// Approximately 169 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/


No idea about how to fix that. After that, I played the demo in 2D at 120fps.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: MSI GeForce RTX 2080Ti Gaming X Trio
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#26
Posted 12/21/2016 07:35 PM   
Look at "Evil Within" fix made by DHR;) That one is a RE Engine game as well;) Maybe it will help you out (even if is ASM) if the pattern is the same is easy-peasy then;)
Look at "Evil Within" fix made by DHR;)
That one is a RE Engine game as well;)

Maybe it will help you out (even if is ASM) if the pattern is the same is easy-peasy then;)

1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc


My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com

(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)

#27
Posted 12/21/2016 07:45 PM   
[quote="Metaloholic"]Its kind of funny how different things are a dealbraker for each one of us. Like for example i don't think 60fps is that mandatory, id rather bump up all graphics and play at 45 but i can't stand active shuttering and Any lag between left and right image no matter what. Even jerky framerate at perfect synch is more comfortable. but i ques that just indicates how different all of our Brains are. I tried bumping the resolution scale to 2x, im using fullhd and the framerate just died. Don't know did it have an affect i have 3D vision Turned on and i just Turned it off with keyboard commands (is it really off?) Or maby the i52500k@4,5ghz and gtx980ti aint just cutting it to render 4K Don't know why the game looked way too dark after adjusting brightness according to test images ingame. Sometimes i think games use different colorspace as same setting in display side are way way off looking good.[/quote] Make sure to disable hbao+ that was halving my framerate. I dont mind 45fps constant on PC. If I am getting below 60 and my minimum is 45 I will cap it at 45. I really dont even mind 30fps on consoles in non FPS games. I dont prefer it but I can live with it. PC just really has one issue or another that makes it never work out though. Whether stutters, frame pacing, etc. Id rather max out settings at 45fps then play at lower settings 60fps.
Metaloholic said:Its kind of funny how different things are a dealbraker for each one of us. Like for example i don't think 60fps is that mandatory, id rather bump up all graphics and play at 45 but i can't stand active shuttering and Any lag between left and right image no matter what. Even jerky framerate at perfect synch is more comfortable. but i ques that just indicates how different all of our Brains are.

I tried bumping the resolution scale to 2x, im using fullhd and the framerate just died.
Don't know did it have an affect i have 3D vision Turned on and i just Turned it off with keyboard commands (is it really off?)
Or maby the i52500k@4,5ghz and gtx980ti aint just cutting it to render 4K

Don't know why the game looked way too dark after adjusting brightness according to test images ingame.
Sometimes i think games use different colorspace as same setting in display side are way way off looking good.


Make sure to disable hbao+ that was halving my framerate.

I dont mind 45fps constant on PC. If I am getting below 60 and my minimum is 45 I will cap it at 45.
I really dont even mind 30fps on consoles in non FPS games. I dont prefer it but I can live with it. PC just really has one issue or another that makes it never work out though. Whether stutters, frame pacing, etc.

Id rather max out settings at 45fps then play at lower settings 60fps.

Co-founder/Web host of helixmod.blog.com

Donations for web hosting @ paypal -eqzitara@yahoo.com
or
https://www.patreon.com/user?u=791918

#28
Posted 12/21/2016 11:09 PM   
I have read that there are multiple endings. I'll play it multiple times then :). About fps, it's harder for me to enjoy games in 3D if I don't reach constant 60fps (Dragon's Dogma is pure torture for me sometimes: can't use vsync, and suffer big fps drops in the city due to the CPU). However, I also value resolution and graphics. I try to have all three things if possible, and if not, I start disabling some effects. In TW3 I played at 1080p some days, and in others at 1440p. That's because I couldn't ensure 60fps at 1080p and I got 40 something fps at 1440p.
I have read that there are multiple endings. I'll play it multiple times then :).

About fps, it's harder for me to enjoy games in 3D if I don't reach constant 60fps (Dragon's Dogma is pure torture for me sometimes: can't use vsync, and suffer big fps drops in the city due to the CPU). However, I also value resolution and graphics. I try to have all three things if possible, and if not, I start disabling some effects.

In TW3 I played at 1080p some days, and in others at 1440p. That's because I couldn't ensure 60fps at 1080p and I got 40 something fps at 1440p.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: MSI GeForce RTX 2080Ti Gaming X Trio
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#29
Posted 12/21/2016 11:50 PM   
[quote="masterotaku"]Well, that was short. I guess most of the size was textures. At 1440p in 3D, I went from 33-40fps to solid 60fps just by changing HBAO+ to SSAO (setting shadows to High instead of Very High helped a bit too). About 3D. There is a shader (that controls light exposure or something like that) that zooms in the image a bit, screwing with the native resolution (making it blurrier than it should be). The shadows shader (I think it's that) has ten examples of "needs manual fix": [code] // ---- Created with 3Dmigoto v1.2.51 on Wed Dec 21 19:47:21 2016 cbuffer SceneInfo : register(b0) { row_major float4x4 viewProjMat : packoffset(c0); row_major float4x4 viewMat : packoffset(c4); row_major float4x4 viewInvMat : packoffset(c8); row_major float4x4 projMat : packoffset(c12); row_major float4x4 projInvMat : packoffset(c16); row_major float4x4 viewProjInvMat : packoffset(c20); row_major float4x4 prevViewProjMat : packoffset(c24); float3 prevCameraPos : packoffset(c28); float cameraNearPlane : packoffset(c28.w); float3 prevCameraDir : packoffset(c29); float cameraFarPlane : packoffset(c29.w); float4 viewFrustum[6] : packoffset(c30); float3 ZToLinear : packoffset(c36); float subdivisionLevel : packoffset(c36.w); float2 screenSize : packoffset(c37); float2 screenInverseSize : packoffset(c37.z); } SamplerState PointWrap_s : register(s0); SamplerState BilinearWrap_s : register(s1); Texture2D<float3> DiffuseBuffer : register(t0); Texture2D<uint> SubSurfaceParam : register(t1); StructuredBuffer<BakedGaussianProfiles> BakedGaussianProfiles : register(t2); // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : SV_Position0, out float3 o0 : SV_Target0) { // Needs manual fix for instruction: // unknown dcl_: dcl_resource_structured t2, 152 float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21; uint4 bitmask, uiDest; float4 fDest; r0.zw = screenInverseSize.xy * v0.xy; r1.xyz = DiffuseBuffer.Sample(PointWrap_s, r0.zw).xyz; r2.xy = (uint2)v0.xy; r2.zw = float2(0,0); r1.w = SubSurfaceParam.Load(r2.xyz).x; r2.x = f16tof32(r1.w); r1.w = (uint)r1.w >> 16; r2.y = cmp((uint)r1.w < 7); // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r3.xyzw, r1.w, l(16), t2.xyzw r3.x = PointWrap[]..swiz; r3.y = PointWrap[]..swiz; r3.z = PointWrap[]..swiz; r3.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r4.xyzw, r1.w, l(32), t2.xyzw r4.x = PointWrap[]..swiz; r4.y = PointWrap[]..swiz; r4.z = PointWrap[]..swiz; r4.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r5.xyzw, r1.w, l(48), t2.xyzw r5.x = PointWrap[]..swiz; r5.y = PointWrap[]..swiz; r5.z = PointWrap[]..swiz; r5.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r6.xyzw, r1.w, l(64), t2.xyzw r6.x = PointWrap[]..swiz; r6.y = PointWrap[]..swiz; r6.z = PointWrap[]..swiz; r6.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r7.xyzw, r1.w, l(80), t2.xyzw r7.x = PointWrap[]..swiz; r7.y = PointWrap[]..swiz; r7.z = PointWrap[]..swiz; r7.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r8.xyzw, r1.w, l(96), t2.xyzw r8.x = PointWrap[]..swiz; r8.y = PointWrap[]..swiz; r8.z = PointWrap[]..swiz; r8.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r9.xyzw, r1.w, l(112), t2.xyzw r9.x = PointWrap[]..swiz; r9.y = PointWrap[]..swiz; r9.z = PointWrap[]..swiz; r9.w = PointWrap[]..swiz; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r10.xyzw, r1.w, l(128), t2.xyzw r10.x = PointWrap[]..swiz; r10.y = PointWrap[]..swiz; r10.z = PointWrap[]..swiz; r10.w = PointWrap[]..swiz; r2.z = -r2.x * projMat._m23 + projMat._m33; r2.z = projMat._m11 / r2.z; r2.z = screenSize.x * r2.z; r2.z = 0.25 * r2.z; r2.w = r3.w * r2.z; r0.y = r2.w * 2.99999992e-005 + r0.z; r11.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r0.yw).xyz; r2.w = r4.w * r2.z; r0.x = r2.w * 2.99999992e-005 + r0.z; r12.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r0.xw).xyz; r2.w = r5.w * r2.z; r13.z = r2.w * 2.99999992e-005 + r0.z; r13.w = r0.w; r14.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r13.zw).xyz; r2.w = r6.w * r2.z; r13.y = r2.w * 2.99999992e-005 + r0.z; r15.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r13.yw).xyz; r2.w = r7.w * r2.z; r13.x = r2.w * 2.99999992e-005 + r0.z; r16.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r13.xw).xyz; r2.w = r8.w * r2.z; r17.z = r2.w * 2.99999992e-005 + r0.z; r17.w = r13.w; r18.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r17.zw).xyz; r2.w = r9.w * r2.z; r17.y = r2.w * 2.99999992e-005 + r0.z; r19.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r17.yw).xyz; r2.z = r10.w * r2.z; r17.x = r2.z * 2.99999992e-005 + r0.z; r20.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r17.xw).xyz; if (r2.y != 0) { // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r2.yzw, r1.w, l(0), t2.xxyz r2.y = PointWrap[]..swiz; r2.z = PointWrap[]..swiz; r2.w = PointWrap[]..swiz; r0.xyzw = screenSize.xyxy * r0.ywxw; r21.xy = (int2)r0.xy; r21.zw = float2(0,0); r0.x = SubSurfaceParam.Load(r21.xyz).x; r0.y = f16tof32(r0.x); r0.x = (uint)r0.x >> 16; r0.x = cmp((int)r0.x == (int)r1.w); r0.y = r0.y + -r2.x; r0.y = saturate(10 * abs(r0.y)); r0.x = r0.x ? r0.y : 1; r21.xyz = -r11.xyz + r1.xyz; r11.xyz = r0.xxx * r21.xyz + r11.xyz; r3.xyz = r11.xyz * r3.xyz; r3.xyz = max(float3(0,0,0), r3.xyz); r2.yzw = r1.xyz * r2.yzw + r3.xyz; r0.xy = (int2)r0.zw; r0.zw = float2(0,0); r0.x = SubSurfaceParam.Load(r0.xyz).x; r0.y = f16tof32(r0.x); r0.x = (uint)r0.x >> 16; r0.x = cmp((int)r0.x == (int)r1.w); r0.y = r0.y + -r2.x; r0.y = saturate(10 * abs(r0.y)); r0.x = r0.x ? r0.y : 1; r0.yzw = -r12.xyz + r1.xyz; r0.xyz = r0.xxx * r0.yzw + r12.xyz; r0.xyz = r0.xyz * r4.xyz; r0.xyz = max(float3(0,0,0), r0.xyz); r0.xyz = r2.yzw + r0.xyz; r3.xyzw = screenSize.xyxy * r13.zwyw; r4.xy = (int2)r3.xy; r4.zw = float2(0,0); r0.w = SubSurfaceParam.Load(r4.xyz).x; r2.y = f16tof32(r0.w); r0.w = (uint)r0.w >> 16; r0.w = cmp((int)r0.w == (int)r1.w); r2.y = r2.y + -r2.x; r2.y = saturate(10 * abs(r2.y)); r0.w = r0.w ? r2.y : 1; r2.yzw = -r14.xyz + r1.xyz; r2.yzw = r0.www * r2.yzw + r14.xyz; r2.yzw = r2.yzw * r5.xyz; r2.yzw = max(float3(0,0,0), r2.yzw); r0.xyz = r2.yzw + r0.xyz; r3.xy = (int2)r3.zw; r3.zw = float2(0,0); r0.w = SubSurfaceParam.Load(r3.xyz).x; r2.y = f16tof32(r0.w); r0.w = (uint)r0.w >> 16; r0.w = cmp((int)r0.w == (int)r1.w); r2.y = r2.y + -r2.x; r2.y = saturate(10 * abs(r2.y)); r0.w = r0.w ? r2.y : 1; r2.yzw = -r15.xyz + r1.xyz; r2.yzw = r0.www * r2.yzw + r15.xyz; r2.yzw = r2.yzw * r6.xyz; r2.yzw = max(float3(0,0,0), r2.yzw); r0.xyz = r2.yzw + r0.xyz; r2.yz = screenSize.xy * r13.xw; r3.xy = (int2)r2.yz; r3.zw = float2(0,0); r0.w = SubSurfaceParam.Load(r3.xyz).x; r2.y = f16tof32(r0.w); r0.w = (uint)r0.w >> 16; r0.w = cmp((int)r0.w == (int)r1.w); r2.y = r2.y + -r2.x; r2.y = saturate(10 * abs(r2.y)); r0.w = r0.w ? r2.y : 1; r2.yzw = -r16.xyz + r1.xyz; r2.yzw = r0.www * r2.yzw + r16.xyz; r2.yzw = r2.yzw * r7.xyz; r2.yzw = max(float3(0,0,0), r2.yzw); r0.xyz = r2.yzw + r0.xyz; r3.xyzw = screenSize.xyxy * r17.zwyw; r4.xy = (int2)r3.xy; r4.zw = float2(0,0); r0.w = SubSurfaceParam.Load(r4.xyz).x; r2.y = f16tof32(r0.w); r0.w = (uint)r0.w >> 16; r0.w = cmp((int)r0.w == (int)r1.w); r2.y = r2.y + -r2.x; r2.y = saturate(10 * abs(r2.y)); r0.w = r0.w ? r2.y : 1; r2.yzw = -r18.xyz + r1.xyz; r2.yzw = r0.www * r2.yzw + r18.xyz; r2.yzw = r2.yzw * r8.xyz; r2.yzw = max(float3(0,0,0), r2.yzw); r0.xyz = r2.yzw + r0.xyz; r3.xy = (int2)r3.zw; r3.zw = float2(0,0); r0.w = SubSurfaceParam.Load(r3.xyz).x; r2.y = f16tof32(r0.w); r0.w = (uint)r0.w >> 16; r0.w = cmp((int)r0.w == (int)r1.w); r2.y = r2.y + -r2.x; r2.y = saturate(10 * abs(r2.y)); r0.w = r0.w ? r2.y : 1; r2.yzw = -r19.xyz + r1.xyz; r2.yzw = r0.www * r2.yzw + r19.xyz; r2.yzw = r2.yzw * r9.xyz; r2.yzw = max(float3(0,0,0), r2.yzw); r0.xyz = r2.yzw + r0.xyz; r2.yz = screenSize.xy * r17.xw; r3.xy = (int2)r2.yz; r3.zw = float2(0,0); r0.w = SubSurfaceParam.Load(r3.xyz).x; r2.y = f16tof32(r0.w); r0.w = (uint)r0.w >> 16; r0.w = cmp((int)r0.w == (int)r1.w); r1.w = r2.y + -r2.x; r1.w = saturate(10 * abs(r1.w)); r0.w = r0.w ? r1.w : 1; r2.xyz = -r20.xyz + r1.xyz; r2.xyz = r0.www * r2.xyz + r20.xyz; r2.xyz = r2.xyz * r10.xyz; r2.xyz = max(float3(0,0,0), r2.xyz); o0.xyz = r2.xyz + r0.xyz; } else { o0.xyz = r1.xyz; } return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 // // using 3Dmigoto v1.2.51 on Wed Dec 21 19:47:21 2016 // // // Buffer Definitions: // // cbuffer SceneInfo // { // // row_major float4x4 viewProjMat; // Offset: 0 Size: 64 [unused] // row_major float4x4 viewMat; // Offset: 64 Size: 64 [unused] // row_major float4x4 viewInvMat; // Offset: 128 Size: 64 [unused] // row_major float4x4 projMat; // Offset: 192 Size: 64 // row_major float4x4 projInvMat; // Offset: 256 Size: 64 [unused] // row_major float4x4 viewProjInvMat; // Offset: 320 Size: 64 [unused] // row_major float4x4 prevViewProjMat;// Offset: 384 Size: 64 [unused] // float3 prevCameraPos; // Offset: 448 Size: 12 [unused] // float cameraNearPlane; // Offset: 460 Size: 4 [unused] // float3 prevCameraDir; // Offset: 464 Size: 12 [unused] // float cameraFarPlane; // Offset: 476 Size: 4 [unused] // float4 viewFrustum[6]; // Offset: 480 Size: 96 [unused] // float3 ZToLinear; // Offset: 576 Size: 12 [unused] // float subdivisionLevel; // Offset: 588 Size: 4 [unused] // float2 screenSize; // Offset: 592 Size: 8 // float2 screenInverseSize; // Offset: 600 Size: 8 // // } // // Resource bind info for BakedGaussianProfiles // { // // struct BakedGaussianProfile // { // // float4 mGaussianKernel[9]; // Offset: 0 // float2 mScreenRadiusCoeff; // Offset: 144 // // } $Element; // Offset: 0 Size: 152 // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // PointWrap sampler NA NA 0 1 // BilinearWrap sampler NA NA 1 1 // DiffuseBuffer texture float3 2d 0 1 // SubSurfaceParam texture uint 2d 1 1 // BakedGaussianProfiles texture struct r/o 2 1 // SceneInfo cbuffer NA NA 0 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Position 0 xyzw 0 POS float xy // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyz 0 TARGET float xyz // ps_5_0 dcl_globalFlags refactoringAllowed dcl_constantbuffer cb0[38], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_resource_texture2d (float,float,float,float) t0 dcl_resource_texture2d (uint,uint,uint,uint) t1 dcl_resource_structured t2, 152 dcl_input_ps_siv linear noperspective v0.xy, position dcl_output o0.xyz dcl_temps 22 mul r0.zw, v0.xxxy, cb0[37].zzzw sample_indexable(texture2d)(float,float,float,float) r1.xyz, r0.zwzz, t0.xyzw, s0 ftou r2.xy, v0.xyxx mov r2.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r1.w, r2.xyzw, t1.yzwx f16tof32 r2.x, r1.w ushr r1.w, r1.w, l(16) ult r2.y, r1.w, l(7) ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r3.xyzw, r1.w, l(16), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r4.xyzw, r1.w, l(32), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r5.xyzw, r1.w, l(48), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r6.xyzw, r1.w, l(64), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r7.xyzw, r1.w, l(80), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r8.xyzw, r1.w, l(96), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r9.xyzw, r1.w, l(112), t2.xyzw ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r10.xyzw, r1.w, l(128), t2.xyzw mad r2.z, -r2.x, cb0[14].w, cb0[15].w div r2.z, cb0[13].y, r2.z mul r2.z, r2.z, cb0[37].x mul r2.z, r2.z, l(0.250000) mul r2.w, r2.z, r3.w mad r0.y, r2.w, l(0.000030), r0.z sample_indexable(texture2d)(float,float,float,float) r11.xyz, r0.ywyy, t0.xyzw, s1 mul r2.w, r2.z, r4.w mad r0.x, r2.w, l(0.000030), r0.z sample_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xwxx, t0.xyzw, s1 mul r2.w, r2.z, r5.w mad r13.z, r2.w, l(0.000030), r0.z mov r13.w, r0.w sample_indexable(texture2d)(float,float,float,float) r14.xyz, r13.zwzz, t0.xyzw, s1 mul r2.w, r2.z, r6.w mad r13.y, r2.w, l(0.000030), r0.z sample_indexable(texture2d)(float,float,float,float) r15.xyz, r13.ywyy, t0.xyzw, s1 mul r2.w, r2.z, r7.w mad r13.x, r2.w, l(0.000030), r0.z sample_indexable(texture2d)(float,float,float,float) r16.xyz, r13.xwxx, t0.xyzw, s1 mul r2.w, r2.z, r8.w mad r17.z, r2.w, l(0.000030), r0.z mov r17.w, r13.w sample_indexable(texture2d)(float,float,float,float) r18.xyz, r17.zwzz, t0.xyzw, s1 mul r2.w, r2.z, r9.w mad r17.y, r2.w, l(0.000030), r0.z sample_indexable(texture2d)(float,float,float,float) r19.xyz, r17.ywyy, t0.xyzw, s1 mul r2.z, r2.z, r10.w mad r17.x, r2.z, l(0.000030), r0.z sample_indexable(texture2d)(float,float,float,float) r20.xyz, r17.xwxx, t0.xyzw, s1 if_nz r2.y ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r2.yzw, r1.w, l(0), t2.xxyz mul r0.xyzw, r0.ywxw, cb0[37].xyxy ftoi r21.xy, r0.xyxx mov r21.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.x, r21.xyzw, t1.xyzw f16tof32 r0.y, r0.x ushr r0.x, r0.x, l(16) ieq r0.x, r0.x, r1.w add r0.y, -r2.x, r0.y mul_sat r0.y, |r0.y|, l(10.000000) movc r0.x, r0.x, r0.y, l(1.000000) add r21.xyz, r1.xyzx, -r11.xyzx mad r11.xyz, r0.xxxx, r21.xyzx, r11.xyzx mul r3.xyz, r3.xyzx, r11.xyzx max r3.xyz, r3.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) mad r2.yzw, r1.xxyz, r2.yyzw, r3.xxyz ftoi r0.xy, r0.zwzz mov r0.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.x, r0.xyzw, t1.xyzw f16tof32 r0.y, r0.x ushr r0.x, r0.x, l(16) ieq r0.x, r0.x, r1.w add r0.y, -r2.x, r0.y mul_sat r0.y, |r0.y|, l(10.000000) movc r0.x, r0.x, r0.y, l(1.000000) add r0.yzw, r1.xxyz, -r12.xxyz mad r0.xyz, r0.xxxx, r0.yzwy, r12.xyzx mul r0.xyz, r4.xyzx, r0.xyzx max r0.xyz, r0.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) add r0.xyz, r0.xyzx, r2.yzwy mul r3.xyzw, r13.zwyw, cb0[37].xyxy ftoi r4.xy, r3.xyxx mov r4.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r4.xyzw, t1.yzwx f16tof32 r2.y, r0.w ushr r0.w, r0.w, l(16) ieq r0.w, r0.w, r1.w add r2.y, -r2.x, r2.y mul_sat r2.y, |r2.y|, l(10.000000) movc r0.w, r0.w, r2.y, l(1.000000) add r2.yzw, r1.xxyz, -r14.xxyz mad r2.yzw, r0.wwww, r2.yyzw, r14.xxyz mul r2.yzw, r5.xxyz, r2.yyzw max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000) add r0.xyz, r0.xyzx, r2.yzwy ftoi r3.xy, r3.zwzz mov r3.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx f16tof32 r2.y, r0.w ushr r0.w, r0.w, l(16) ieq r0.w, r0.w, r1.w add r2.y, -r2.x, r2.y mul_sat r2.y, |r2.y|, l(10.000000) movc r0.w, r0.w, r2.y, l(1.000000) add r2.yzw, r1.xxyz, -r15.xxyz mad r2.yzw, r0.wwww, r2.yyzw, r15.xxyz mul r2.yzw, r6.xxyz, r2.yyzw max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000) add r0.xyz, r0.xyzx, r2.yzwy mul r2.yz, r13.xxwx, cb0[37].xxyx ftoi r3.xy, r2.yzyy mov r3.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx f16tof32 r2.y, r0.w ushr r0.w, r0.w, l(16) ieq r0.w, r0.w, r1.w add r2.y, -r2.x, r2.y mul_sat r2.y, |r2.y|, l(10.000000) movc r0.w, r0.w, r2.y, l(1.000000) add r2.yzw, r1.xxyz, -r16.xxyz mad r2.yzw, r0.wwww, r2.yyzw, r16.xxyz mul r2.yzw, r7.xxyz, r2.yyzw max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000) add r0.xyz, r0.xyzx, r2.yzwy mul r3.xyzw, r17.zwyw, cb0[37].xyxy ftoi r4.xy, r3.xyxx mov r4.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r4.xyzw, t1.yzwx f16tof32 r2.y, r0.w ushr r0.w, r0.w, l(16) ieq r0.w, r0.w, r1.w add r2.y, -r2.x, r2.y mul_sat r2.y, |r2.y|, l(10.000000) movc r0.w, r0.w, r2.y, l(1.000000) add r2.yzw, r1.xxyz, -r18.xxyz mad r2.yzw, r0.wwww, r2.yyzw, r18.xxyz mul r2.yzw, r8.xxyz, r2.yyzw max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000) add r0.xyz, r0.xyzx, r2.yzwy ftoi r3.xy, r3.zwzz mov r3.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx f16tof32 r2.y, r0.w ushr r0.w, r0.w, l(16) ieq r0.w, r0.w, r1.w add r2.y, -r2.x, r2.y mul_sat r2.y, |r2.y|, l(10.000000) movc r0.w, r0.w, r2.y, l(1.000000) add r2.yzw, r1.xxyz, -r19.xxyz mad r2.yzw, r0.wwww, r2.yyzw, r19.xxyz mul r2.yzw, r9.xxyz, r2.yyzw max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000) add r0.xyz, r0.xyzx, r2.yzwy mul r2.yz, r17.xxwx, cb0[37].xxyx ftoi r3.xy, r2.yzyy mov r3.zw, l(0,0,0,0) ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx f16tof32 r2.y, r0.w ushr r0.w, r0.w, l(16) ieq r0.w, r0.w, r1.w add r1.w, -r2.x, r2.y mul_sat r1.w, |r1.w|, l(10.000000) movc r0.w, r0.w, r1.w, l(1.000000) add r2.xyz, r1.xyzx, -r20.xyzx mad r2.xyz, r0.wwww, r2.xyzx, r20.xyzx mul r2.xyz, r10.xyzx, r2.xyzx max r2.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) add o0.xyz, r0.xyzx, r2.xyzx else mov o0.xyz, r1.xyzx endif ret // Approximately 169 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ [/code] No idea about how to fix that. After that, I played the demo in 2D at 120fps.[/quote] If you want to manually fix this one, examples of how this works are: https://github.com/bo3b/3Dmigoto/blob/7c88e11b58d572e72d37414fc0505dd0ef989132/Alien/61e6239dad56786e-vs_replace.txt https://github.com/bo3b/3Dmigoto/blob/1ad5864608c52015f7e35b6af60d94dd01e1d599/MirrorsEdge/e6db2e1b78527470-cs_replace.txt https://github.com/bo3b/3Dmigoto/blob/7c88e11b58d572e72d37414fc0505dd0ef989132/JC3/f064c0539aaa5254-vs_replace.txt The basic idea is to copy the struct referenced from the ASM side, and make a t* reference for it. In this case it will be something like: [code]... struct BakedGaussianProfile { float4 mGaussianKernel[9]; // Offset: 0 float2 mScreenRadiusCoeff; // Offset: 144 } ; // Offset: 0 Size: 152 StructuredBuffer<BakedGaussianProfile> BakedGaussianProfiles: register(t2); // ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r3.xyzw, r1.w, l(16), t2.xyzw r3.xyzw = BakedGaussianProfiles[r1.w].mGaussianKernel[1].xyzw; [/code] If that doesn't seem to make any sense, and you need this shader, let me know and I'll do a complete pass on it, including fxc recompile.
masterotaku said:Well, that was short. I guess most of the size was textures. At 1440p in 3D, I went from 33-40fps to solid 60fps just by changing HBAO+ to SSAO (setting shadows to High instead of Very High helped a bit too).

About 3D. There is a shader (that controls light exposure or something like that) that zooms in the image a bit, screwing with the native resolution (making it blurrier than it should be). The shadows shader (I think it's that) has ten examples of "needs manual fix":

// ---- Created with 3Dmigoto v1.2.51 on Wed Dec 21 19:47:21 2016

cbuffer SceneInfo : register(b0)
{
row_major float4x4 viewProjMat : packoffset(c0);
row_major float4x4 viewMat : packoffset(c4);
row_major float4x4 viewInvMat : packoffset(c8);
row_major float4x4 projMat : packoffset(c12);
row_major float4x4 projInvMat : packoffset(c16);
row_major float4x4 viewProjInvMat : packoffset(c20);
row_major float4x4 prevViewProjMat : packoffset(c24);
float3 prevCameraPos : packoffset(c28);
float cameraNearPlane : packoffset(c28.w);
float3 prevCameraDir : packoffset(c29);
float cameraFarPlane : packoffset(c29.w);
float4 viewFrustum[6] : packoffset(c30);
float3 ZToLinear : packoffset(c36);
float subdivisionLevel : packoffset(c36.w);
float2 screenSize : packoffset(c37);
float2 screenInverseSize : packoffset(c37.z);
}

SamplerState PointWrap_s : register(s0);
SamplerState BilinearWrap_s : register(s1);
Texture2D<float3> DiffuseBuffer : register(t0);
Texture2D<uint> SubSurfaceParam : register(t1);
StructuredBuffer<BakedGaussianProfiles> BakedGaussianProfiles : register(t2);


// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
float4 v0 : SV_Position0,
out float3 o0 : SV_Target0)
{
// Needs manual fix for instruction:
// unknown dcl_: dcl_resource_structured t2, 152
float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21;
uint4 bitmask, uiDest;
float4 fDest;

r0.zw = screenInverseSize.xy * v0.xy;
r1.xyz = DiffuseBuffer.Sample(PointWrap_s, r0.zw).xyz;
r2.xy = (uint2)v0.xy;
r2.zw = float2(0,0);
r1.w = SubSurfaceParam.Load(r2.xyz).x;
r2.x = f16tof32(r1.w);
r1.w = (uint)r1.w >> 16;
r2.y = cmp((uint)r1.w < 7);
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r3.xyzw, r1.w, l(16), t2.xyzw
r3.x = PointWrap[]..swiz;
r3.y = PointWrap[]..swiz;
r3.z = PointWrap[]..swiz;
r3.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r4.xyzw, r1.w, l(32), t2.xyzw
r4.x = PointWrap[]..swiz;
r4.y = PointWrap[]..swiz;
r4.z = PointWrap[]..swiz;
r4.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r5.xyzw, r1.w, l(48), t2.xyzw
r5.x = PointWrap[]..swiz;
r5.y = PointWrap[]..swiz;
r5.z = PointWrap[]..swiz;
r5.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r6.xyzw, r1.w, l(64), t2.xyzw
r6.x = PointWrap[]..swiz;
r6.y = PointWrap[]..swiz;
r6.z = PointWrap[]..swiz;
r6.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r7.xyzw, r1.w, l(80), t2.xyzw
r7.x = PointWrap[]..swiz;
r7.y = PointWrap[]..swiz;
r7.z = PointWrap[]..swiz;
r7.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r8.xyzw, r1.w, l(96), t2.xyzw
r8.x = PointWrap[]..swiz;
r8.y = PointWrap[]..swiz;
r8.z = PointWrap[]..swiz;
r8.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r9.xyzw, r1.w, l(112), t2.xyzw
r9.x = PointWrap[]..swiz;
r9.y = PointWrap[]..swiz;
r9.z = PointWrap[]..swiz;
r9.w = PointWrap[]..swiz;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r10.xyzw, r1.w, l(128), t2.xyzw
r10.x = PointWrap[]..swiz;
r10.y = PointWrap[]..swiz;
r10.z = PointWrap[]..swiz;
r10.w = PointWrap[]..swiz;
r2.z = -r2.x * projMat._m23 + projMat._m33;
r2.z = projMat._m11 / r2.z;
r2.z = screenSize.x * r2.z;
r2.z = 0.25 * r2.z;
r2.w = r3.w * r2.z;
r0.y = r2.w * 2.99999992e-005 + r0.z;
r11.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r0.yw).xyz;
r2.w = r4.w * r2.z;
r0.x = r2.w * 2.99999992e-005 + r0.z;
r12.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r0.xw).xyz;
r2.w = r5.w * r2.z;
r13.z = r2.w * 2.99999992e-005 + r0.z;
r13.w = r0.w;
r14.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r13.zw).xyz;
r2.w = r6.w * r2.z;
r13.y = r2.w * 2.99999992e-005 + r0.z;
r15.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r13.yw).xyz;
r2.w = r7.w * r2.z;
r13.x = r2.w * 2.99999992e-005 + r0.z;
r16.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r13.xw).xyz;
r2.w = r8.w * r2.z;
r17.z = r2.w * 2.99999992e-005 + r0.z;
r17.w = r13.w;
r18.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r17.zw).xyz;
r2.w = r9.w * r2.z;
r17.y = r2.w * 2.99999992e-005 + r0.z;
r19.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r17.yw).xyz;
r2.z = r10.w * r2.z;
r17.x = r2.z * 2.99999992e-005 + r0.z;
r20.xyz = DiffuseBuffer.Sample(BilinearWrap_s, r17.xw).xyz;
if (r2.y != 0) {
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r2.yzw, r1.w, l(0), t2.xxyz
r2.y = PointWrap[]..swiz;
r2.z = PointWrap[]..swiz;
r2.w = PointWrap[]..swiz;
r0.xyzw = screenSize.xyxy * r0.ywxw;
r21.xy = (int2)r0.xy;
r21.zw = float2(0,0);
r0.x = SubSurfaceParam.Load(r21.xyz).x;
r0.y = f16tof32(r0.x);
r0.x = (uint)r0.x >> 16;
r0.x = cmp((int)r0.x == (int)r1.w);
r0.y = r0.y + -r2.x;
r0.y = saturate(10 * abs(r0.y));
r0.x = r0.x ? r0.y : 1;
r21.xyz = -r11.xyz + r1.xyz;
r11.xyz = r0.xxx * r21.xyz + r11.xyz;
r3.xyz = r11.xyz * r3.xyz;
r3.xyz = max(float3(0,0,0), r3.xyz);
r2.yzw = r1.xyz * r2.yzw + r3.xyz;
r0.xy = (int2)r0.zw;
r0.zw = float2(0,0);
r0.x = SubSurfaceParam.Load(r0.xyz).x;
r0.y = f16tof32(r0.x);
r0.x = (uint)r0.x >> 16;
r0.x = cmp((int)r0.x == (int)r1.w);
r0.y = r0.y + -r2.x;
r0.y = saturate(10 * abs(r0.y));
r0.x = r0.x ? r0.y : 1;
r0.yzw = -r12.xyz + r1.xyz;
r0.xyz = r0.xxx * r0.yzw + r12.xyz;
r0.xyz = r0.xyz * r4.xyz;
r0.xyz = max(float3(0,0,0), r0.xyz);
r0.xyz = r2.yzw + r0.xyz;
r3.xyzw = screenSize.xyxy * r13.zwyw;
r4.xy = (int2)r3.xy;
r4.zw = float2(0,0);
r0.w = SubSurfaceParam.Load(r4.xyz).x;
r2.y = f16tof32(r0.w);
r0.w = (uint)r0.w >> 16;
r0.w = cmp((int)r0.w == (int)r1.w);
r2.y = r2.y + -r2.x;
r2.y = saturate(10 * abs(r2.y));
r0.w = r0.w ? r2.y : 1;
r2.yzw = -r14.xyz + r1.xyz;
r2.yzw = r0.www * r2.yzw + r14.xyz;
r2.yzw = r2.yzw * r5.xyz;
r2.yzw = max(float3(0,0,0), r2.yzw);
r0.xyz = r2.yzw + r0.xyz;
r3.xy = (int2)r3.zw;
r3.zw = float2(0,0);
r0.w = SubSurfaceParam.Load(r3.xyz).x;
r2.y = f16tof32(r0.w);
r0.w = (uint)r0.w >> 16;
r0.w = cmp((int)r0.w == (int)r1.w);
r2.y = r2.y + -r2.x;
r2.y = saturate(10 * abs(r2.y));
r0.w = r0.w ? r2.y : 1;
r2.yzw = -r15.xyz + r1.xyz;
r2.yzw = r0.www * r2.yzw + r15.xyz;
r2.yzw = r2.yzw * r6.xyz;
r2.yzw = max(float3(0,0,0), r2.yzw);
r0.xyz = r2.yzw + r0.xyz;
r2.yz = screenSize.xy * r13.xw;
r3.xy = (int2)r2.yz;
r3.zw = float2(0,0);
r0.w = SubSurfaceParam.Load(r3.xyz).x;
r2.y = f16tof32(r0.w);
r0.w = (uint)r0.w >> 16;
r0.w = cmp((int)r0.w == (int)r1.w);
r2.y = r2.y + -r2.x;
r2.y = saturate(10 * abs(r2.y));
r0.w = r0.w ? r2.y : 1;
r2.yzw = -r16.xyz + r1.xyz;
r2.yzw = r0.www * r2.yzw + r16.xyz;
r2.yzw = r2.yzw * r7.xyz;
r2.yzw = max(float3(0,0,0), r2.yzw);
r0.xyz = r2.yzw + r0.xyz;
r3.xyzw = screenSize.xyxy * r17.zwyw;
r4.xy = (int2)r3.xy;
r4.zw = float2(0,0);
r0.w = SubSurfaceParam.Load(r4.xyz).x;
r2.y = f16tof32(r0.w);
r0.w = (uint)r0.w >> 16;
r0.w = cmp((int)r0.w == (int)r1.w);
r2.y = r2.y + -r2.x;
r2.y = saturate(10 * abs(r2.y));
r0.w = r0.w ? r2.y : 1;
r2.yzw = -r18.xyz + r1.xyz;
r2.yzw = r0.www * r2.yzw + r18.xyz;
r2.yzw = r2.yzw * r8.xyz;
r2.yzw = max(float3(0,0,0), r2.yzw);
r0.xyz = r2.yzw + r0.xyz;
r3.xy = (int2)r3.zw;
r3.zw = float2(0,0);
r0.w = SubSurfaceParam.Load(r3.xyz).x;
r2.y = f16tof32(r0.w);
r0.w = (uint)r0.w >> 16;
r0.w = cmp((int)r0.w == (int)r1.w);
r2.y = r2.y + -r2.x;
r2.y = saturate(10 * abs(r2.y));
r0.w = r0.w ? r2.y : 1;
r2.yzw = -r19.xyz + r1.xyz;
r2.yzw = r0.www * r2.yzw + r19.xyz;
r2.yzw = r2.yzw * r9.xyz;
r2.yzw = max(float3(0,0,0), r2.yzw);
r0.xyz = r2.yzw + r0.xyz;
r2.yz = screenSize.xy * r17.xw;
r3.xy = (int2)r2.yz;
r3.zw = float2(0,0);
r0.w = SubSurfaceParam.Load(r3.xyz).x;
r2.y = f16tof32(r0.w);
r0.w = (uint)r0.w >> 16;
r0.w = cmp((int)r0.w == (int)r1.w);
r1.w = r2.y + -r2.x;
r1.w = saturate(10 * abs(r1.w));
r0.w = r0.w ? r1.w : 1;
r2.xyz = -r20.xyz + r1.xyz;
r2.xyz = r0.www * r2.xyz + r20.xyz;
r2.xyz = r2.xyz * r10.xyz;
r2.xyz = max(float3(0,0,0), r2.xyz);
o0.xyz = r2.xyz + r0.xyz;
} else {
o0.xyz = r1.xyz;
}
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// using 3Dmigoto v1.2.51 on Wed Dec 21 19:47:21 2016
//
//
// Buffer Definitions:
//
// cbuffer SceneInfo
// {
//
// row_major float4x4 viewProjMat; // Offset: 0 Size: 64 [unused]
// row_major float4x4 viewMat; // Offset: 64 Size: 64 [unused]
// row_major float4x4 viewInvMat; // Offset: 128 Size: 64 [unused]
// row_major float4x4 projMat; // Offset: 192 Size: 64
// row_major float4x4 projInvMat; // Offset: 256 Size: 64 [unused]
// row_major float4x4 viewProjInvMat; // Offset: 320 Size: 64 [unused]
// row_major float4x4 prevViewProjMat;// Offset: 384 Size: 64 [unused]
// float3 prevCameraPos; // Offset: 448 Size: 12 [unused]
// float cameraNearPlane; // Offset: 460 Size: 4 [unused]
// float3 prevCameraDir; // Offset: 464 Size: 12 [unused]
// float cameraFarPlane; // Offset: 476 Size: 4 [unused]
// float4 viewFrustum[6]; // Offset: 480 Size: 96 [unused]
// float3 ZToLinear; // Offset: 576 Size: 12 [unused]
// float subdivisionLevel; // Offset: 588 Size: 4 [unused]
// float2 screenSize; // Offset: 592 Size: 8
// float2 screenInverseSize; // Offset: 600 Size: 8
//
// }
//
// Resource bind info for BakedGaussianProfiles
// {
//
// struct BakedGaussianProfile
// {
//
// float4 mGaussianKernel[9]; // Offset: 0
// float2 mScreenRadiusCoeff; // Offset: 144
//
// } $Element; // Offset: 0 Size: 152
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// PointWrap sampler NA NA 0 1
// BilinearWrap sampler NA NA 1 1
// DiffuseBuffer texture float3 2d 0 1
// SubSurfaceParam texture uint 2d 1 1
// BakedGaussianProfiles texture struct r/o 2 1
// SceneInfo cbuffer NA NA 0 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float xy
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyz 0 TARGET float xyz
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[38], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (uint,uint,uint,uint) t1
dcl_resource_structured t2, 152
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyz
dcl_temps 22
mul r0.zw, v0.xxxy, cb0[37].zzzw
sample_indexable(texture2d)(float,float,float,float) r1.xyz, r0.zwzz, t0.xyzw, s0
ftou r2.xy, v0.xyxx
mov r2.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r1.w, r2.xyzw, t1.yzwx
f16tof32 r2.x, r1.w
ushr r1.w, r1.w, l(16)
ult r2.y, r1.w, l(7)
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r3.xyzw, r1.w, l(16), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r4.xyzw, r1.w, l(32), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r5.xyzw, r1.w, l(48), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r6.xyzw, r1.w, l(64), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r7.xyzw, r1.w, l(80), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r8.xyzw, r1.w, l(96), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r9.xyzw, r1.w, l(112), t2.xyzw
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r10.xyzw, r1.w, l(128), t2.xyzw
mad r2.z, -r2.x, cb0[14].w, cb0[15].w
div r2.z, cb0[13].y, r2.z
mul r2.z, r2.z, cb0[37].x
mul r2.z, r2.z, l(0.250000)
mul r2.w, r2.z, r3.w
mad r0.y, r2.w, l(0.000030), r0.z
sample_indexable(texture2d)(float,float,float,float) r11.xyz, r0.ywyy, t0.xyzw, s1
mul r2.w, r2.z, r4.w
mad r0.x, r2.w, l(0.000030), r0.z
sample_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xwxx, t0.xyzw, s1
mul r2.w, r2.z, r5.w
mad r13.z, r2.w, l(0.000030), r0.z
mov r13.w, r0.w
sample_indexable(texture2d)(float,float,float,float) r14.xyz, r13.zwzz, t0.xyzw, s1
mul r2.w, r2.z, r6.w
mad r13.y, r2.w, l(0.000030), r0.z
sample_indexable(texture2d)(float,float,float,float) r15.xyz, r13.ywyy, t0.xyzw, s1
mul r2.w, r2.z, r7.w
mad r13.x, r2.w, l(0.000030), r0.z
sample_indexable(texture2d)(float,float,float,float) r16.xyz, r13.xwxx, t0.xyzw, s1
mul r2.w, r2.z, r8.w
mad r17.z, r2.w, l(0.000030), r0.z
mov r17.w, r13.w
sample_indexable(texture2d)(float,float,float,float) r18.xyz, r17.zwzz, t0.xyzw, s1
mul r2.w, r2.z, r9.w
mad r17.y, r2.w, l(0.000030), r0.z
sample_indexable(texture2d)(float,float,float,float) r19.xyz, r17.ywyy, t0.xyzw, s1
mul r2.z, r2.z, r10.w
mad r17.x, r2.z, l(0.000030), r0.z
sample_indexable(texture2d)(float,float,float,float) r20.xyz, r17.xwxx, t0.xyzw, s1
if_nz r2.y
ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r2.yzw, r1.w, l(0), t2.xxyz
mul r0.xyzw, r0.ywxw, cb0[37].xyxy
ftoi r21.xy, r0.xyxx
mov r21.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.x, r21.xyzw, t1.xyzw
f16tof32 r0.y, r0.x
ushr r0.x, r0.x, l(16)
ieq r0.x, r0.x, r1.w
add r0.y, -r2.x, r0.y
mul_sat r0.y, |r0.y|, l(10.000000)
movc r0.x, r0.x, r0.y, l(1.000000)
add r21.xyz, r1.xyzx, -r11.xyzx
mad r11.xyz, r0.xxxx, r21.xyzx, r11.xyzx
mul r3.xyz, r3.xyzx, r11.xyzx
max r3.xyz, r3.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
mad r2.yzw, r1.xxyz, r2.yyzw, r3.xxyz
ftoi r0.xy, r0.zwzz
mov r0.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.x, r0.xyzw, t1.xyzw
f16tof32 r0.y, r0.x
ushr r0.x, r0.x, l(16)
ieq r0.x, r0.x, r1.w
add r0.y, -r2.x, r0.y
mul_sat r0.y, |r0.y|, l(10.000000)
movc r0.x, r0.x, r0.y, l(1.000000)
add r0.yzw, r1.xxyz, -r12.xxyz
mad r0.xyz, r0.xxxx, r0.yzwy, r12.xyzx
mul r0.xyz, r4.xyzx, r0.xyzx
max r0.xyz, r0.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.xyz, r0.xyzx, r2.yzwy
mul r3.xyzw, r13.zwyw, cb0[37].xyxy
ftoi r4.xy, r3.xyxx
mov r4.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r4.xyzw, t1.yzwx
f16tof32 r2.y, r0.w
ushr r0.w, r0.w, l(16)
ieq r0.w, r0.w, r1.w
add r2.y, -r2.x, r2.y
mul_sat r2.y, |r2.y|, l(10.000000)
movc r0.w, r0.w, r2.y, l(1.000000)
add r2.yzw, r1.xxyz, -r14.xxyz
mad r2.yzw, r0.wwww, r2.yyzw, r14.xxyz
mul r2.yzw, r5.xxyz, r2.yyzw
max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.xyz, r0.xyzx, r2.yzwy
ftoi r3.xy, r3.zwzz
mov r3.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx
f16tof32 r2.y, r0.w
ushr r0.w, r0.w, l(16)
ieq r0.w, r0.w, r1.w
add r2.y, -r2.x, r2.y
mul_sat r2.y, |r2.y|, l(10.000000)
movc r0.w, r0.w, r2.y, l(1.000000)
add r2.yzw, r1.xxyz, -r15.xxyz
mad r2.yzw, r0.wwww, r2.yyzw, r15.xxyz
mul r2.yzw, r6.xxyz, r2.yyzw
max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.xyz, r0.xyzx, r2.yzwy
mul r2.yz, r13.xxwx, cb0[37].xxyx
ftoi r3.xy, r2.yzyy
mov r3.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx
f16tof32 r2.y, r0.w
ushr r0.w, r0.w, l(16)
ieq r0.w, r0.w, r1.w
add r2.y, -r2.x, r2.y
mul_sat r2.y, |r2.y|, l(10.000000)
movc r0.w, r0.w, r2.y, l(1.000000)
add r2.yzw, r1.xxyz, -r16.xxyz
mad r2.yzw, r0.wwww, r2.yyzw, r16.xxyz
mul r2.yzw, r7.xxyz, r2.yyzw
max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.xyz, r0.xyzx, r2.yzwy
mul r3.xyzw, r17.zwyw, cb0[37].xyxy
ftoi r4.xy, r3.xyxx
mov r4.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r4.xyzw, t1.yzwx
f16tof32 r2.y, r0.w
ushr r0.w, r0.w, l(16)
ieq r0.w, r0.w, r1.w
add r2.y, -r2.x, r2.y
mul_sat r2.y, |r2.y|, l(10.000000)
movc r0.w, r0.w, r2.y, l(1.000000)
add r2.yzw, r1.xxyz, -r18.xxyz
mad r2.yzw, r0.wwww, r2.yyzw, r18.xxyz
mul r2.yzw, r8.xxyz, r2.yyzw
max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.xyz, r0.xyzx, r2.yzwy
ftoi r3.xy, r3.zwzz
mov r3.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx
f16tof32 r2.y, r0.w
ushr r0.w, r0.w, l(16)
ieq r0.w, r0.w, r1.w
add r2.y, -r2.x, r2.y
mul_sat r2.y, |r2.y|, l(10.000000)
movc r0.w, r0.w, r2.y, l(1.000000)
add r2.yzw, r1.xxyz, -r19.xxyz
mad r2.yzw, r0.wwww, r2.yyzw, r19.xxyz
mul r2.yzw, r9.xxyz, r2.yyzw
max r2.yzw, r2.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.xyz, r0.xyzx, r2.yzwy
mul r2.yz, r17.xxwx, cb0[37].xxyx
ftoi r3.xy, r2.yzyy
mov r3.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.w, r3.xyzw, t1.yzwx
f16tof32 r2.y, r0.w
ushr r0.w, r0.w, l(16)
ieq r0.w, r0.w, r1.w
add r1.w, -r2.x, r2.y
mul_sat r1.w, |r1.w|, l(10.000000)
movc r0.w, r0.w, r1.w, l(1.000000)
add r2.xyz, r1.xyzx, -r20.xyzx
mad r2.xyz, r0.wwww, r2.xyzx, r20.xyzx
mul r2.xyz, r10.xyzx, r2.xyzx
max r2.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
add o0.xyz, r0.xyzx, r2.xyzx
else
mov o0.xyz, r1.xyzx
endif
ret
// Approximately 169 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/


No idea about how to fix that. After that, I played the demo in 2D at 120fps.

If you want to manually fix this one, examples of how this works are:
https://github.com/bo3b/3Dmigoto/blob/7c88e11b58d572e72d37414fc0505dd0ef989132/Alien/61e6239dad56786e-vs_replace.txt
https://github.com/bo3b/3Dmigoto/blob/1ad5864608c52015f7e35b6af60d94dd01e1d599/MirrorsEdge/e6db2e1b78527470-cs_replace.txt
https://github.com/bo3b/3Dmigoto/blob/7c88e11b58d572e72d37414fc0505dd0ef989132/JC3/f064c0539aaa5254-vs_replace.txt


The basic idea is to copy the struct referenced from the ASM side, and make a t* reference for it.

In this case it will be something like:
...

struct BakedGaussianProfile
{

float4 mGaussianKernel[9]; // Offset: 0
float2 mScreenRadiusCoeff; // Offset: 144

} ; // Offset: 0 Size: 152

StructuredBuffer<BakedGaussianProfile> BakedGaussianProfiles: register(t2);

// ld_structured_indexable(structured_buffer, stride=152)(mixed,mixed,mixed,mixed) r3.xyzw, r1.w, l(16), t2.xyzw
r3.xyzw = BakedGaussianProfiles[r1.w].mGaussianKernel[1].xyzw;



If that doesn't seem to make any sense, and you need this shader, let me know and I'll do a complete pass on it, including fxc recompile.

Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers

#30
Posted 12/22/2016 02:49 AM   
  2 / 23    
Scroll To Top