For Honor - 3D vision
  1 / 4    
Hey guys, you can play at the moment the beta for free on Uplay. I wonder why no one said a word on 3D vision so far? I think it is very decent, shadows and some light effects are broken of course. But it seems that our magicians might be able to fix it. Actually, they are able to fix everything. Thumbs up! It is mostly a multiplayer game. I know the interest in fixing those is very low. But however, since the gameplay is decent, not spectacular, I think this game could win some more points in the hearts of 3D vision gamers. I will post later some pictures. If anyone is interested and has not yet started to play the beta.
Hey guys, you can play at the moment the beta for free on Uplay. I wonder why no one said a word on 3D vision so far?

I think it is very decent, shadows and some light effects are broken of course. But it seems that our magicians might be able to fix it. Actually, they are able to fix everything. Thumbs up!

It is mostly a multiplayer game. I know the interest in fixing those is very low. But however, since the gameplay is decent, not spectacular, I think this game could win some more points in the hearts of 3D vision gamers.

I will post later some pictures. If anyone is interested and has not yet started to play the beta.

Intel Core i7-3820, 4 X 3,60 GHz overclocked to 4,50 GHz ; EVGA Titan X 12VRAM ; 16 GB Corsair Vengeance DDR-1600 (4x 4 GB) ; Asus VG278H 27-inch incl. 3D vision 2 glasses, integrated transmitter ; Xbox One Elite wireless controller ; Windows 10HTC VIVE 2,5 m2 roomscale3D VISION GAMERS - VISIT ME ON STEAM and feel free to add me: http://steamcommunity.com/profiles/76561198064106555 YOUTUBE: https://www.youtube.com/channel/UC1UE5TPoF0HX0HVpF_E4uPQ STEAM CURATOR: https://store.steampowered.com/curator/33611530-Streaming-Deluxe/ Image

#1
Posted 01/28/2017 11:33 AM   
This game may have the main focus on the MP but still offers a full fledged Single-Player campaign! Also while people were worried that this visually impressive game could also fall victim to the graphics-downgrade syndrome it turned out the exact opposite. The game's visuals have drastically improved since E3 2015: [url]http://n4g.com/news/2010669/for-honor-e3-2015-vs-2017-ps4-beta-graphics-comparison-shows-massive-improvement[/url] Campaign Trailer: [url]https://www.youtube.com/watch?v=OAhRU5dEqYc[/url] Campaign Let's Play: [url]https://www.youtube.com/watch?v=VtG0TY048GM[/url]
This game may have the main focus on the MP but still offers a full fledged Single-Player campaign!
Also while people were worried that this visually impressive game could also fall victim to the graphics-downgrade syndrome it turned out the exact opposite. The game's visuals have drastically improved since E3 2015:

http://n4g.com/news/2010669/for-honor-e3-2015-vs-2017-ps4-beta-graphics-comparison-shows-massive-improvement

Campaign Trailer:

" rel="nofollow" target = "_blank">


Campaign Let's Play:

" rel="nofollow" target = "_blank">

#2
Posted 01/28/2017 01:25 PM   
I agree Lohan. The game looks in general good and I don't see any downgrade. On the other hand I will get only 25 FPS everything ultra exept motion blurr in 3D. So there is still room for improvement in terms of performance or I have to lower my graphics of course. The Single player is interesting. I will decide on the basis of its quality whether or not to buy the game day one.
I agree Lohan. The game looks in general good and I don't see any downgrade. On the other hand I will get only 25 FPS everything ultra exept motion blurr in 3D. So there is still room for improvement in terms of performance or I have to lower my graphics of course. The Single player is interesting. I will decide on the basis of its quality whether or not to buy the game day one.

Intel Core i7-3820, 4 X 3,60 GHz overclocked to 4,50 GHz ; EVGA Titan X 12VRAM ; 16 GB Corsair Vengeance DDR-1600 (4x 4 GB) ; Asus VG278H 27-inch incl. 3D vision 2 glasses, integrated transmitter ; Xbox One Elite wireless controller ; Windows 10HTC VIVE 2,5 m2 roomscale3D VISION GAMERS - VISIT ME ON STEAM and feel free to add me: http://steamcommunity.com/profiles/76561198064106555 YOUTUBE: https://www.youtube.com/channel/UC1UE5TPoF0HX0HVpF_E4uPQ STEAM CURATOR: https://store.steampowered.com/curator/33611530-Streaming-Deluxe/ Image

#3
Posted 01/28/2017 01:53 PM   
I'm lukewarm on it. Now that I can get into the beta, it's...okay? The combat doesn't feel as fun as Chivalry, and the fact that it's entirely P2P turns me off a lot.
I'm lukewarm on it. Now that I can get into the beta, it's...okay? The combat doesn't feel as fun as Chivalry, and the fact that it's entirely P2P turns me off a lot.

#4
Posted 01/28/2017 05:27 PM   
Actually, I am not sure if it "entirely P2P". There might be some DLCs and microstransactions to be better, but not that you pay to play. This actually does not really bother me a lot, as long as I can play a nice campagne, some fun rounds of multiplayer where I can still get better via grinding. My biggest subject with the game is this weird fight mechanic where they are so proud about. It is just so confusing in a huge battle. Sure, I can learn this, but even after 2 hours it did not really make fun. I think I am more one of those simple gamers. ;)
Actually, I am not sure if it "entirely P2P". There might be some DLCs and microstransactions to be better, but not that you pay to play. This actually does not really bother me a lot, as long as I can play a nice campagne, some fun rounds of multiplayer where I can still get better via grinding. My biggest subject with the game is this weird fight mechanic where they are so proud about. It is just so confusing in a huge battle. Sure, I can learn this, but even after 2 hours it did not really make fun. I think I am more one of those simple gamers. ;)

Intel Core i7-3820, 4 X 3,60 GHz overclocked to 4,50 GHz ; EVGA Titan X 12VRAM ; 16 GB Corsair Vengeance DDR-1600 (4x 4 GB) ; Asus VG278H 27-inch incl. 3D vision 2 glasses, integrated transmitter ; Xbox One Elite wireless controller ; Windows 10HTC VIVE 2,5 m2 roomscale3D VISION GAMERS - VISIT ME ON STEAM and feel free to add me: http://steamcommunity.com/profiles/76561198064106555 YOUTUBE: https://www.youtube.com/channel/UC1UE5TPoF0HX0HVpF_E4uPQ STEAM CURATOR: https://store.steampowered.com/curator/33611530-Streaming-Deluxe/ Image

#5
Posted 01/28/2017 06:50 PM   
By P2P, I mean peer-to-peer multiplayer - no dedicated servers. So if the host leaves, the match ends.
By P2P, I mean peer-to-peer multiplayer - no dedicated servers. So if the host leaves, the match ends.

#6
Posted 01/29/2017 04:16 AM   
Hmm I think in this kind of game servers can be a bad thing unless the netcode is really good, it's just adding more ping and another loop to jump through. I am actually having a bit of fun with this, although I am not very good at it yet. What profile is everyone using for CM mode? When I use AC syndicate it creates alot of flickering.
Hmm I think in this kind of game servers can be a bad thing unless the netcode is really good, it's just adding more ping and another loop to jump through.

I am actually having a bit of fun with this, although I am not very good at it yet.

What profile is everyone using for CM mode? When I use AC syndicate it creates alot of flickering.

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

#7
Posted 01/29/2017 06:28 AM   
[quote="Pirateguybrush"]By P2P, I mean peer-to-peer multiplayer - no dedicated servers. So if the host leaves, the match ends.[/quote] ah okay, so I misunderstood. Gamers and there abbreviations, almost as bad as in Gouvernement... ;) No, didn't see any problem with this. Sure there was some kind of host migration for 2 seconds, but not that it bothers me. The thing, people have so high expectations in gaming, the minor thing become immediately a game changer. I mean people complain about Black Ops 3 not having dedicated servers and this game is one of the most perfect products I have in my library (netcode, performance, optimization like). Or The Division, this runs also absolutely perfect and people complain about whatdoIknow. *** Did not check CM profiles yet. I am also interested, if someone finds one.
Pirateguybrush said:By P2P, I mean peer-to-peer multiplayer - no dedicated servers. So if the host leaves, the match ends.


ah okay, so I misunderstood. Gamers and there abbreviations, almost as bad as in Gouvernement... ;)

No, didn't see any problem with this. Sure there was some kind of host migration for 2 seconds, but not that it bothers me.

The thing, people have so high expectations in gaming, the minor thing become immediately a game changer. I mean people complain about Black Ops 3 not having dedicated servers and this game is one of the most perfect products I have in my library (netcode, performance, optimization like). Or The Division, this runs also absolutely perfect and people complain about whatdoIknow.

***

Did not check CM profiles yet. I am also interested, if someone finds one.

Intel Core i7-3820, 4 X 3,60 GHz overclocked to 4,50 GHz ; EVGA Titan X 12VRAM ; 16 GB Corsair Vengeance DDR-1600 (4x 4 GB) ; Asus VG278H 27-inch incl. 3D vision 2 glasses, integrated transmitter ; Xbox One Elite wireless controller ; Windows 10HTC VIVE 2,5 m2 roomscale3D VISION GAMERS - VISIT ME ON STEAM and feel free to add me: http://steamcommunity.com/profiles/76561198064106555 YOUTUBE: https://www.youtube.com/channel/UC1UE5TPoF0HX0HVpF_E4uPQ STEAM CURATOR: https://store.steampowered.com/curator/33611530-Streaming-Deluxe/ Image

#8
Posted 01/29/2017 10:54 AM   
For some games where ping is a huge factor and they can't do alot of the prediction stuff and algorithms that are possible in a shooter unfortunately sometimes p2p is the only real option, and a server based network play would actually make it worse. Fighting games are a good example of this and after playing this game over the weekend It does share a lot of fighting game like mechanics, especially in terms of the timed parries requiring the correct directional defense response with a very short window. or as someone else said it probably better. "P2P does not mean it's worse than having a dedicated server. In fact if properly implemented it's better than any dedicated server model, as you cut the package travel time in half (client->server->client vs client->client). All fighting games use P2P, the games where netcode is the most important, and the best that use rollback netcode (GGPO) are so good that it feels like you're playing offline." Most of the time this game is 1v1 and I think the netcode is prioritised for this and for the most part the matchmaking and quality of the matches were good for me, with no discernible roll backs or input delay, and this is saying something as I live on the very ass of the world surrounded by ocean. :P The only thing I noticed was a brief pause when the host left, which was fine. I am a bit biased maybe because I live in New zealand and they often don't even give us dedicated servers and we have to connect to a server that's 200ping. This would make this game unplayable for us. Game is fun I haven't looked into it much though so not sure what kind of content is set for release but I heard there is a large single player campaign so this shouldn't be another "Battlefield" situation. As for 3dvision. I was able to get it working pretty good in CM mode with the Assassins Creed Syndicate profile but you have to use the SLI bits the game tries to start with by default, as the AC bits cause massive flickering. It actually doesn't look so bad in 3dvision auto even some of the shadows seemed correct, but there is this wierd blurring effect going on making it unplayable. Hopefully on release one of the gurus takes an interest.
For some games where ping is a huge factor and they can't do alot of the prediction stuff and algorithms that are possible in a shooter unfortunately sometimes p2p is the only real option, and a server based network play would actually make it worse. Fighting games are a good example of this and after playing this game over the weekend It does share a lot of fighting game like mechanics, especially in terms of the timed parries requiring the correct directional defense response with a very short window.

or as someone else said it probably better.

"P2P does not mean it's worse than having a dedicated server. In fact if properly implemented it's better than any dedicated server model, as you cut the package travel time in half (client->server->client vs client->client). All fighting games use P2P, the games where netcode is the most important, and the best that use rollback netcode (GGPO) are so good that it feels like you're playing offline."

Most of the time this game is 1v1 and I think the netcode is prioritised for this and for the most part the matchmaking and quality of the matches were good for me, with no discernible roll backs or input delay, and this is saying something as I live on the very ass of the world surrounded by ocean. :P

The only thing I noticed was a brief pause when the host left, which was fine.

I am a bit biased maybe because I live in New zealand and they often don't even give us dedicated servers and we have to connect to a server that's 200ping. This would make this game unplayable for us.

Game is fun I haven't looked into it much though so not sure what kind of content is set for release but I heard there is a large single player campaign so this shouldn't be another "Battlefield" situation.

As for 3dvision.

I was able to get it working pretty good in CM mode with the Assassins Creed Syndicate profile but you have to use the SLI bits the game tries to start with by default, as the AC bits cause massive flickering.

It actually doesn't look so bad in 3dvision auto even some of the shadows seemed correct, but there is this wierd blurring effect going on making it unplayable. Hopefully on release one of the gurus takes an interest.

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

#9
Posted 01/30/2017 12:35 AM   
Just received my For Honor Collector's Ediiton a few days early! Quality-wise this seems to be the most awesome Collector's Edition I ever bought. Everything is full metal and the Samurai helmet/head alone weighs in at 2.3 lbs. If the game gets the blessing of our fixers (fingers crossed) the PS4 copy will be switched with the PC version of course...... I added a few pictures of the Collector's Edition!
Just received my For Honor Collector's Ediiton a few days early! Quality-wise this seems to be the most awesome Collector's Edition I ever bought. Everything is full metal and the Samurai helmet/head alone weighs in at 2.3 lbs.

If the game gets the blessing of our fixers (fingers crossed) the PS4 copy will be switched with the PC version of course......

I added a few pictures of the Collector's Edition!

#10
Posted 02/11/2017 05:10 PM   
[quote="lohan"]Just received my For Honor Collector's Ediiton a few days early! Quality-wise this seems to be the most awesome Collector's Edition I ever bought. Everything is full metal and the Samurai helmet/head alone weighs in at 2.3 lbs. If the game gets the blessing of our fixers (fingers crossed) the PS4 copy will be switched with the PC version of course...... I added a few pictures of the Collector's Edition![/quote] Meh... more over priced "dust collectors"... I would have expected at least to buy the PC version mate... but PS4??? Really??? Anyway looks nice :)
lohan said:Just received my For Honor Collector's Ediiton a few days early! Quality-wise this seems to be the most awesome Collector's Edition I ever bought. Everything is full metal and the Samurai helmet/head alone weighs in at 2.3 lbs.

If the game gets the blessing of our fixers (fingers crossed) the PS4 copy will be switched with the PC version of course......

I added a few pictures of the Collector's Edition!


Meh... more over priced "dust collectors"... I would have expected at least to buy the PC version mate... but PS4??? Really???

Anyway looks nice :)

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)

#11
Posted 02/12/2017 12:13 AM   
It seems I need to clarify my PS4 purchase! :-) I have a weakness for those nice and shiny Collector's Editions. At the same time I am pretty aware that these Editions are usually significantly overpriced and almost always end up as cumbersome dust collectors. So I have made it a habit to buy those Collector's Editions just to keep and enjoy them for a few days before I resell them...usually for a significantly higher price than the price I paid (they usually sell out very fast). But since the PS4 version always is the market's most attractive version I usually get the PS4 version for this purpose alone. In case of a fix I will get the PC version of course! I am not planning to open and install the PS4 version that I already own as long as there is no confirmation that no one will fix the game. But I have to admit that this For Honor Collector's Edition is an absolute thing of beauty and at the same time even the price tag is quite reasonable compared to other Collector's Editions. This Edition has the Gold Edition of the Game included (game plus DLC plus Season Pass) which alone already costs you 90EUR/99$ (PS4). Then there is the Soundtrack, some kind of nice and big litography, the beautiful Collector's box and of course the magnificent looking AND feeling Helmet display that has nothing to do with the cheap plastic stuff we all are used to when it comes to Collector's Editions. This helmet display means business quality- and look-wise. Being all metal it also has a hefty weight and I mean hefty. So I guess this time it won't be put up for selling, I will keep it instead! The game itself will be switched with the PC-version (in case we will see a fix)!
It seems I need to clarify my PS4 purchase! :-)

I have a weakness for those nice and shiny Collector's Editions. At the same time I am pretty aware that these Editions are usually significantly overpriced and almost always end up as cumbersome dust collectors. So I have made it a habit to buy those Collector's Editions just to keep and enjoy them for a few days before I resell them...usually for a significantly higher price than the price I paid (they usually sell out very fast). But since the PS4 version always is the market's most attractive version I usually get the PS4 version for this purpose alone.

In case of a fix I will get the PC version of course! I am not planning to open and install the PS4 version that I already own as long as there is no confirmation that no one will fix the game.

But I have to admit that this For Honor Collector's Edition is an absolute thing of beauty and at the same time even the price tag is quite reasonable compared to other Collector's Editions. This Edition has the Gold Edition of the Game included (game plus DLC plus Season Pass) which alone already costs you 90EUR/99$ (PS4).
Then there is the Soundtrack, some kind of nice and big litography, the beautiful Collector's box and of course the magnificent looking AND feeling Helmet display that has nothing to do with the cheap plastic stuff we all are used to when it comes to Collector's Editions. This helmet display means business quality- and look-wise. Being all metal it also has a hefty weight and I mean hefty.

So I guess this time it won't be put up for selling, I will keep it instead! The game itself will be switched with the PC-version (in case we will see a fix)!

#12
Posted 02/12/2017 11:15 AM   
Aha! I think I've spotted an "investor" ;)) I agree the quality on the stand + Helms looks astonishing good;) I never thought about it like that! Makes sense to buy the PS4 variant as you can probably re-sell it faster afterwards too;) I am on the fence with this game though;) It looks interesting though;) Fixing wise, what engine does it use? Dunia Engine ? I know DSS is a master of that engine. I never fixed anything in it. Edit: NVM it uses Anvil Next engine. Games using this engine: AnvilNext 2.0 game engine Assassin's Creed Unity (2014) Assassin's Creed Syndicate (2015) Tom Clancy's Rainbow Six Siege (2015) Steep (2016) For Honor (2017) Tom Clancy's Ghost Recon Wildlands (2017) From that list I don't think we have fixed any of them for 3D Vision... So, I am not sure how easy it will be to fix it...
Aha! I think I've spotted an "investor" ;))

I agree the quality on the stand + Helms looks astonishing good;) I never thought about it like that! Makes sense to buy the PS4 variant as you can probably re-sell it faster afterwards too;)

I am on the fence with this game though;) It looks interesting though;)
Fixing wise, what engine does it use? Dunia Engine ? I know DSS is a master of that engine. I never fixed anything in it.

Edit:
NVM it uses Anvil Next engine. Games using this engine:

AnvilNext 2.0 game engine
Assassin's Creed Unity (2014)
Assassin's Creed Syndicate (2015)
Tom Clancy's Rainbow Six Siege (2015)
Steep (2016)
For Honor (2017)
Tom Clancy's Ghost Recon Wildlands (2017)

From that list I don't think we have fixed any of them for 3D Vision... So, I am not sure how easy it will be to fix it...

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)

#13
Posted 02/12/2017 12:30 PM   
I hope someone will try and success. Unity (architecture) and Wildlands (environnements) seems cool.
I hope someone will try and success.

Unity (architecture) and Wildlands (environnements) seems cool.

#14
Posted 02/12/2017 01:48 PM   
After spending some time with the Open Beta today: - The game is pretty busted. For some reason only having 3D Vision enabled gives me an "interlaced" view even in 2D. I have to disable 3D Vision completely to get rid of it... - Pretty much everything generates halos and most effect looks wrong.... Anyone else noticed this? While the second point could in theory be fixed from the shaders, the first point looks like is driver generated and have no idea how to fix it... Edit: It seems that a combination of Surround + 3D Vision + SLI is what makes the game render in an "interlaced" format... It seems the headers in the shaders are stripped (what a surprise....). This is how the Shadows Shader looks like: [code] // ---- Created with 3Dmigoto v1.2.56 on Sun Feb 12 18:54:33 2017 Texture2D<float4> t6 : register(t6); Texture2D<float4> t5 : register(t5); Texture2D<float4> t4 : register(t4); Texture2D<float4> t3 : register(t3); Texture2D<float4> t2 : register(t2); Texture2D<float4> t1 : register(t1); Texture2D<float4> t0 : register(t0); SamplerComparisonState s2_s : register(s2); SamplerState s1_s : register(s1); SamplerState s0_s : register(s0); cbuffer cb1 : register(b1) { float4 cb1[42]; } cbuffer cb0 : register(b0) { float4 cb0[2]; } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : SV_Position0, float4 v1 : TEXCOORD0, float3 v2 : TEXCOORD1, out float o0 : SV_Target0) { const float4 icb[] = { { 1.000000, 0, 0, 0}, { 0, 1.000000, 0, 0}, { 0, 0, 1.000000, 0}, { 0, 0, 0, 1.000000} }; float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17; uint4 bitmask, uiDest; float4 fDest; r0.x = t0.Sample(s0_s, v1.xy).x; r0.xyz = v2.xyz * r0.xxx; r0.w = dot(v2.xyz, cb0[1].xyz); r0.xyz = r0.xyz / r0.www; r1.xyz = cb1[1].xyz * r0.yyy; r1.xyz = cb1[0].xyz * r0.xxx + r1.xyz; r1.xyz = cb1[2].xyz * r0.zzz + r1.xyz; r1.xyz = cb1[3].xyz + r1.xyz; r2.xyz = r1.xyz * cb1[8].xyz + cb1[12].xyz; r3.xyz = r1.xyz * cb1[9].xyz + cb1[13].xyz; r4.xyz = r1.xyz * cb1[10].xyz + cb1[14].xyz; r1.xyz = r1.xyz * cb1[11].xyz + cb1[15].xyz; r5.x = r2.y; r5.y = r3.y; r5.z = r4.y; r5.w = r1.y; r6.xyzw = cmp(r5.xyzw >= cb1[18].xyzw); r6.xyzw = r6.xyzw ? float4(1,1,1,1) : 0; r7.x = r2.x; r7.y = r3.x; r7.z = r4.x; r7.w = r1.x; r8.xyzw = cmp(r7.xyzw >= cb1[16].xyzw); r8.xyzw = r8.xyzw ? float4(1,1,1,1) : 0; r6.xyzw = r8.xyzw * r6.xyzw; r8.x = r2.z; r8.y = r3.z; r8.z = r4.z; r8.w = r1.z; r9.xyzw = cmp(r8.xyzw >= float4(0,0,0,0)); r9.xyzw = r9.xyzw ? float4(1,1,1,1) : 0; r6.xyzw = r9.xyzw * r6.xyzw; r5.xyzw = cmp(cb1[19].xyzw >= r5.xyzw); r5.xyzw = r5.xyzw ? float4(1,1,1,1) : 0; r7.xyzw = cmp(cb1[17].xyzw >= r7.xyzw); r7.xyzw = r7.xyzw ? float4(1,1,1,1) : 0; r5.xyzw = r7.xyzw * r5.xyzw; r7.xyzw = cmp(float4(1,1,1,1) >= r8.xyzw); r7.xyzw = r7.xyzw ? float4(1,1,1,1) : 0; r5.xyzw = r7.xyzw * r5.xyzw; r5.xyzw = r6.xyzw * r5.xyzw; r6.xyz = cmp(float3(0,0,0) != r5.yzw); r0.w = r6.x ? 0.000000 : 0; r0.w = r6.y ? 2 : r0.w; r0.w = r6.z ? 3 : r0.w; r6.xyw = (int3)r0.www + int3(0,-1,-2); r1.xyz = r6.xxx ? r1.xyz : r2.xyz; r1.xyz = r6.yyy ? r1.xyz : r3.xyz; r1.xyz = r6.www ? r1.xyz : r4.xyz; r1.w = dot(r0.xyz, cb0[1].xyz); r7.xyzw = float4(1,4,4,4) * cb1[39].zzzz; r8.xyzw = r1.yxxx * r7.xyzw + float4(-2.5,-2.5,-2.5,-2.5); r6.xy = floor(r8.wx); r8.xyzw = r8.xyzw + -r6.yxxx; r9.xy = float2(0.25,1) * cb1[39].ww; r9.zw = r9.xy * r6.xy; r10.xyz = cmp(float3(0,0,0) != cb1[37].xyz); if (r10.x != 0) { r6.xy = r6.xy * r9.xy + r9.xy; r11.xyzw = t1.GatherCmp(s2_s, r6.xy, r1.z).xyzw; r12.xyzw = cb1[39].wwww * float4(0.75,1,1.25,1) + r9.zwzw; r13.xyzw = t1.GatherCmp(s2_s, r12.xy, r1.z).xyzw; r12.xyzw = t1.GatherCmp(s2_s, r12.zw, r1.z).xyzw; r14.xyzw = float4(0.535533905,1.53553391,1,1) + -r8.wwxw; r6.xy = saturate(r14.xy + -r8.xx); r2.w = r6.x * r6.x; r2.w = r2.w * r11.w; r6.xw = min(r14.zw, r6.yy); r14.xy = saturate(r14.xy); r15.xy = float2(1,1) + -r14.xy; r3.w = min(r15.x, r6.x); r4.w = -r3.w * 0.5 + r6.x; r3.w = r4.w * r3.w; r3.w = r6.x * r14.x + r3.w; r4.w = saturate(0.535533905 + -r8.x); r5.w = 1 + -r4.w; r6.x = min(r6.w, r5.w); r10.w = -r6.x * 0.5 + r6.w; r6.x = r10.w * r6.x; r6.x = r6.w * r4.w + r6.x; r6.w = -r8.x + -r8.w; r6.w = saturate(2.53553391 + r6.w); r10.w = 1 + -r6.y; r10.w = min(r10.w, r6.w); r11.w = -r10.w * 0.5 + r6.w; r10.w = r11.w * r10.w; r6.y = r6.w * r6.y + r10.w; r3.w = r11.z * r3.w; r2.w = r2.w * 0.5 + r3.w; r2.w = r11.x * r6.x + r2.w; r2.w = r11.y * r6.y + r2.w; r3.w = min(r15.y, r14.z); r6.x = -r3.w * 0.5 + r14.z; r3.w = r6.x * r3.w; r3.w = r14.z * r14.y + r3.w; r6.x = saturate(0.535533905 + r8.w); r6.y = 1 + -r6.x; r6.y = min(r14.z, r6.y); r6.w = -r6.y * 0.5 + r14.z; r6.y = r6.w * r6.y; r6.x = r14.z * r6.x + r6.y; r6.y = r8.w + r8.x; r6.y = saturate(-1.53553391 + r6.y); r6.y = r6.y * r6.y; r6.y = -r6.y * 0.5 + 1; r6.w = r14.w + r8.x; r6.w = saturate(-1.53553391 + r6.w); r6.w = r6.w * r6.w; r6.w = -r6.w * 0.5 + 1; r2.w = r13.w * r3.w + r2.w; r2.w = r13.z * r6.x + r2.w; r2.w = r13.x * r6.y + r2.w; r2.w = r13.y * r6.w + r2.w; r6.xy = float2(0.535533905,1) + -r14.ww; r3.w = saturate(r6.x + -r8.x); r3.w = r3.w * r3.w; r3.w = r3.w * r12.z; r6.w = -r14.w + -r8.x; r11.xy = saturate(float2(1.53553391,2.53553391) + r6.ww); r6.w = min(r14.z, r11.x); r6.x = saturate(r6.x); r10.w = 1 + -r6.x; r10.w = min(r10.w, r6.w); r11.z = -r10.w * 0.5 + r6.w; r10.w = r11.z * r10.w; r6.x = r6.w * r6.x + r10.w; r6.y = min(r11.x, r6.y); r5.w = min(r6.y, r5.w); r6.w = -r5.w * 0.5 + r6.y; r5.w = r6.w * r5.w; r4.w = r6.y * r4.w + r5.w; r5.w = 1 + -r11.x; r5.w = min(r11.y, r5.w); r6.y = -r5.w * 0.5 + r11.y; r5.w = r6.y * r5.w; r5.w = r11.y * r11.x + r5.w; r2.w = r12.w * r6.x + r2.w; r2.w = r3.w * 0.5 + r2.w; r2.w = r12.x * r5.w + r2.w; r2.w = r12.y * r4.w + r2.w; } else { r2.w = 0; } if (r10.y != 0) { r11.xyzw = cb1[39].wwww * float4(0.25,3,0.75,3) + r9.zwzw; r12.xyzw = t1.GatherCmp(s2_s, r11.xy, r1.z).xyzw; r11.xyzw = t1.GatherCmp(s2_s, r11.zw, r1.z).xyzw; r6.xy = cb1[39].ww * float2(1.25,3) + r9.zw; r13.xyzw = t1.GatherCmp(s2_s, r6.xy, r1.z).xyzw; r6.xyw = float3(1.53553391,1,1) + -r8.xwx; r6.x = saturate(r6.x); r3.w = 1 + -r6.x; r4.w = min(r6.y, r3.w); r5.w = -r4.w * 0.5 + r6.y; r4.w = r5.w * r4.w; r4.w = r6.y * r6.x + r4.w; r5.w = saturate(0.535533905 + r8.x); r10.w = 1 + -r5.w; r14.x = min(r10.w, r6.y); r14.y = -r14.x * 0.5 + r6.y; r14.x = r14.y * r14.x; r14.x = r6.y * r5.w + r14.x; r14.y = r8.x + r8.w; r14.y = saturate(-1.53553391 + r14.y); r14.y = r14.y * r14.y; r14.y = -r14.y * 0.5 + 1; r14.zw = r6.wy + r8.wx; r14.zw = saturate(float2(-1.53553391,-1.53553391) + r14.zw); r14.zw = r14.zw * r14.zw; r14.zw = -r14.zw * float2(0.5,0.5) + float2(1,1); r4.w = r12.w * r4.w + r2.w; r4.w = r12.z * r14.y + r4.w; r4.w = r12.x * r14.x + r4.w; r4.w = r12.y * r14.z + r4.w; r4.w = r4.w + r11.w; r4.w = r4.w + r11.z; r4.w = r4.w + r11.x; r4.w = r4.w + r11.y; r11.x = 1 + -r6.y; r3.w = min(r11.x, r3.w); r11.y = -r3.w * 0.5 + r11.x; r3.w = r11.y * r3.w; r3.w = r11.x * r6.x + r3.w; r6.x = min(r11.x, r10.w); r10.w = -r6.x * 0.5 + r11.x; r6.x = r10.w * r6.x; r5.w = r11.x * r5.w + r6.x; r6.x = r6.w + r6.y; r6.x = saturate(-1.53553391 + r6.x); r6.x = r6.x * r6.x; r6.x = -r6.x * 0.5 + 1; r4.w = r13.w * r14.w + r4.w; r3.w = r13.z * r3.w + r4.w; r3.w = r13.x * r6.x + r3.w; r2.w = r13.y * r5.w + r3.w; } if (r10.z != 0) { r11.xyzw = cb1[39].wwww * float4(0.25,5,0.75,5) + r9.zwzw; r12.xyzw = t1.GatherCmp(s2_s, r11.xy, r1.z).xyzw; r11.xyzw = t1.GatherCmp(s2_s, r11.zw, r1.z).xyzw; r6.xy = cb1[39].ww * float2(1.25,5) + r9.zw; r13.xyzw = t1.GatherCmp(s2_s, r6.xy, r1.z).xyzw; r14.xyzw = float4(0.535533905,1.53553391,1,1) + -r8.yzxw; r6.xy = saturate(r14.xy + -r14.zz); r3.w = r6.x * r6.x; r3.w = r3.w * r12.x; r15.xyzw = float4(1,0.535533905,0.535533905,1) + -r14.zzww; r4.w = min(r15.x, r6.y); r14.xy = saturate(r14.xy); r6.xw = float2(1,1) + -r14.xy; r5.w = min(r6.x, r4.w); r6.x = -r5.w * 0.5 + r4.w; r5.w = r6.x * r5.w; r4.w = r4.w * r14.x + r5.w; r5.w = min(r14.w, r6.y); r8.xy = saturate(r15.yz); r9.zw = float2(1,1) + -r8.xy; r6.x = min(r9.z, r5.w); r8.z = -r6.x * 0.5 + r5.w; r6.x = r8.z * r6.x; r5.w = r5.w * r8.x + r6.x; r6.x = -r14.z + -r8.w; r6.x = saturate(2.53553391 + r6.x); r8.z = 1 + -r6.y; r8.z = min(r8.z, r6.x); r10.w = -r8.z * 0.5 + r6.x; r8.z = r10.w * r8.z; r6.x = r6.x * r6.y + r8.z; r5.w = r12.w * r5.w + r2.w; r5.w = r12.z * r6.x + r5.w; r3.w = r3.w * 0.5 + r5.w; r3.w = r12.y * r4.w + r3.w; r4.w = min(r15.x, r6.w); r5.w = -r4.w * 0.5 + r15.x; r4.w = r5.w * r4.w; r4.w = r15.x * r14.y + r4.w; r5.w = saturate(0.535533905 + r8.w); r6.x = 1 + -r5.w; r6.x = min(r15.x, r6.x); r6.y = -r6.x * 0.5 + r15.x; r6.x = r6.y * r6.x; r5.w = r15.x * r5.w + r6.x; r6.x = r14.z + r8.w; r6.x = saturate(-1.53553391 + r6.x); r6.x = r6.x * r6.x; r6.x = -r6.x * 0.5 + 1; r6.y = r14.w + r14.z; r6.y = saturate(-1.53553391 + r6.y); r6.y = r6.y * r6.y; r6.y = -r6.y * 0.5 + 1; r3.w = r11.w * r6.x + r3.w; r3.w = r11.z * r6.y + r3.w; r3.w = r11.x * r4.w + r3.w; r3.w = r11.y * r5.w + r3.w; r4.w = saturate(r15.z + -r14.z); r4.w = r4.w * r4.w; r4.w = r4.w * r13.y; r5.w = -r14.z + -r14.w; r6.xy = saturate(float2(1.53553391,2.53553391) + r5.ww); r8.zw = min(r15.wx, r6.xx); r9.zw = min(r8.zw, r9.zw); r11.xy = -r9.zw * float2(0.5,0.5) + r8.zw; r9.zw = r11.xy * r9.zw; r8.xy = r8.zw * r8.xy + r9.zw; r5.w = 1 + -r6.x; r5.w = min(r6.y, r5.w); r6.w = -r5.w * 0.5 + r6.y; r5.w = r6.w * r5.w; r5.w = r6.y * r6.x + r5.w; r3.w = r13.w * r5.w + r3.w; r3.w = r13.z * r8.x + r3.w; r3.w = r13.x * r8.y + r3.w; r2.w = r4.w * 0.5 + r3.w; } r2.w = cb1[38].y * r2.w; r3.w = cmp((uint)r0.w < asuint(cb1[41].x)); if (r3.w != 0) { if (cb1[41].x != 0) { r8.xyzw = cb1[5].xyzw * r0.yyyy; r8.xyzw = cb1[4].xyzw * r0.xxxx + r8.xyzw; r8.xyzw = cb1[6].xyzw * r0.zzzz + r8.xyzw; r8.xyzw = cb1[7].xyzw + r8.xyzw; r6.xyw = r8.xyz / r8.www; r8.xyzw = r6.yxxx * float4(-0.5,0.5,0.5,0.5) + float4(0.5,0.5,0.5,0.5); r8.xyzw = r8.xyzw * cb1[40].zzzz + float4(-2.5,-2.5,-2.5,-2.5); r9.zw = floor(r8.wx); r8.xyzw = -r9.wzzz + r8.xyzw; r11.xy = cb1[40].ww * r9.zw; if (r10.x != 0) { r11.zw = r9.zw * cb1[40].ww + cb1[40].ww; r12.xyzw = t2.GatherCmp(s2_s, r11.zw, r6.w).xyzw; r11.xyzw = cb1[40].wwww * float4(3,1,5,1) + r11.xyxy; r13.xyzw = t2.GatherCmp(s2_s, r11.xy, r6.w).xyzw; r11.xyzw = t2.GatherCmp(s2_s, r11.zw, r6.w).xyzw; r14.xyzw = float4(0.535533905,1.53553391,1,1) + -r8.wwxw; r15.xy = saturate(r14.xy + -r8.xx); r4.w = r15.x * r15.x; r4.w = r4.w * r12.w; r15.xz = min(r15.yy, r14.zw); r14.xy = saturate(r14.xy); r16.xy = float2(1,1) + -r14.xy; r5.w = min(r16.x, r15.x); r10.w = -r5.w * 0.5 + r15.x; r5.w = r10.w * r5.w; r5.w = r15.x * r14.x + r5.w; r10.w = saturate(0.535533905 + -r8.x); r12.w = 1 + -r10.w; r14.x = min(r15.z, r12.w); r15.x = -r14.x * 0.5 + r15.z; r14.x = r15.x * r14.x; r14.x = r15.z * r10.w + r14.x; r15.x = -r8.x + -r8.w; r15.x = saturate(2.53553391 + r15.x); r15.z = 1 + -r15.y; r15.z = min(r15.x, r15.z); r15.w = -r15.z * 0.5 + r15.x; r15.z = r15.w * r15.z; r15.x = r15.x * r15.y + r15.z; r5.w = r12.z * r5.w; r4.w = r4.w * 0.5 + r5.w; r4.w = r12.x * r14.x + r4.w; r4.w = r12.y * r15.x + r4.w; r5.w = min(r16.y, r14.z); r12.x = -r5.w * 0.5 + r14.z; r5.w = r12.x * r5.w; r5.w = r14.z * r14.y + r5.w; r12.x = saturate(0.535533905 + r8.w); r12.y = 1 + -r12.x; r12.y = min(r14.z, r12.y); r12.z = -r12.y * 0.5 + r14.z; r12.y = r12.z * r12.y; r12.x = r14.z * r12.x + r12.y; r12.y = r8.w + r8.x; r12.y = saturate(-1.53553391 + r12.y); r12.y = r12.y * r12.y; r12.y = -r12.y * 0.5 + 1; r12.z = r14.w + r8.x; r12.z = saturate(-1.53553391 + r12.z); r12.z = r12.z * r12.z; r12.z = -r12.z * 0.5 + 1; r4.w = r13.w * r5.w + r4.w; r4.w = r13.z * r12.x + r4.w; r4.w = r13.x * r12.y + r4.w; r4.w = r13.y * r12.z + r4.w; r12.xy = float2(0.535533905,1) + -r14.ww; r5.w = saturate(r12.x + -r8.x); r5.w = r5.w * r5.w; r5.w = r5.w * r11.z; r11.z = -r14.w + -r8.x; r13.xy = saturate(float2(1.53553391,2.53553391) + r11.zz); r11.z = min(r14.z, r13.x); r12.x = saturate(r12.x); r12.z = 1 + -r12.x; r12.z = min(r12.z, r11.z); r13.z = -r12.z * 0.5 + r11.z; r12.z = r13.z * r12.z; r11.z = r11.z * r12.x + r12.z; r12.x = min(r13.x, r12.y); r12.y = min(r12.x, r12.w); r12.z = -r12.y * 0.5 + r12.x; r12.y = r12.z * r12.y; r10.w = r12.x * r10.w + r12.y; r12.x = 1 + -r13.x; r12.x = min(r13.y, r12.x); r12.y = -r12.x * 0.5 + r13.y; r12.x = r12.y * r12.x; r12.x = r13.y * r13.x + r12.x; r4.w = r11.w * r11.z + r4.w; r4.w = r5.w * 0.5 + r4.w; r4.w = r11.x * r12.x + r4.w; r4.w = r11.y * r10.w + r4.w; } else { r4.w = 0; } if (r10.y != 0) { r11.xyzw = float4(1,3,5,3) * cb1[40].wwww; r12.xyzw = r9.zwzw * cb1[40].wwww + r11.xyyy; r13.xyzw = t2.GatherCmp(s2_s, r12.xy, r6.w).xyzw; r12.xyzw = t2.GatherCmp(s2_s, r12.zw, r6.w).xyzw; r11.xy = r9.zw * cb1[40].ww + r11.zw; r11.xyzw = t2.GatherCmp(s2_s, r11.xy, r6.w).xyzw; r14.xyz = float3(1.53553391,1,1) + -r8.xwx; r14.x = saturate(r14.x); r5.w = 1 + -r14.x; r10.w = min(r14.y, r5.w); r14.w = -r10.w * 0.5 + r14.y; r10.w = r14.w * r10.w; r10.w = r14.y * r14.x + r10.w; r14.w = saturate(0.535533905 + r8.x); r15.x = 1 + -r14.w; r15.y = min(r15.x, r14.y); r15.z = -r15.y * 0.5 + r14.y; r15.y = r15.z * r15.y; r15.y = r14.y * r14.w + r15.y; r15.z = r8.x + r8.w; r15.z = saturate(-1.53553391 + r15.z); r15.z = r15.z * r15.z; r15.z = -r15.z * 0.5 + 1; r16.xy = r14.zy + r8.wx; r16.xy = saturate(float2(-1.53553391,-1.53553391) + r16.xy); r16.xy = r16.xy * r16.xy; r16.xy = -r16.xy * float2(0.5,0.5) + float2(1,1); r10.w = r13.w * r10.w + r4.w; r10.w = r13.z * r15.z + r10.w; r10.w = r13.x * r15.y + r10.w; r10.w = r13.y * r16.x + r10.w; r10.w = r10.w + r12.w; r10.w = r10.w + r12.z; r10.w = r10.w + r12.x; r10.w = r10.w + r12.y; r12.x = 1 + -r14.y; r5.w = min(r12.x, r5.w); r12.y = -r5.w * 0.5 + r12.x; r5.w = r12.y * r5.w; r5.w = r12.x * r14.x + r5.w; r12.y = min(r12.x, r15.x); r12.z = -r12.y * 0.5 + r12.x; r12.y = r12.z * r12.y; r12.x = r12.x * r14.w + r12.y; r12.y = r14.z + r14.y; r12.y = saturate(-1.53553391 + r12.y); r12.y = r12.y * r12.y; r12.y = -r12.y * 0.5 + 1; r10.w = r11.w * r16.y + r10.w; r5.w = r11.z * r5.w + r10.w; r5.w = r11.x * r12.y + r5.w; r4.w = r11.y * r12.x + r5.w; } if (r10.z != 0) { r11.xyzw = float4(1,5,3,5) * cb1[40].wwww; r12.xyzw = r9.zwzw * cb1[40].wwww + r11.xyzw; r13.xyzw = t2.GatherCmp(s2_s, r12.xy, r6.w).xyzw; r12.xyzw = t2.GatherCmp(s2_s, r12.zw, r6.w).xyzw; r9.zw = r9.zw * cb1[40].ww + r11.ww; r11.xyzw = t2.GatherCmp(s2_s, r9.zw, r6.w).xyzw; r14.xyzw = float4(0.535533905,1.53553391,1,1) + -r8.yzxw; r8.xy = saturate(r14.xy + -r14.zz); r5.w = r8.x * r8.x; r5.w = r5.w * r13.x; r15.xyzw = float4(1,0.535533905,0.535533905,1) + -r14.zzww; r8.x = min(r15.x, r8.y); r14.xy = saturate(r14.xy); r9.zw = float2(1,1) + -r14.xy; r8.z = min(r9.z, r8.x); r9.z = -r8.z * 0.5 + r8.x; r8.z = r9.z * r8.z; r8.x = r8.x * r14.x + r8.z; r8.z = min(r14.w, r8.y); r16.xy = saturate(r15.yz); r16.zw = float2(1,1) + -r16.xy; r9.z = min(r16.z, r8.z); r10.w = -r9.z * 0.5 + r8.z; r9.z = r10.w * r9.z; r8.z = r8.z * r16.x + r9.z; r9.z = -r14.z + -r8.w; r9.z = saturate(2.53553391 + r9.z); r10.w = 1 + -r8.y; r10.w = min(r10.w, r9.z); r13.x = -r10.w * 0.5 + r9.z; r10.w = r13.x * r10.w; r8.y = r9.z * r8.y + r10.w; r8.z = r13.w * r8.z + r4.w; r8.y = r13.z * r8.y + r8.z; r5.w = r5.w * 0.5 + r8.y; r5.w = r13.y * r8.x + r5.w; r8.x = min(r15.x, r9.w); r8.y = -r8.x * 0.5 + r15.x; r8.x = r8.y * r8.x; r8.x = r15.x * r14.y + r8.x; r8.y = saturate(0.535533905 + r8.w); r8.z = 1 + -r8.y; r8.z = min(r15.x, r8.z); r9.z = -r8.z * 0.5 + r15.x; r8.z = r9.z * r8.z; r8.y = r15.x * r8.y + r8.z; r8.z = r14.z + r8.w; r8.z = saturate(-1.53553391 + r8.z); r8.z = r8.z * r8.z; r8.z = -r8.z * 0.5 + 1; r8.w = r14.w + r14.z; r8.w = saturate(-1.53553391 + r8.w); r8.w = r8.w * r8.w; r8.w = -r8.w * 0.5 + 1; r5.w = r12.w * r8.z + r5.w; r5.w = r12.z * r8.w + r5.w; r5.w = r12.x * r8.x + r5.w; r5.w = r12.y * r8.y + r5.w; r8.x = saturate(r15.z + -r14.z); r8.x = r8.x * r8.x; r8.x = r8.x * r11.y; r8.y = -r14.z + -r14.w; r8.yz = saturate(float2(1.53553391,2.53553391) + r8.yy); r9.zw = min(r15.wx, r8.yy); r12.xy = min(r9.zw, r16.zw); r12.zw = -r12.xy * float2(0.5,0.5) + r9.zw; r12.xy = r12.zw * r12.xy; r9.zw = r9.zw * r16.xy + r12.xy; r8.w = 1 + -r8.y; r8.w = min(r8.z, r8.w); r10.w = -r8.w * 0.5 + r8.z; r8.w = r10.w * r8.w; r8.y = r8.z * r8.y + r8.w; r5.w = r11.w * r8.y + r5.w; r5.w = r11.z * r9.z + r5.w; r5.w = r11.x * r9.w + r5.w; r4.w = r8.x * 0.5 + r5.w; } r6.xyw = r6.xyw * float3(0.5,-0.5,1) + float3(0.5,0.5,0); r6.xyw = r6.xyw * float3(2,2,2) + float3(-1,-1,-1); r6.xyw = float3(1,1,1) + -abs(r6.xyw); r6.xyw = max(float3(0,0,0), r6.xyw); r6.xyw = saturate(cb1[32].xyz * r6.xyw); r6.xyw = float3(1,1,1) + -r6.xyw; r5.w = max(r6.y, r6.w); r5.w = max(r6.x, r5.w); r4.w = saturate(r4.w * 0.0482842699 + r5.w); } else { r4.w = 1; } } else { r4.w = 1; } r5.w = -1 + cb1[38].y; r5.w = 0.5 * r5.w; r2.w = saturate(r2.w * 0.0482842699 + -r5.w); r6.xyw = -cb1[r0.w+20].xyz + r1.xyz; r6.xyw = saturate(cb1[r0.w+24].xyz * abs(r6.xyw) + cb1[r0.w+28].xyz); r6.x = max(r6.x, r6.y); r6.x = max(r6.x, r6.w); r6.y = dot(cb1[35].xyzw, icb[r0.w+0].xyzw); r1.w = -r6.y + r1.w; r6.y = dot(cb1[36].xyzw, icb[r0.w+0].xyzw); r1.w = saturate(r6.y * r1.w); r1.w = r6.x * r1.w; r6.xy = cmp((int2)r0.ww == int2(1,2)); r5.x = r6.x ? r5.x : 0; r5.x = r6.y ? r5.y : r5.x; r5.x = r6.z ? r5.z : r5.x; r5.y = r5.x * r1.w; r5.z = cmp(0 < r5.y); if (r5.z != 0) { r6.x = cmp((int)r0.w == asint(cb1[41].x)); if (r6.x != 0) { if (r0.w != 0) { r8.xyzw = cb1[5].xyzw * r0.yyyy; r8.xyzw = cb1[4].xyzw * r0.xxxx + r8.xyzw; r8.xyzw = cb1[6].xyzw * r0.zzzz + r8.xyzw; r8.xyzw = cb1[7].xyzw + r8.xyzw; r8.xyz = r8.xyz / r8.www; r11.xyzw = r8.yxxx * float4(-0.5,0.5,0.5,0.5) + float4(0.5,0.5,0.5,0.5); r11.xyzw = r11.xyzw * cb1[40].zzzz + float4(-2.5,-2.5,-2.5,-2.5); r6.xw = floor(r11.wx); r11.xyzw = r11.xyzw + -r6.wxxx; r9.zw = cb1[40].ww * r6.xw; if (r10.x != 0) { r12.xy = r6.xw * cb1[40].ww + cb1[40].ww; r12.xyzw = t2.GatherCmp(s2_s, r12.xy, r8.z).xyzw; r13.xyzw = cb1[40].wwww * float4(3,1,5,1) + r9.zwzw; r14.xyzw = t2.GatherCmp(s2_s, r13.xy, r8.z).xyzw; r13.xyzw = t2.GatherCmp(s2_s, r13.zw, r8.z).xyzw; r15.xyzw = float4(0.535533905,1.53553391,1,1) + -r11.wwxw; r9.zw = saturate(r15.xy + -r11.xx); r8.w = r9.z * r9.z; r8.w = r8.w * r12.w; r16.xy = min(r15.zw, r9.ww); r15.xy = saturate(r15.xy); r16.zw = float2(1,1) + -r15.xy; r9.z = min(r16.x, r16.z); r10.w = -r9.z * 0.5 + r16.x; r9.z = r10.w * r9.z; r9.z = r16.x * r15.x + r9.z; r10.w = saturate(0.535533905 + -r11.x); r12.w = 1 + -r10.w; r15.x = min(r16.y, r12.w); r16.x = -r15.x * 0.5 + r16.y; r15.x = r16.x * r15.x; r15.x = r16.y * r10.w + r15.x; r16.x = -r11.x + -r11.w; r16.x = saturate(2.53553391 + r16.x); r16.y = 1 + -r9.w; r16.y = min(r16.x, r16.y); r16.z = -r16.y * 0.5 + r16.x; r16.y = r16.z * r16.y; r9.w = r16.x * r9.w + r16.y; r9.z = r12.z * r9.z; r8.w = r8.w * 0.5 + r9.z; r8.w = r12.x * r15.x + r8.w; r8.w = r12.y * r9.w + r8.w; r9.z = min(r16.w, r15.z); r9.w = -r9.z * 0.5 + r15.z; r9.z = r9.w * r9.z; r9.z = r15.z * r15.y + r9.z; r9.w = saturate(0.535533905 + r11.w); r12.x = 1 + -r9.w; r12.x = min(r15.z, r12.x); r12.y = -r12.x * 0.5 + r15.z; r12.x = r12.y * r12.x; r9.w = r15.z * r9.w + r12.x; r12.x = r11.w + r11.x; r12.x = saturate(-1.53553391 + r12.x); r12.x = r12.x * r12.x; r12.x = -r12.x * 0.5 + 1; r12.y = r15.w + r11.x; r12.y = saturate(-1.53553391 + r12.y); r12.y = r12.y * r12.y; r12.y = -r12.y * 0.5 + 1; r8.w = r14.w * r9.z + r8.w; r8.w = r14.z * r9.w + r8.w; r8.w = r14.x * r12.x + r8.w; r8.w = r14.y * r12.y + r8.w; r9.zw = float2(0.535533905,1) + -r15.ww; r12.x = saturate(r9.z + -r11.x); r12.x = r12.x * r12.x; r12.x = r12.x * r13.z; r12.y = -r15.w + -r11.x; r12.yz = saturate(float2(1.53553391,2.53553391) + r12.yy); r13.z = min(r15.z, r12.y); r9.z = saturate(r9.z); r14.x = 1 + -r9.z; r14.x = min(r14.x, r13.z); r14.y = -r14.x * 0.5 + r13.z; r14.x = r14.y * r14.x; r9.z = r13.z * r9.z + r14.x; r9.w = min(r12.y, r9.w); r12.w = min(r9.w, r12.w); r13.z = -r12.w * 0.5 + r9.w; r12.w = r13.z * r12.w; r9.w = r9.w * r10.w + r12.w; r10.w = 1 + -r12.y; r10.w = min(r12.z, r10.w); r12.w = -r10.w * 0.5 + r12.z; r10.w = r12.w * r10.w; r10.w = r12.z * r12.y + r10.w; r8.w = r13.w * r9.z + r8.w; r8.w = r12.x * 0.5 + r8.w; r8.w = r13.x * r10.w + r8.w; r8.w = r13.y * r9.w + r8.w; } else { r8.w = 0; } if (r10.y != 0) { r12.xyzw = float4(1,3,5,3) * cb1[40].wwww; r13.xyzw = r6.xwxw * cb1[40].wwww + r12.xyyy; r14.xyzw = t2.GatherCmp(s2_s, r13.xy, r8.z).xyzw; r13.xyzw = t2.GatherCmp(s2_s, r13.zw, r8.z).xyzw; r9.zw = r6.xw * cb1[40].ww + r12.zw; r12.xyzw = t2.GatherCmp(s2_s, r9.zw, r8.z).xyzw; r15.xyz = float3(1.53553391,1,1) + -r11.xwx; r15.x = saturate(r15.x); r9.z = 1 + -r15.x; r9.w = min(r15.y, r9.z); r10.w = -r9.w * 0.5 + r15.y; r9.w = r10.w * r9.w; r9.w = r15.y * r15.x + r9.w; r10.w = saturate(0.535533905 + r11.x); r15.w = 1 + -r10.w; r16.x = min(r15.y, r15.w); r16.y = -r16.x * 0.5 + r15.y; r16.x = r16.y * r16.x; r16.x = r15.y * r10.w + r16.x; r16.y = r11.x + r11.w; r16.y = saturate(-1.53553391 + r16.y); r16.y = r16.y * r16.y; r16.y = -r16.y * 0.5 + 1; r16.zw = r15.zy + r11.wx; r16.zw = saturate(float2(-1.53553391,-1.53553391) + r16.zw); r16.zw = r16.zw * r16.zw; r16.zw = -r16.zw * float2(0.5,0.5) + float2(1,1); r9.w = r14.w * r9.w + r8.w; r9.w = r14.z * r16.y + r9.w; r9.w = r14.x * r16.x + r9.w; r9.w = r14.y * r16.z + r9.w; r9.w = r9.w + r13.w; r9.w = r9.w + r13.z; r9.w = r9.w + r13.x; r9.w = r9.w + r13.y; r13.x = 1 + -r15.y; r9.z = min(r13.x, r9.z); r13.y = -r9.z * 0.5 + r13.x; r9.z = r13.y * r9.z; r9.z = r13.x * r15.x + r9.z; r13.y = min(r13.x, r15.w); r13.z = -r13.y * 0.5 + r13.x; r13.y = r13.z * r13.y; r10.w = r13.x * r10.w + r13.y; r13.x = r15.z + r15.y; r13.x = saturate(-1.53553391 + r13.x); r13.x = r13.x * r13.x; r13.x = -r13.x * 0.5 + 1; r9.w = r12.w * r16.w + r9.w; r9.z = r12.z * r9.z + r9.w; r9.z = r12.x * r13.x + r9.z; r8.w = r12.y * r10.w + r9.z; } if (r10.z != 0) { r12.xyzw = float4(1,5,3,5) * cb1[40].wwww; r13.xyzw = r6.xwxw * cb1[40].wwww + r12.xyzw; r14.xyzw = t2.GatherCmp(s2_s, r13.xy, r8.z).xyzw; r13.xyzw = t2.GatherCmp(s2_s, r13.zw, r8.z).xyzw; r6.xw = r6.xw * cb1[40].ww + r12.ww; r12.xyzw = t2.GatherCmp(s2_s, r6.xw, r8.z).xyzw; r15.xyzw = float4(0.535533905,1.53553391,1,1) + -r11.yzxw; r6.xw = saturate(r15.xy + -r15.zz); r6.x = r6.x * r6.x; r6.x = r6.x * r14.x; r16.xyzw = float4(1,0.535533905,0.535533905,1) + -r15.zzww; r9.z = min(r16.x, r6.w); r15.xy = saturate(r15.xy); r11.xy = float2(1,1) + -r15.xy; r9.w = min(r11.x, r9.z); r10.w = -r9.w * 0.5 + r9.z; r9.w = r10.w * r9.w; r9.z = r9.z * r15.x + r9.w; r9.w = min(r15.w, r6.w); r11.xz = saturate(r16.yz); r17.xy = float2(1,1) + -r11.xz; r10.w = min(r17.x, r9.w); r14.x = -r10.w * 0.5 + r9.w; r10.w = r14.x * r10.w; r9.w = r9.w * r11.x + r10.w; r10.w = -r15.z + -r11.w; r10.w = saturate(2.53553391 + r10.w); r14.x = 1 + -r6.w; r14.x = min(r14.x, r10.w); r15.x = -r14.x * 0.5 + r10.w; r14.x = r15.x * r14.x; r6.w = r10.w * r6.w + r14.x; r9.w = r14.w * r9.w + r8.w; r6.w = r14.z * r6.w + r9.w; r6.x = r6.x * 0.5 + r6.w; r6.x = r14.y * r9.z + r6.x; r6.w = min(r16.x, r11.y); r9.z = -r6.w * 0.5 + r16.x; r6.w = r9.z * r6.w; r6.w = r16.x * r15.y + r6.w; r9.z = saturate(0.535533905 + r11.w); r9.w = 1 + -r9.z; r9.w = min(r16.x, r9.w); r10.w = -r9.w * 0.5 + r16.x; r9.w = r10.w * r9.w; r9.z = r16.x * r9.z + r9.w; r9.w = r15.z + r11.w; r9.w = saturate(-1.53553391 + r9.w); r9.w = r9.w * r9.w; r9.w = -r9.w * 0.5 + 1; r10.w = r15.w + r15.z; r10.w = saturate(-1.53553391 + r10.w); r10.w = r10.w * r10.w; r10.w = -r10.w * 0.5 + 1; r6.x = r13.w * r9.w + r6.x; r6.x = r13.z * r10.w + r6.x; r6.x = r13.x * r6.w + r6.x; r6.x = r13.y * r9.z + r6.x; r6.w = saturate(r16.z + -r15.z); r6.w = r6.w * r6.w; r6.w = r6.w * r12.y; r9.z = -r15.z + -r15.w; r9.zw = saturate(float2(1.53553391,2.53553391) + r9.zz); r11.yw = min(r16.wx, r9.zz); r13.xy = min(r11.yw, r17.xy); r13.zw = -r13.xy * float2(0.5,0.5) + r11.yw; r13.xy = r13.zw * r13.xy; r11.xy = r11.yw * r11.xz + r13.xy; r10.w = 1 + -r9.z; r10.w = min(r10.w, r9.w); r11.z = -r10.w * 0.5 + r9.w; r10.w = r11.z * r10.w; r9.z = r9.w * r9.z + r10.w; r6.x = r12.w * r9.z + r6.x; r6.x = r12.z * r11.x + r6.x; r6.x = r12.x * r11.y + r6.x; r8.w = r6.w * 0.5 + r6.x; } r8.xyz = r8.xyz * float3(0.5,-0.5,1) + float3(0.5,0.5,0); r8.xyz = r8.xyz * float3(2,2,2) + float3(-1,-1,-1); r8.xyz = float3(1,1,1) + -abs(r8.xyz); r8.xyz = max(float3(0,0,0), r8.xyz); r8.xyz = saturate(cb1[32].xyz * r8.xyz); r8.xyz = float3(1,1,1) + -r8.xyz; r6.x = max(r8.y, r8.z); r6.x = max(r8.x, r6.x); r6.x = saturate(r8.w * 0.0482842699 + r6.x); } else { r6.x = 1; } r6.w = 1 + -r6.x; r4.w = -r6.w * r5.y + 1; r3.w = -1; } else { r6.x = r4.w; } r2.xyz = r6.yyy ? r3.xyz : r2.xyz; r2.xyz = r6.zzz ? r4.xyz : r2.xyz; r7.xyzw = r2.yxxx * r7.xyzw + float4(-2.5,-2.5,-2.5,-2.5); r3.xy = floor(r7.wx); r7.xyzw = r7.xyzw + -r3.yxxx; r4.xy = r3.xy * r9.xy; if (r10.x != 0) { r3.xy = r3.xy * r9.xy + r9.xy; r8.xyzw = t1.GatherCmp(s2_s, r3.xy, r2.z).xyzw; r9.xyzw = cb1[39].wwww * float4(0.75,1,1.25,1) + r4.xyxy; r11.xyzw = t1.GatherCmp(s2_s, r9.xy, r2.z).xyzw; r9.xyzw = t1.GatherCmp(s2_s, r9.zw, r2.z).xyzw; r12.xyzw = float4(0.535533905,1.53553391,1,1) + -r7.wwxw; r3.xy = saturate(r12.xy + -r7.xx); r3.x = r3.x * r3.x; r3.x = r3.x * r8.w; r6.yz = min(r12.zw, r3.yy); r12.xy = saturate(r12.xy); r10.xw = float2(1,1) + -r12.xy; r3.z = min(r10.x, r6.y); r4.z = -r3.z * 0.5 + r6.y; r3.z = r4.z * r3.z; r3.z = r6.y * r12.x + r3.z; r4.z = saturate(0.535533905 + -r7.x); r6.y = 1 + -r4.z; r6.w = min(r6.z, r6.y); r8.w = -r6.w * 0.5 + r6.z; r6.w = r8.w * r6.w; r6.z = r6.z * r4.z + r6.w; r6.w = -r7.x + -r7.w; r6.w = saturate(2.53553391 + r6.w); r8.w = 1 + -r3.y; r8.w = min(r8.w, r6.w); r10.x = -r8.w * 0.5 + r6.w; r8.w = r10.x * r8.w; r3.y = r6.w * r3.y + r8.w; r3.z = r8.z * r3.z; r3.x = r3.x * 0.5 + r3.z; r3.x = r8.x * r6.z + r3.x; r3.x = r8.y * r3.y + r3.x; r3.y = min(r12.z, r10.w); r3.z = -r3.y * 0.5 + r12.z; r3.y = r3.z * r3.y; r3.y = r12.z * r12.y + r3.y; r3.z = saturate(0.535533905 + r7.w); r6.z = 1 + -r3.z; r6.z = min(r12.z, r6.z); r6.w = -r6.z * 0.5 + r12.z; r6.z = r6.w * r6.z; r3.z = r12.z * r3.z + r6.z; r6.z = r7.w + r7.x; r6.z = saturate(-1.53553391 + r6.z); r6.z = r6.z * r6.z; r6.z = -r6.z * 0.5 + 1; r6.w = r12.w + r7.x; r6.w = saturate(-1.53553391 + r6.w); r6.w = r6.w * r6.w; r6.w = -r6.w * 0.5 + 1; r3.x = r11.w * r3.y + r3.x; r3.x = r11.z * r3.z + r3.x; r3.x = r11.x * r6.z + r3.x; r3.x = r11.y * r6.w + r3.x; r3.yz = float2(0.535533905,1) + -r12.ww; r6.z = saturate(r3.y + -r7.x); r6.z = r6.z * r6.z; r6.z = r6.z * r9.z; r6.w = -r12.w + -r7.x; r8.xy = saturate(float2(1.53553391,2.53553391) + r6.ww); r6.w = min(r12.z, r8.x); r3.y = saturate(r3.y); r8.z = 1 + -r3.y; r8.z = min(r8.z, r6.w); r8.w = -r8.z * 0.5 + r6.w; r8.z = r8.w * r8.z; r3.y = r6.w * r3.y + r8.z; r3.z = min(r8.x, r3.z); r6.y = min(r3.z, r6.y); r6.w = -r6.y * 0.5 + r3.z; r6.y = r6.w * r6.y; r3.z = r3.z * r4.z + r6.y; r4.z = 1 + -r8.x; r4.z = min(r8.y, r4.z); r6.y = -r4.z * 0.5 + r8.y; r4.z = r6.y * r4.z; r4.z = r8.y * r8.x + r4.z; r3.x = r9.w * r3.y + r3.x; r3.x = r6.z * 0.5 + r3.x; r3.x = r9.x * r4.z + r3.x; r3.x = r9.y * r3.z + r3.x; } else { r3.x = 0; } if (r10.y != 0) { r8.xyzw = cb1[39].wwww * float4(0.25,3,0.75,3) + r4.xyxy; r9.xyzw = t1.GatherCmp(s2_s, r8.xy, r2.z).xyzw; r8.xyzw = t1.GatherCmp(s2_s, r8.zw, r2.z).xyzw; r3.yz = cb1[39].ww * float2(1.25,3) + r4.xy; r11.xyzw = t1.GatherCmp(s2_s, r3.yz, r2.z).xyzw; r6.yzw = float3(1.53553391,1,1) + -r7.xwx; r6.y = saturate(r6.y); r3.y = 1 + -r6.y; r3.z = min(r6.z, r3.y); r4.z = -r3.z * 0.5 + r6.z; r3.z = r4.z * r3.z; r3.z = r6.z * r6.y + r3.z; r4.z = saturate(0.535533905 + r7.x); r10.x = 1 + -r4.z; r10.y = min(r10.x, r6.z); r10.w = -r10.y * 0.5 + r6.z; r10.y = r10.w * r10.y; r10.y = r6.z * r4.z + r10.y; r10.w = r7.x + r7.w; r10.w = saturate(-1.53553391 + r10.w); r10.w = r10.w * r10.w; r10.w = -r10.w * 0.5 + 1; r12.xy = r6.wz + r7.wx; r12.xy = saturate(float2(-1.53553391,-1.53553391) + r12.xy); r12.xy = r12.xy * r12.xy; r12.xy = -r12.xy * float2(0.5,0.5) + float2(1,1); r3.z = r9.w * r3.z + r3.x; r3.z = r9.z * r10.w + r3.z; r3.z = r9.x * r10.y + r3.z; r3.z = r9.y * r12.x + r3.z; r3.z = r3.z + r8.w; r3.z = r3.z + r8.z; r3.z = r3.z + r8.x; r3.z = r3.z + r8.y; r8.x = 1 + -r6.z; r3.y = min(r8.x, r3.y); r8.y = -r3.y * 0.5 + r8.x; r3.y = r8.y * r3.y; r3.y = r8.x * r6.y + r3.y; r6.y = min(r8.x, r10.x); r8.y = -r6.y * 0.5 + r8.x; r6.y = r8.y * r6.y; r4.z = r8.x * r4.z + r6.y; r6.y = r6.w + r6.z; r6.y = saturate(-1.53553391 + r6.y); r6.y = r6.y * r6.y; r6.y = -r6.y * 0.5 + 1; r3.z = r11.w * r12.y + r3.z; r3.y = r11.z * r3.y + r3.z; r3.y = r11.x * r6.y + r3.y; r3.x = r11.y * r4.z + r3.y; } if (r10.z != 0) { r8.xyzw = cb1[39].wwww * float4(0.25,5,0.75,5) + r4.xyxy; r9.xyzw = t1.GatherCmp(s2_s, r8.xy, r2.z).xyzw; r8.xyzw = t1.GatherCmp(s2_s, r8.zw, r2.z).xyzw; r3.yz = cb1[39].ww * float2(1.25,5) + r4.xy; r10.xyzw = t1.GatherCmp(s2_s, r3.yz, r2.z).xyzw; r11.xyzw = float4(0.535533905,1.53553391,1,1) + -r7.yzxw; r3.yz = saturate(r11.xy + -r11.zz); r3.y = r3.y * r3.y; r3.y = r3.y * r9.x; r12.xyzw = float4(1,0.535533905,0.535533905,1) + -r11.zzww; r4.x = min(r12.x, r3.z); r11.xy = saturate(r11.xy); r4.yz = float2(1,1) + -r11.xy; r4.y = min(r4.x, r4.y); r6.y = -r4.y * 0.5 + r4.x; r4.y = r6.y * r4.y; r4.x = r4.x * r11.x + r4.y; r4.y = min(r11.w, r3.z); r6.yz = saturate(r12.yz); r7.xy = float2(1,1) + -r6.yz; r6.w = min(r7.x, r4.y); r7.z = -r6.w * 0.5 + r4.y; r6.w = r7.z * r6.w; r4.y = r4.y * r6.y + r6.w; r6.w = -r11.z + -r7.w; r6.w = saturate(2.53553391 + r6.w); r7.z = 1 + -r3.z; r7.z = min(r7.z, r6.w); r9.x = -r7.z * 0.5 + r6.w; r7.z = r9.x * r7.z; r3.z = r6.w * r3.z + r7.z; r4.y = r9.w * r4.y + r3.x; r3.z = r9.z * r3.z + r4.y; r3.y = r3.y * 0.5 + r3.z; r3.y = r9.y * r4.x + r3.y; r3.z = min(r12.x, r4.z); r4.x = -r3.z * 0.5 + r12.x; r3.z = r4.x * r3.z; r3.z = r12.x * r11.y + r3.z; r4.x = saturate(0.535533905 + r7.w); r4.y = 1 + -r4.x; r4.y = min(r12.x, r4.y); r4.z = -r4.y * 0.5 + r12.x; r4.y = r4.z * r4.y; r4.x = r12.x * r4.x + r4.y; r4.y = r11.z + r7.w; r4.y = saturate(-1.53553391 + r4.y); r4.y = r4.y * r4.y; r4.y = -r4.y * 0.5 + 1; r4.z = r11.w + r11.z; r4.z = saturate(-1.53553391 + r4.z); r4.z = r4.z * r4.z; r4.z = -r4.z * 0.5 + 1; r3.y = r8.w * r4.y + r3.y; r3.y = r8.z * r4.z + r3.y; r3.y = r8.x * r3.z + r3.y; r3.y = r8.y * r4.x + r3.y; r3.z = saturate(r12.z + -r11.z); r3.z = r3.z * r3.z; r3.z = r3.z * r10.y; r4.x = -r11.z + -r11.w; r4.xy = saturate(float2(1.53553391,2.53553391) + r4.xx); r7.zw = min(r12.wx, r4.xx); r7.xy = min(r7.zw, r7.xy); r8.xy = -r7.xy * float2(0.5,0.5) + r7.zw; r7.xy = r8.xy * r7.xy; r6.yz = r7.zw * r6.yz + r7.xy; r4.z = 1 + -r4.x; r4.z = min(r4.y, r4.z); r6.w = -r4.z * 0.5 + r4.y; r4.z = r6.w * r4.z; r4.x = r4.y * r4.x + r4.z; r3.y = r10.w * r4.x + r3.y; r3.y = r10.z * r6.y + r3.y; r3.y = r10.x * r6.z + r3.y; r3.x = r3.z * 0.5 + r3.y; } r3.x = 0.0482842699 * r3.x; r3.x = min(r6.x, r3.x); r1.w = -r1.w * r5.x + 1; r0.w = dot(cb1[34].xyzw, icb[r0.w+0].xyzw); r0.w = r1.w * r0.w + 1; r1.w = cb1[38].y * r0.w; r0.w = cb1[38].y * r0.w + -1; r0.w = 0.5 * r0.w; r0.w = saturate(r3.x * r1.w + -r0.w); r0.w = r0.w + -r2.w; r2.w = r5.y * r0.w + r2.w; } else { r2.xyz = float3(0,0,0); } r0.w = log2(r2.w); r0.w = cb1[38].x * r0.w; r0.w = exp2(r0.w); r1.w = cb1[38].z * r1.z; r3.xy = t6.SampleLevel(s0_s, r1.xy, 0).xy; r2.w = cmp(r3.x < r1.w); if (r2.w != 0) { r2.w = 1 + -r3.y; r1.w = cmp(r2.w < r1.w); if (r1.w != 0) { r1.w = t5.SampleLevel(s1_s, r1.xy, 0).w; } else { r6.xyzw = float4(4,1,0.25,1) * cb1[40].xxyy; r1.xy = r1.xy * r6.xy + float2(-0.5,-0.5); r3.xy = floor(r1.xy); r1.xy = -r3.xy + r1.xy; r4.xy = float2(1,1) + -r1.xy; r1.w = 0; r2.w = 0; while (true) { r3.z = cmp((uint)r2.w >= 4); if (r3.z != 0) break; r3.z = (int)r2.w & 1; r4.z = (uint)r2.w >> 1; r6.x = (uint)r3.z; r6.y = (uint)r4.z; r6.xy = r6.xy + r3.xy; r6.xy = float2(0.5,0.5) + r6.xy; r6.xy = r6.xy * r6.zw; r7.xy = t3.SampleLevel(s0_s, r6.xy, 0).xy; r5.x = 1 + -r7.y; r8.xyzw = t4.SampleLevel(s0_s, r6.xy, 0).xyzw; r9.xyzw = t5.SampleLevel(s0_s, r6.xy, 0).xyzw; r6.x = r1.z * cb1[38].z + -r7.x; r5.x = r5.x + -r7.x; r5.x = saturate(r6.x / r5.x); r6.x = 8 * r5.x; r7.xyzw = -r5.xxxx * float4(8,8,8,8) + float4(2,3,4,1); r6.y = max(0, r7.w); r6.x = min(1, r6.x); r6.x = r8.x * r6.x; r7.xyz = saturate(r7.xyz); r6.x = r6.x * r7.x + r6.y; r10.xyzw = saturate(r5.xxxx * float4(8,8,8,8) + float4(-1,-2,-3,-4)); r8.xyz = r10.xyz * r8.yzw; r6.x = r8.x * r7.y + r6.x; r6.x = r8.y * r7.z + r6.x; r7.xyzw = -r5.xxxx * float4(8,8,8,8) + float4(5,6,7,8); r7.xyz = saturate(r7.xyz); r6.x = r8.z * r7.x + r6.x; r6.y = r10.w * r9.x; r6.x = r6.y * r7.y + r6.x; r8.xyz = r5.xxx * float3(8,8,8) + float3(-5,-6,-7); r8.xy = saturate(r8.xy); r7.xy = r9.yz * r8.xy; r5.x = r7.x * r7.z + r6.x; r6.x = min(1, r7.w); r5.x = r7.y * r6.x + r5.x; r6.x = max(0, r8.z); r5.x = r9.w * r6.x + r5.x; r3.z = r3.z ? r1.x : r4.x; r4.z = r4.z ? r1.y : r4.y; r3.z = r4.z * r3.z; r1.w = r5.x * r3.z + r1.w; r2.w = (int)r2.w + 1; } } } else { r1.w = 1; } if (r5.z != 0) { r1.x = cb1[38].z * r2.z; r1.yz = t6.SampleLevel(s0_s, r2.xy, 0).xy; r1.z = 1 + -r1.z; r1.y = cmp(r1.y < r1.x); if (r1.y != 0) { r1.x = cmp(r1.z < r1.x); if (r1.x != 0) { r1.x = t5.SampleLevel(s1_s, r2.xy, 0).w; } else { r6.xyzw = float4(4,1,0.25,1) * cb1[40].xxyy; r1.yz = r2.xy * r6.xy + float2(-0.5,-0.5); r2.xy = floor(r1.yz); r1.yz = -r2.xy + r1.yz; r3.xy = float2(1,1) + -r1.yz; r1.x = 0; r2.w = 0; while (true) { r3.z = cmp((uint)r2.w >= 4); if (r3.z != 0) break; r3.z = (int)r2.w & 1; r4.x = (uint)r2.w >> 1; r6.x = (uint)r3.z; r6.y = (uint)r4.x; r4.yz = r6.xy + r2.xy; r4.yz = float2(0.5,0.5) + r4.yz; r4.yz = r4.yz * r6.zw; r5.xz = t3.SampleLevel(s0_s, r4.yz, 0).xy; r5.z = 1 + -r5.z; r7.xyzw = t4.SampleLevel(s0_s, r4.yz, 0).xyzw; r8.xyzw = t5.SampleLevel(s0_s, r4.yz, 0).xyzw; r4.y = r2.z * cb1[38].z + -r5.x; r4.z = r5.z + -r5.x; r4.y = saturate(r4.y / r4.z); r4.z = 8 * r4.y; r9.xyzw = -r4.yyyy * float4(8,8,8,8) + float4(2,3,4,1); r5.x = max(0, r9.w); r4.z = min(1, r4.z); r4.z = r7.x * r4.z; r9.xyz = saturate(r9.xyz); r4.z = r4.z * r9.x + r5.x; r10.xyzw = saturate(r4.yyyy * float4(8,8,8,8) + float4(-1,-2,-3,-4)); r7.xyz = r10.xyz * r7.yzw; r4.z = r7.x * r9.y + r4.z; r4.z = r7.y * r9.z + r4.z; r9.xyzw = -r4.yyyy * float4(8,8,8,8) + float4(5,6,7,8); r9.xyz = saturate(r9.xyz); r4.z = r7.z * r9.x + r4.z; r5.x = r10.w * r8.x; r4.z = r5.x * r9.y + r4.z; r7.xyz = r4.yyy * float3(8,8,8) + float3(-5,-6,-7); r7.xy = saturate(r7.xy); r5.xz = r8.yz * r7.xy; r4.y = r5.x * r9.z + r4.z; r4.z = min(1, r9.w); r4.y = r5.z * r4.z + r4.y; r4.z = max(0, r7.z); r4.y = r8.w * r4.z + r4.y; r3.z = r3.z ? r1.y : r3.x; r4.x = r4.x ? r1.z : r3.y; r3.z = r4.x * r3.z; r1.x = r4.y * r3.z + r1.x; r2.w = (int)r2.w + 1; } } } else { r1.x = 1; } r1.x = r1.x + -r1.w; r1.w = r5.y * r1.x + r1.w; } r0.x = dot(r0.xyz, r0.xyz); r0.x = saturate(r0.x * cb1[33].x + cb1[33].y); r0.x = saturate(r0.w * r1.w + r0.x); if (r3.w != 0) { r0.y = saturate(r4.w * cb1[38].y + -r5.w); r0.y = log2(r0.y); r0.y = cb1[38].x * r0.y; r0.y = exp2(r0.y); o0.x = min(r0.x, r0.y); } else { o0.x = r0.x; } return; } [/code]
After spending some time with the Open Beta today:
- The game is pretty busted. For some reason only having 3D Vision enabled gives me an "interlaced" view even in 2D. I have to disable 3D Vision completely to get rid of it...
- Pretty much everything generates halos and most effect looks wrong....

Anyone else noticed this?

While the second point could in theory be fixed from the shaders, the first point looks like is driver generated and have no idea how to fix it...

Edit:
It seems that a combination of Surround + 3D Vision + SLI is what makes the game render in an "interlaced" format...

It seems the headers in the shaders are stripped (what a surprise....).
This is how the Shadows Shader looks like:
// ---- Created with 3Dmigoto v1.2.56 on Sun Feb 12 18:54:33 2017
Texture2D<float4> t6 : register(t6);

Texture2D<float4> t5 : register(t5);

Texture2D<float4> t4 : register(t4);

Texture2D<float4> t3 : register(t3);

Texture2D<float4> t2 : register(t2);

Texture2D<float4> t1 : register(t1);

Texture2D<float4> t0 : register(t0);

SamplerComparisonState s2_s : register(s2);

SamplerState s1_s : register(s1);

SamplerState s0_s : register(s0);

cbuffer cb1 : register(b1)
{
float4 cb1[42];
}

cbuffer cb0 : register(b0)
{
float4 cb0[2];
}




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


void main(
float4 v0 : SV_Position0,
float4 v1 : TEXCOORD0,
float3 v2 : TEXCOORD1,
out float o0 : SV_Target0)
{
const float4 icb[] = { { 1.000000, 0, 0, 0},
{ 0, 1.000000, 0, 0},
{ 0, 0, 1.000000, 0},
{ 0, 0, 0, 1.000000} };
float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17;
uint4 bitmask, uiDest;
float4 fDest;

r0.x = t0.Sample(s0_s, v1.xy).x;
r0.xyz = v2.xyz * r0.xxx;
r0.w = dot(v2.xyz, cb0[1].xyz);
r0.xyz = r0.xyz / r0.www;
r1.xyz = cb1[1].xyz * r0.yyy;
r1.xyz = cb1[0].xyz * r0.xxx + r1.xyz;
r1.xyz = cb1[2].xyz * r0.zzz + r1.xyz;
r1.xyz = cb1[3].xyz + r1.xyz;
r2.xyz = r1.xyz * cb1[8].xyz + cb1[12].xyz;
r3.xyz = r1.xyz * cb1[9].xyz + cb1[13].xyz;
r4.xyz = r1.xyz * cb1[10].xyz + cb1[14].xyz;
r1.xyz = r1.xyz * cb1[11].xyz + cb1[15].xyz;
r5.x = r2.y;
r5.y = r3.y;
r5.z = r4.y;
r5.w = r1.y;
r6.xyzw = cmp(r5.xyzw >= cb1[18].xyzw);
r6.xyzw = r6.xyzw ? float4(1,1,1,1) : 0;
r7.x = r2.x;
r7.y = r3.x;
r7.z = r4.x;
r7.w = r1.x;
r8.xyzw = cmp(r7.xyzw >= cb1[16].xyzw);
r8.xyzw = r8.xyzw ? float4(1,1,1,1) : 0;
r6.xyzw = r8.xyzw * r6.xyzw;
r8.x = r2.z;
r8.y = r3.z;
r8.z = r4.z;
r8.w = r1.z;
r9.xyzw = cmp(r8.xyzw >= float4(0,0,0,0));
r9.xyzw = r9.xyzw ? float4(1,1,1,1) : 0;
r6.xyzw = r9.xyzw * r6.xyzw;
r5.xyzw = cmp(cb1[19].xyzw >= r5.xyzw);
r5.xyzw = r5.xyzw ? float4(1,1,1,1) : 0;
r7.xyzw = cmp(cb1[17].xyzw >= r7.xyzw);
r7.xyzw = r7.xyzw ? float4(1,1,1,1) : 0;
r5.xyzw = r7.xyzw * r5.xyzw;
r7.xyzw = cmp(float4(1,1,1,1) >= r8.xyzw);
r7.xyzw = r7.xyzw ? float4(1,1,1,1) : 0;
r5.xyzw = r7.xyzw * r5.xyzw;
r5.xyzw = r6.xyzw * r5.xyzw;
r6.xyz = cmp(float3(0,0,0) != r5.yzw);
r0.w = r6.x ? 0.000000 : 0;
r0.w = r6.y ? 2 : r0.w;
r0.w = r6.z ? 3 : r0.w;
r6.xyw = (int3)r0.www + int3(0,-1,-2);
r1.xyz = r6.xxx ? r1.xyz : r2.xyz;
r1.xyz = r6.yyy ? r1.xyz : r3.xyz;
r1.xyz = r6.www ? r1.xyz : r4.xyz;
r1.w = dot(r0.xyz, cb0[1].xyz);
r7.xyzw = float4(1,4,4,4) * cb1[39].zzzz;
r8.xyzw = r1.yxxx * r7.xyzw + float4(-2.5,-2.5,-2.5,-2.5);
r6.xy = floor(r8.wx);
r8.xyzw = r8.xyzw + -r6.yxxx;
r9.xy = float2(0.25,1) * cb1[39].ww;
r9.zw = r9.xy * r6.xy;
r10.xyz = cmp(float3(0,0,0) != cb1[37].xyz);
if (r10.x != 0) {
r6.xy = r6.xy * r9.xy + r9.xy;
r11.xyzw = t1.GatherCmp(s2_s, r6.xy, r1.z).xyzw;
r12.xyzw = cb1[39].wwww * float4(0.75,1,1.25,1) + r9.zwzw;
r13.xyzw = t1.GatherCmp(s2_s, r12.xy, r1.z).xyzw;
r12.xyzw = t1.GatherCmp(s2_s, r12.zw, r1.z).xyzw;
r14.xyzw = float4(0.535533905,1.53553391,1,1) + -r8.wwxw;
r6.xy = saturate(r14.xy + -r8.xx);
r2.w = r6.x * r6.x;
r2.w = r2.w * r11.w;
r6.xw = min(r14.zw, r6.yy);
r14.xy = saturate(r14.xy);
r15.xy = float2(1,1) + -r14.xy;
r3.w = min(r15.x, r6.x);
r4.w = -r3.w * 0.5 + r6.x;
r3.w = r4.w * r3.w;
r3.w = r6.x * r14.x + r3.w;
r4.w = saturate(0.535533905 + -r8.x);
r5.w = 1 + -r4.w;
r6.x = min(r6.w, r5.w);
r10.w = -r6.x * 0.5 + r6.w;
r6.x = r10.w * r6.x;
r6.x = r6.w * r4.w + r6.x;
r6.w = -r8.x + -r8.w;
r6.w = saturate(2.53553391 + r6.w);
r10.w = 1 + -r6.y;
r10.w = min(r10.w, r6.w);
r11.w = -r10.w * 0.5 + r6.w;
r10.w = r11.w * r10.w;
r6.y = r6.w * r6.y + r10.w;
r3.w = r11.z * r3.w;
r2.w = r2.w * 0.5 + r3.w;
r2.w = r11.x * r6.x + r2.w;
r2.w = r11.y * r6.y + r2.w;
r3.w = min(r15.y, r14.z);
r6.x = -r3.w * 0.5 + r14.z;
r3.w = r6.x * r3.w;
r3.w = r14.z * r14.y + r3.w;
r6.x = saturate(0.535533905 + r8.w);
r6.y = 1 + -r6.x;
r6.y = min(r14.z, r6.y);
r6.w = -r6.y * 0.5 + r14.z;
r6.y = r6.w * r6.y;
r6.x = r14.z * r6.x + r6.y;
r6.y = r8.w + r8.x;
r6.y = saturate(-1.53553391 + r6.y);
r6.y = r6.y * r6.y;
r6.y = -r6.y * 0.5 + 1;
r6.w = r14.w + r8.x;
r6.w = saturate(-1.53553391 + r6.w);
r6.w = r6.w * r6.w;
r6.w = -r6.w * 0.5 + 1;
r2.w = r13.w * r3.w + r2.w;
r2.w = r13.z * r6.x + r2.w;
r2.w = r13.x * r6.y + r2.w;
r2.w = r13.y * r6.w + r2.w;
r6.xy = float2(0.535533905,1) + -r14.ww;
r3.w = saturate(r6.x + -r8.x);
r3.w = r3.w * r3.w;
r3.w = r3.w * r12.z;
r6.w = -r14.w + -r8.x;
r11.xy = saturate(float2(1.53553391,2.53553391) + r6.ww);
r6.w = min(r14.z, r11.x);
r6.x = saturate(r6.x);
r10.w = 1 + -r6.x;
r10.w = min(r10.w, r6.w);
r11.z = -r10.w * 0.5 + r6.w;
r10.w = r11.z * r10.w;
r6.x = r6.w * r6.x + r10.w;
r6.y = min(r11.x, r6.y);
r5.w = min(r6.y, r5.w);
r6.w = -r5.w * 0.5 + r6.y;
r5.w = r6.w * r5.w;
r4.w = r6.y * r4.w + r5.w;
r5.w = 1 + -r11.x;
r5.w = min(r11.y, r5.w);
r6.y = -r5.w * 0.5 + r11.y;
r5.w = r6.y * r5.w;
r5.w = r11.y * r11.x + r5.w;
r2.w = r12.w * r6.x + r2.w;
r2.w = r3.w * 0.5 + r2.w;
r2.w = r12.x * r5.w + r2.w;
r2.w = r12.y * r4.w + r2.w;
} else {
r2.w = 0;
}
if (r10.y != 0) {
r11.xyzw = cb1[39].wwww * float4(0.25,3,0.75,3) + r9.zwzw;
r12.xyzw = t1.GatherCmp(s2_s, r11.xy, r1.z).xyzw;
r11.xyzw = t1.GatherCmp(s2_s, r11.zw, r1.z).xyzw;
r6.xy = cb1[39].ww * float2(1.25,3) + r9.zw;
r13.xyzw = t1.GatherCmp(s2_s, r6.xy, r1.z).xyzw;
r6.xyw = float3(1.53553391,1,1) + -r8.xwx;
r6.x = saturate(r6.x);
r3.w = 1 + -r6.x;
r4.w = min(r6.y, r3.w);
r5.w = -r4.w * 0.5 + r6.y;
r4.w = r5.w * r4.w;
r4.w = r6.y * r6.x + r4.w;
r5.w = saturate(0.535533905 + r8.x);
r10.w = 1 + -r5.w;
r14.x = min(r10.w, r6.y);
r14.y = -r14.x * 0.5 + r6.y;
r14.x = r14.y * r14.x;
r14.x = r6.y * r5.w + r14.x;
r14.y = r8.x + r8.w;
r14.y = saturate(-1.53553391 + r14.y);
r14.y = r14.y * r14.y;
r14.y = -r14.y * 0.5 + 1;
r14.zw = r6.wy + r8.wx;
r14.zw = saturate(float2(-1.53553391,-1.53553391) + r14.zw);
r14.zw = r14.zw * r14.zw;
r14.zw = -r14.zw * float2(0.5,0.5) + float2(1,1);
r4.w = r12.w * r4.w + r2.w;
r4.w = r12.z * r14.y + r4.w;
r4.w = r12.x * r14.x + r4.w;
r4.w = r12.y * r14.z + r4.w;
r4.w = r4.w + r11.w;
r4.w = r4.w + r11.z;
r4.w = r4.w + r11.x;
r4.w = r4.w + r11.y;
r11.x = 1 + -r6.y;
r3.w = min(r11.x, r3.w);
r11.y = -r3.w * 0.5 + r11.x;
r3.w = r11.y * r3.w;
r3.w = r11.x * r6.x + r3.w;
r6.x = min(r11.x, r10.w);
r10.w = -r6.x * 0.5 + r11.x;
r6.x = r10.w * r6.x;
r5.w = r11.x * r5.w + r6.x;
r6.x = r6.w + r6.y;
r6.x = saturate(-1.53553391 + r6.x);
r6.x = r6.x * r6.x;
r6.x = -r6.x * 0.5 + 1;
r4.w = r13.w * r14.w + r4.w;
r3.w = r13.z * r3.w + r4.w;
r3.w = r13.x * r6.x + r3.w;
r2.w = r13.y * r5.w + r3.w;
}
if (r10.z != 0) {
r11.xyzw = cb1[39].wwww * float4(0.25,5,0.75,5) + r9.zwzw;
r12.xyzw = t1.GatherCmp(s2_s, r11.xy, r1.z).xyzw;
r11.xyzw = t1.GatherCmp(s2_s, r11.zw, r1.z).xyzw;
r6.xy = cb1[39].ww * float2(1.25,5) + r9.zw;
r13.xyzw = t1.GatherCmp(s2_s, r6.xy, r1.z).xyzw;
r14.xyzw = float4(0.535533905,1.53553391,1,1) + -r8.yzxw;
r6.xy = saturate(r14.xy + -r14.zz);
r3.w = r6.x * r6.x;
r3.w = r3.w * r12.x;
r15.xyzw = float4(1,0.535533905,0.535533905,1) + -r14.zzww;
r4.w = min(r15.x, r6.y);
r14.xy = saturate(r14.xy);
r6.xw = float2(1,1) + -r14.xy;
r5.w = min(r6.x, r4.w);
r6.x = -r5.w * 0.5 + r4.w;
r5.w = r6.x * r5.w;
r4.w = r4.w * r14.x + r5.w;
r5.w = min(r14.w, r6.y);
r8.xy = saturate(r15.yz);
r9.zw = float2(1,1) + -r8.xy;
r6.x = min(r9.z, r5.w);
r8.z = -r6.x * 0.5 + r5.w;
r6.x = r8.z * r6.x;
r5.w = r5.w * r8.x + r6.x;
r6.x = -r14.z + -r8.w;
r6.x = saturate(2.53553391 + r6.x);
r8.z = 1 + -r6.y;
r8.z = min(r8.z, r6.x);
r10.w = -r8.z * 0.5 + r6.x;
r8.z = r10.w * r8.z;
r6.x = r6.x * r6.y + r8.z;
r5.w = r12.w * r5.w + r2.w;
r5.w = r12.z * r6.x + r5.w;
r3.w = r3.w * 0.5 + r5.w;
r3.w = r12.y * r4.w + r3.w;
r4.w = min(r15.x, r6.w);
r5.w = -r4.w * 0.5 + r15.x;
r4.w = r5.w * r4.w;
r4.w = r15.x * r14.y + r4.w;
r5.w = saturate(0.535533905 + r8.w);
r6.x = 1 + -r5.w;
r6.x = min(r15.x, r6.x);
r6.y = -r6.x * 0.5 + r15.x;
r6.x = r6.y * r6.x;
r5.w = r15.x * r5.w + r6.x;
r6.x = r14.z + r8.w;
r6.x = saturate(-1.53553391 + r6.x);
r6.x = r6.x * r6.x;
r6.x = -r6.x * 0.5 + 1;
r6.y = r14.w + r14.z;
r6.y = saturate(-1.53553391 + r6.y);
r6.y = r6.y * r6.y;
r6.y = -r6.y * 0.5 + 1;
r3.w = r11.w * r6.x + r3.w;
r3.w = r11.z * r6.y + r3.w;
r3.w = r11.x * r4.w + r3.w;
r3.w = r11.y * r5.w + r3.w;
r4.w = saturate(r15.z + -r14.z);
r4.w = r4.w * r4.w;
r4.w = r4.w * r13.y;
r5.w = -r14.z + -r14.w;
r6.xy = saturate(float2(1.53553391,2.53553391) + r5.ww);
r8.zw = min(r15.wx, r6.xx);
r9.zw = min(r8.zw, r9.zw);
r11.xy = -r9.zw * float2(0.5,0.5) + r8.zw;
r9.zw = r11.xy * r9.zw;
r8.xy = r8.zw * r8.xy + r9.zw;
r5.w = 1 + -r6.x;
r5.w = min(r6.y, r5.w);
r6.w = -r5.w * 0.5 + r6.y;
r5.w = r6.w * r5.w;
r5.w = r6.y * r6.x + r5.w;
r3.w = r13.w * r5.w + r3.w;
r3.w = r13.z * r8.x + r3.w;
r3.w = r13.x * r8.y + r3.w;
r2.w = r4.w * 0.5 + r3.w;
}
r2.w = cb1[38].y * r2.w;
r3.w = cmp((uint)r0.w < asuint(cb1[41].x));
if (r3.w != 0) {
if (cb1[41].x != 0) {
r8.xyzw = cb1[5].xyzw * r0.yyyy;
r8.xyzw = cb1[4].xyzw * r0.xxxx + r8.xyzw;
r8.xyzw = cb1[6].xyzw * r0.zzzz + r8.xyzw;
r8.xyzw = cb1[7].xyzw + r8.xyzw;
r6.xyw = r8.xyz / r8.www;
r8.xyzw = r6.yxxx * float4(-0.5,0.5,0.5,0.5) + float4(0.5,0.5,0.5,0.5);
r8.xyzw = r8.xyzw * cb1[40].zzzz + float4(-2.5,-2.5,-2.5,-2.5);
r9.zw = floor(r8.wx);
r8.xyzw = -r9.wzzz + r8.xyzw;
r11.xy = cb1[40].ww * r9.zw;
if (r10.x != 0) {
r11.zw = r9.zw * cb1[40].ww + cb1[40].ww;
r12.xyzw = t2.GatherCmp(s2_s, r11.zw, r6.w).xyzw;
r11.xyzw = cb1[40].wwww * float4(3,1,5,1) + r11.xyxy;
r13.xyzw = t2.GatherCmp(s2_s, r11.xy, r6.w).xyzw;
r11.xyzw = t2.GatherCmp(s2_s, r11.zw, r6.w).xyzw;
r14.xyzw = float4(0.535533905,1.53553391,1,1) + -r8.wwxw;
r15.xy = saturate(r14.xy + -r8.xx);
r4.w = r15.x * r15.x;
r4.w = r4.w * r12.w;
r15.xz = min(r15.yy, r14.zw);
r14.xy = saturate(r14.xy);
r16.xy = float2(1,1) + -r14.xy;
r5.w = min(r16.x, r15.x);
r10.w = -r5.w * 0.5 + r15.x;
r5.w = r10.w * r5.w;
r5.w = r15.x * r14.x + r5.w;
r10.w = saturate(0.535533905 + -r8.x);
r12.w = 1 + -r10.w;
r14.x = min(r15.z, r12.w);
r15.x = -r14.x * 0.5 + r15.z;
r14.x = r15.x * r14.x;
r14.x = r15.z * r10.w + r14.x;
r15.x = -r8.x + -r8.w;
r15.x = saturate(2.53553391 + r15.x);
r15.z = 1 + -r15.y;
r15.z = min(r15.x, r15.z);
r15.w = -r15.z * 0.5 + r15.x;
r15.z = r15.w * r15.z;
r15.x = r15.x * r15.y + r15.z;
r5.w = r12.z * r5.w;
r4.w = r4.w * 0.5 + r5.w;
r4.w = r12.x * r14.x + r4.w;
r4.w = r12.y * r15.x + r4.w;
r5.w = min(r16.y, r14.z);
r12.x = -r5.w * 0.5 + r14.z;
r5.w = r12.x * r5.w;
r5.w = r14.z * r14.y + r5.w;
r12.x = saturate(0.535533905 + r8.w);
r12.y = 1 + -r12.x;
r12.y = min(r14.z, r12.y);
r12.z = -r12.y * 0.5 + r14.z;
r12.y = r12.z * r12.y;
r12.x = r14.z * r12.x + r12.y;
r12.y = r8.w + r8.x;
r12.y = saturate(-1.53553391 + r12.y);
r12.y = r12.y * r12.y;
r12.y = -r12.y * 0.5 + 1;
r12.z = r14.w + r8.x;
r12.z = saturate(-1.53553391 + r12.z);
r12.z = r12.z * r12.z;
r12.z = -r12.z * 0.5 + 1;
r4.w = r13.w * r5.w + r4.w;
r4.w = r13.z * r12.x + r4.w;
r4.w = r13.x * r12.y + r4.w;
r4.w = r13.y * r12.z + r4.w;
r12.xy = float2(0.535533905,1) + -r14.ww;
r5.w = saturate(r12.x + -r8.x);
r5.w = r5.w * r5.w;
r5.w = r5.w * r11.z;
r11.z = -r14.w + -r8.x;
r13.xy = saturate(float2(1.53553391,2.53553391) + r11.zz);
r11.z = min(r14.z, r13.x);
r12.x = saturate(r12.x);
r12.z = 1 + -r12.x;
r12.z = min(r12.z, r11.z);
r13.z = -r12.z * 0.5 + r11.z;
r12.z = r13.z * r12.z;
r11.z = r11.z * r12.x + r12.z;
r12.x = min(r13.x, r12.y);
r12.y = min(r12.x, r12.w);
r12.z = -r12.y * 0.5 + r12.x;
r12.y = r12.z * r12.y;
r10.w = r12.x * r10.w + r12.y;
r12.x = 1 + -r13.x;
r12.x = min(r13.y, r12.x);
r12.y = -r12.x * 0.5 + r13.y;
r12.x = r12.y * r12.x;
r12.x = r13.y * r13.x + r12.x;
r4.w = r11.w * r11.z + r4.w;
r4.w = r5.w * 0.5 + r4.w;
r4.w = r11.x * r12.x + r4.w;
r4.w = r11.y * r10.w + r4.w;
} else {
r4.w = 0;
}
if (r10.y != 0) {
r11.xyzw = float4(1,3,5,3) * cb1[40].wwww;
r12.xyzw = r9.zwzw * cb1[40].wwww + r11.xyyy;
r13.xyzw = t2.GatherCmp(s2_s, r12.xy, r6.w).xyzw;
r12.xyzw = t2.GatherCmp(s2_s, r12.zw, r6.w).xyzw;
r11.xy = r9.zw * cb1[40].ww + r11.zw;
r11.xyzw = t2.GatherCmp(s2_s, r11.xy, r6.w).xyzw;
r14.xyz = float3(1.53553391,1,1) + -r8.xwx;
r14.x = saturate(r14.x);
r5.w = 1 + -r14.x;
r10.w = min(r14.y, r5.w);
r14.w = -r10.w * 0.5 + r14.y;
r10.w = r14.w * r10.w;
r10.w = r14.y * r14.x + r10.w;
r14.w = saturate(0.535533905 + r8.x);
r15.x = 1 + -r14.w;
r15.y = min(r15.x, r14.y);
r15.z = -r15.y * 0.5 + r14.y;
r15.y = r15.z * r15.y;
r15.y = r14.y * r14.w + r15.y;
r15.z = r8.x + r8.w;
r15.z = saturate(-1.53553391 + r15.z);
r15.z = r15.z * r15.z;
r15.z = -r15.z * 0.5 + 1;
r16.xy = r14.zy + r8.wx;
r16.xy = saturate(float2(-1.53553391,-1.53553391) + r16.xy);
r16.xy = r16.xy * r16.xy;
r16.xy = -r16.xy * float2(0.5,0.5) + float2(1,1);
r10.w = r13.w * r10.w + r4.w;
r10.w = r13.z * r15.z + r10.w;
r10.w = r13.x * r15.y + r10.w;
r10.w = r13.y * r16.x + r10.w;
r10.w = r10.w + r12.w;
r10.w = r10.w + r12.z;
r10.w = r10.w + r12.x;
r10.w = r10.w + r12.y;
r12.x = 1 + -r14.y;
r5.w = min(r12.x, r5.w);
r12.y = -r5.w * 0.5 + r12.x;
r5.w = r12.y * r5.w;
r5.w = r12.x * r14.x + r5.w;
r12.y = min(r12.x, r15.x);
r12.z = -r12.y * 0.5 + r12.x;
r12.y = r12.z * r12.y;
r12.x = r12.x * r14.w + r12.y;
r12.y = r14.z + r14.y;
r12.y = saturate(-1.53553391 + r12.y);
r12.y = r12.y * r12.y;
r12.y = -r12.y * 0.5 + 1;
r10.w = r11.w * r16.y + r10.w;
r5.w = r11.z * r5.w + r10.w;
r5.w = r11.x * r12.y + r5.w;
r4.w = r11.y * r12.x + r5.w;
}
if (r10.z != 0) {
r11.xyzw = float4(1,5,3,5) * cb1[40].wwww;
r12.xyzw = r9.zwzw * cb1[40].wwww + r11.xyzw;
r13.xyzw = t2.GatherCmp(s2_s, r12.xy, r6.w).xyzw;
r12.xyzw = t2.GatherCmp(s2_s, r12.zw, r6.w).xyzw;
r9.zw = r9.zw * cb1[40].ww + r11.ww;
r11.xyzw = t2.GatherCmp(s2_s, r9.zw, r6.w).xyzw;
r14.xyzw = float4(0.535533905,1.53553391,1,1) + -r8.yzxw;
r8.xy = saturate(r14.xy + -r14.zz);
r5.w = r8.x * r8.x;
r5.w = r5.w * r13.x;
r15.xyzw = float4(1,0.535533905,0.535533905,1) + -r14.zzww;
r8.x = min(r15.x, r8.y);
r14.xy = saturate(r14.xy);
r9.zw = float2(1,1) + -r14.xy;
r8.z = min(r9.z, r8.x);
r9.z = -r8.z * 0.5 + r8.x;
r8.z = r9.z * r8.z;
r8.x = r8.x * r14.x + r8.z;
r8.z = min(r14.w, r8.y);
r16.xy = saturate(r15.yz);
r16.zw = float2(1,1) + -r16.xy;
r9.z = min(r16.z, r8.z);
r10.w = -r9.z * 0.5 + r8.z;
r9.z = r10.w * r9.z;
r8.z = r8.z * r16.x + r9.z;
r9.z = -r14.z + -r8.w;
r9.z = saturate(2.53553391 + r9.z);
r10.w = 1 + -r8.y;
r10.w = min(r10.w, r9.z);
r13.x = -r10.w * 0.5 + r9.z;
r10.w = r13.x * r10.w;
r8.y = r9.z * r8.y + r10.w;
r8.z = r13.w * r8.z + r4.w;
r8.y = r13.z * r8.y + r8.z;
r5.w = r5.w * 0.5 + r8.y;
r5.w = r13.y * r8.x + r5.w;
r8.x = min(r15.x, r9.w);
r8.y = -r8.x * 0.5 + r15.x;
r8.x = r8.y * r8.x;
r8.x = r15.x * r14.y + r8.x;
r8.y = saturate(0.535533905 + r8.w);
r8.z = 1 + -r8.y;
r8.z = min(r15.x, r8.z);
r9.z = -r8.z * 0.5 + r15.x;
r8.z = r9.z * r8.z;
r8.y = r15.x * r8.y + r8.z;
r8.z = r14.z + r8.w;
r8.z = saturate(-1.53553391 + r8.z);
r8.z = r8.z * r8.z;
r8.z = -r8.z * 0.5 + 1;
r8.w = r14.w + r14.z;
r8.w = saturate(-1.53553391 + r8.w);
r8.w = r8.w * r8.w;
r8.w = -r8.w * 0.5 + 1;
r5.w = r12.w * r8.z + r5.w;
r5.w = r12.z * r8.w + r5.w;
r5.w = r12.x * r8.x + r5.w;
r5.w = r12.y * r8.y + r5.w;
r8.x = saturate(r15.z + -r14.z);
r8.x = r8.x * r8.x;
r8.x = r8.x * r11.y;
r8.y = -r14.z + -r14.w;
r8.yz = saturate(float2(1.53553391,2.53553391) + r8.yy);
r9.zw = min(r15.wx, r8.yy);
r12.xy = min(r9.zw, r16.zw);
r12.zw = -r12.xy * float2(0.5,0.5) + r9.zw;
r12.xy = r12.zw * r12.xy;
r9.zw = r9.zw * r16.xy + r12.xy;
r8.w = 1 + -r8.y;
r8.w = min(r8.z, r8.w);
r10.w = -r8.w * 0.5 + r8.z;
r8.w = r10.w * r8.w;
r8.y = r8.z * r8.y + r8.w;
r5.w = r11.w * r8.y + r5.w;
r5.w = r11.z * r9.z + r5.w;
r5.w = r11.x * r9.w + r5.w;
r4.w = r8.x * 0.5 + r5.w;
}
r6.xyw = r6.xyw * float3(0.5,-0.5,1) + float3(0.5,0.5,0);
r6.xyw = r6.xyw * float3(2,2,2) + float3(-1,-1,-1);
r6.xyw = float3(1,1,1) + -abs(r6.xyw);
r6.xyw = max(float3(0,0,0), r6.xyw);
r6.xyw = saturate(cb1[32].xyz * r6.xyw);
r6.xyw = float3(1,1,1) + -r6.xyw;
r5.w = max(r6.y, r6.w);
r5.w = max(r6.x, r5.w);
r4.w = saturate(r4.w * 0.0482842699 + r5.w);
} else {
r4.w = 1;
}
} else {
r4.w = 1;
}
r5.w = -1 + cb1[38].y;
r5.w = 0.5 * r5.w;
r2.w = saturate(r2.w * 0.0482842699 + -r5.w);
r6.xyw = -cb1[r0.w+20].xyz + r1.xyz;
r6.xyw = saturate(cb1[r0.w+24].xyz * abs(r6.xyw) + cb1[r0.w+28].xyz);
r6.x = max(r6.x, r6.y);
r6.x = max(r6.x, r6.w);
r6.y = dot(cb1[35].xyzw, icb[r0.w+0].xyzw);
r1.w = -r6.y + r1.w;
r6.y = dot(cb1[36].xyzw, icb[r0.w+0].xyzw);
r1.w = saturate(r6.y * r1.w);
r1.w = r6.x * r1.w;
r6.xy = cmp((int2)r0.ww == int2(1,2));
r5.x = r6.x ? r5.x : 0;
r5.x = r6.y ? r5.y : r5.x;
r5.x = r6.z ? r5.z : r5.x;
r5.y = r5.x * r1.w;
r5.z = cmp(0 < r5.y);
if (r5.z != 0) {
r6.x = cmp((int)r0.w == asint(cb1[41].x));
if (r6.x != 0) {
if (r0.w != 0) {
r8.xyzw = cb1[5].xyzw * r0.yyyy;
r8.xyzw = cb1[4].xyzw * r0.xxxx + r8.xyzw;
r8.xyzw = cb1[6].xyzw * r0.zzzz + r8.xyzw;
r8.xyzw = cb1[7].xyzw + r8.xyzw;
r8.xyz = r8.xyz / r8.www;
r11.xyzw = r8.yxxx * float4(-0.5,0.5,0.5,0.5) + float4(0.5,0.5,0.5,0.5);
r11.xyzw = r11.xyzw * cb1[40].zzzz + float4(-2.5,-2.5,-2.5,-2.5);
r6.xw = floor(r11.wx);
r11.xyzw = r11.xyzw + -r6.wxxx;
r9.zw = cb1[40].ww * r6.xw;
if (r10.x != 0) {
r12.xy = r6.xw * cb1[40].ww + cb1[40].ww;
r12.xyzw = t2.GatherCmp(s2_s, r12.xy, r8.z).xyzw;
r13.xyzw = cb1[40].wwww * float4(3,1,5,1) + r9.zwzw;
r14.xyzw = t2.GatherCmp(s2_s, r13.xy, r8.z).xyzw;
r13.xyzw = t2.GatherCmp(s2_s, r13.zw, r8.z).xyzw;
r15.xyzw = float4(0.535533905,1.53553391,1,1) + -r11.wwxw;
r9.zw = saturate(r15.xy + -r11.xx);
r8.w = r9.z * r9.z;
r8.w = r8.w * r12.w;
r16.xy = min(r15.zw, r9.ww);
r15.xy = saturate(r15.xy);
r16.zw = float2(1,1) + -r15.xy;
r9.z = min(r16.x, r16.z);
r10.w = -r9.z * 0.5 + r16.x;
r9.z = r10.w * r9.z;
r9.z = r16.x * r15.x + r9.z;
r10.w = saturate(0.535533905 + -r11.x);
r12.w = 1 + -r10.w;
r15.x = min(r16.y, r12.w);
r16.x = -r15.x * 0.5 + r16.y;
r15.x = r16.x * r15.x;
r15.x = r16.y * r10.w + r15.x;
r16.x = -r11.x + -r11.w;
r16.x = saturate(2.53553391 + r16.x);
r16.y = 1 + -r9.w;
r16.y = min(r16.x, r16.y);
r16.z = -r16.y * 0.5 + r16.x;
r16.y = r16.z * r16.y;
r9.w = r16.x * r9.w + r16.y;
r9.z = r12.z * r9.z;
r8.w = r8.w * 0.5 + r9.z;
r8.w = r12.x * r15.x + r8.w;
r8.w = r12.y * r9.w + r8.w;
r9.z = min(r16.w, r15.z);
r9.w = -r9.z * 0.5 + r15.z;
r9.z = r9.w * r9.z;
r9.z = r15.z * r15.y + r9.z;
r9.w = saturate(0.535533905 + r11.w);
r12.x = 1 + -r9.w;
r12.x = min(r15.z, r12.x);
r12.y = -r12.x * 0.5 + r15.z;
r12.x = r12.y * r12.x;
r9.w = r15.z * r9.w + r12.x;
r12.x = r11.w + r11.x;
r12.x = saturate(-1.53553391 + r12.x);
r12.x = r12.x * r12.x;
r12.x = -r12.x * 0.5 + 1;
r12.y = r15.w + r11.x;
r12.y = saturate(-1.53553391 + r12.y);
r12.y = r12.y * r12.y;
r12.y = -r12.y * 0.5 + 1;
r8.w = r14.w * r9.z + r8.w;
r8.w = r14.z * r9.w + r8.w;
r8.w = r14.x * r12.x + r8.w;
r8.w = r14.y * r12.y + r8.w;
r9.zw = float2(0.535533905,1) + -r15.ww;
r12.x = saturate(r9.z + -r11.x);
r12.x = r12.x * r12.x;
r12.x = r12.x * r13.z;
r12.y = -r15.w + -r11.x;
r12.yz = saturate(float2(1.53553391,2.53553391) + r12.yy);
r13.z = min(r15.z, r12.y);
r9.z = saturate(r9.z);
r14.x = 1 + -r9.z;
r14.x = min(r14.x, r13.z);
r14.y = -r14.x * 0.5 + r13.z;
r14.x = r14.y * r14.x;
r9.z = r13.z * r9.z + r14.x;
r9.w = min(r12.y, r9.w);
r12.w = min(r9.w, r12.w);
r13.z = -r12.w * 0.5 + r9.w;
r12.w = r13.z * r12.w;
r9.w = r9.w * r10.w + r12.w;
r10.w = 1 + -r12.y;
r10.w = min(r12.z, r10.w);
r12.w = -r10.w * 0.5 + r12.z;
r10.w = r12.w * r10.w;
r10.w = r12.z * r12.y + r10.w;
r8.w = r13.w * r9.z + r8.w;
r8.w = r12.x * 0.5 + r8.w;
r8.w = r13.x * r10.w + r8.w;
r8.w = r13.y * r9.w + r8.w;
} else {
r8.w = 0;
}
if (r10.y != 0) {
r12.xyzw = float4(1,3,5,3) * cb1[40].wwww;
r13.xyzw = r6.xwxw * cb1[40].wwww + r12.xyyy;
r14.xyzw = t2.GatherCmp(s2_s, r13.xy, r8.z).xyzw;
r13.xyzw = t2.GatherCmp(s2_s, r13.zw, r8.z).xyzw;
r9.zw = r6.xw * cb1[40].ww + r12.zw;
r12.xyzw = t2.GatherCmp(s2_s, r9.zw, r8.z).xyzw;
r15.xyz = float3(1.53553391,1,1) + -r11.xwx;
r15.x = saturate(r15.x);
r9.z = 1 + -r15.x;
r9.w = min(r15.y, r9.z);
r10.w = -r9.w * 0.5 + r15.y;
r9.w = r10.w * r9.w;
r9.w = r15.y * r15.x + r9.w;
r10.w = saturate(0.535533905 + r11.x);
r15.w = 1 + -r10.w;
r16.x = min(r15.y, r15.w);
r16.y = -r16.x * 0.5 + r15.y;
r16.x = r16.y * r16.x;
r16.x = r15.y * r10.w + r16.x;
r16.y = r11.x + r11.w;
r16.y = saturate(-1.53553391 + r16.y);
r16.y = r16.y * r16.y;
r16.y = -r16.y * 0.5 + 1;
r16.zw = r15.zy + r11.wx;
r16.zw = saturate(float2(-1.53553391,-1.53553391) + r16.zw);
r16.zw = r16.zw * r16.zw;
r16.zw = -r16.zw * float2(0.5,0.5) + float2(1,1);
r9.w = r14.w * r9.w + r8.w;
r9.w = r14.z * r16.y + r9.w;
r9.w = r14.x * r16.x + r9.w;
r9.w = r14.y * r16.z + r9.w;
r9.w = r9.w + r13.w;
r9.w = r9.w + r13.z;
r9.w = r9.w + r13.x;
r9.w = r9.w + r13.y;
r13.x = 1 + -r15.y;
r9.z = min(r13.x, r9.z);
r13.y = -r9.z * 0.5 + r13.x;
r9.z = r13.y * r9.z;
r9.z = r13.x * r15.x + r9.z;
r13.y = min(r13.x, r15.w);
r13.z = -r13.y * 0.5 + r13.x;
r13.y = r13.z * r13.y;
r10.w = r13.x * r10.w + r13.y;
r13.x = r15.z + r15.y;
r13.x = saturate(-1.53553391 + r13.x);
r13.x = r13.x * r13.x;
r13.x = -r13.x * 0.5 + 1;
r9.w = r12.w * r16.w + r9.w;
r9.z = r12.z * r9.z + r9.w;
r9.z = r12.x * r13.x + r9.z;
r8.w = r12.y * r10.w + r9.z;
}
if (r10.z != 0) {
r12.xyzw = float4(1,5,3,5) * cb1[40].wwww;
r13.xyzw = r6.xwxw * cb1[40].wwww + r12.xyzw;
r14.xyzw = t2.GatherCmp(s2_s, r13.xy, r8.z).xyzw;
r13.xyzw = t2.GatherCmp(s2_s, r13.zw, r8.z).xyzw;
r6.xw = r6.xw * cb1[40].ww + r12.ww;
r12.xyzw = t2.GatherCmp(s2_s, r6.xw, r8.z).xyzw;
r15.xyzw = float4(0.535533905,1.53553391,1,1) + -r11.yzxw;
r6.xw = saturate(r15.xy + -r15.zz);
r6.x = r6.x * r6.x;
r6.x = r6.x * r14.x;
r16.xyzw = float4(1,0.535533905,0.535533905,1) + -r15.zzww;
r9.z = min(r16.x, r6.w);
r15.xy = saturate(r15.xy);
r11.xy = float2(1,1) + -r15.xy;
r9.w = min(r11.x, r9.z);
r10.w = -r9.w * 0.5 + r9.z;
r9.w = r10.w * r9.w;
r9.z = r9.z * r15.x + r9.w;
r9.w = min(r15.w, r6.w);
r11.xz = saturate(r16.yz);
r17.xy = float2(1,1) + -r11.xz;
r10.w = min(r17.x, r9.w);
r14.x = -r10.w * 0.5 + r9.w;
r10.w = r14.x * r10.w;
r9.w = r9.w * r11.x + r10.w;
r10.w = -r15.z + -r11.w;
r10.w = saturate(2.53553391 + r10.w);
r14.x = 1 + -r6.w;
r14.x = min(r14.x, r10.w);
r15.x = -r14.x * 0.5 + r10.w;
r14.x = r15.x * r14.x;
r6.w = r10.w * r6.w + r14.x;
r9.w = r14.w * r9.w + r8.w;
r6.w = r14.z * r6.w + r9.w;
r6.x = r6.x * 0.5 + r6.w;
r6.x = r14.y * r9.z + r6.x;
r6.w = min(r16.x, r11.y);
r9.z = -r6.w * 0.5 + r16.x;
r6.w = r9.z * r6.w;
r6.w = r16.x * r15.y + r6.w;
r9.z = saturate(0.535533905 + r11.w);
r9.w = 1 + -r9.z;
r9.w = min(r16.x, r9.w);
r10.w = -r9.w * 0.5 + r16.x;
r9.w = r10.w * r9.w;
r9.z = r16.x * r9.z + r9.w;
r9.w = r15.z + r11.w;
r9.w = saturate(-1.53553391 + r9.w);
r9.w = r9.w * r9.w;
r9.w = -r9.w * 0.5 + 1;
r10.w = r15.w + r15.z;
r10.w = saturate(-1.53553391 + r10.w);
r10.w = r10.w * r10.w;
r10.w = -r10.w * 0.5 + 1;
r6.x = r13.w * r9.w + r6.x;
r6.x = r13.z * r10.w + r6.x;
r6.x = r13.x * r6.w + r6.x;
r6.x = r13.y * r9.z + r6.x;
r6.w = saturate(r16.z + -r15.z);
r6.w = r6.w * r6.w;
r6.w = r6.w * r12.y;
r9.z = -r15.z + -r15.w;
r9.zw = saturate(float2(1.53553391,2.53553391) + r9.zz);
r11.yw = min(r16.wx, r9.zz);
r13.xy = min(r11.yw, r17.xy);
r13.zw = -r13.xy * float2(0.5,0.5) + r11.yw;
r13.xy = r13.zw * r13.xy;
r11.xy = r11.yw * r11.xz + r13.xy;
r10.w = 1 + -r9.z;
r10.w = min(r10.w, r9.w);
r11.z = -r10.w * 0.5 + r9.w;
r10.w = r11.z * r10.w;
r9.z = r9.w * r9.z + r10.w;
r6.x = r12.w * r9.z + r6.x;
r6.x = r12.z * r11.x + r6.x;
r6.x = r12.x * r11.y + r6.x;
r8.w = r6.w * 0.5 + r6.x;
}
r8.xyz = r8.xyz * float3(0.5,-0.5,1) + float3(0.5,0.5,0);
r8.xyz = r8.xyz * float3(2,2,2) + float3(-1,-1,-1);
r8.xyz = float3(1,1,1) + -abs(r8.xyz);
r8.xyz = max(float3(0,0,0), r8.xyz);
r8.xyz = saturate(cb1[32].xyz * r8.xyz);
r8.xyz = float3(1,1,1) + -r8.xyz;
r6.x = max(r8.y, r8.z);
r6.x = max(r8.x, r6.x);
r6.x = saturate(r8.w * 0.0482842699 + r6.x);
} else {
r6.x = 1;
}
r6.w = 1 + -r6.x;
r4.w = -r6.w * r5.y + 1;
r3.w = -1;
} else {
r6.x = r4.w;
}
r2.xyz = r6.yyy ? r3.xyz : r2.xyz;
r2.xyz = r6.zzz ? r4.xyz : r2.xyz;
r7.xyzw = r2.yxxx * r7.xyzw + float4(-2.5,-2.5,-2.5,-2.5);
r3.xy = floor(r7.wx);
r7.xyzw = r7.xyzw + -r3.yxxx;
r4.xy = r3.xy * r9.xy;
if (r10.x != 0) {
r3.xy = r3.xy * r9.xy + r9.xy;
r8.xyzw = t1.GatherCmp(s2_s, r3.xy, r2.z).xyzw;
r9.xyzw = cb1[39].wwww * float4(0.75,1,1.25,1) + r4.xyxy;
r11.xyzw = t1.GatherCmp(s2_s, r9.xy, r2.z).xyzw;
r9.xyzw = t1.GatherCmp(s2_s, r9.zw, r2.z).xyzw;
r12.xyzw = float4(0.535533905,1.53553391,1,1) + -r7.wwxw;
r3.xy = saturate(r12.xy + -r7.xx);
r3.x = r3.x * r3.x;
r3.x = r3.x * r8.w;
r6.yz = min(r12.zw, r3.yy);
r12.xy = saturate(r12.xy);
r10.xw = float2(1,1) + -r12.xy;
r3.z = min(r10.x, r6.y);
r4.z = -r3.z * 0.5 + r6.y;
r3.z = r4.z * r3.z;
r3.z = r6.y * r12.x + r3.z;
r4.z = saturate(0.535533905 + -r7.x);
r6.y = 1 + -r4.z;
r6.w = min(r6.z, r6.y);
r8.w = -r6.w * 0.5 + r6.z;
r6.w = r8.w * r6.w;
r6.z = r6.z * r4.z + r6.w;
r6.w = -r7.x + -r7.w;
r6.w = saturate(2.53553391 + r6.w);
r8.w = 1 + -r3.y;
r8.w = min(r8.w, r6.w);
r10.x = -r8.w * 0.5 + r6.w;
r8.w = r10.x * r8.w;
r3.y = r6.w * r3.y + r8.w;
r3.z = r8.z * r3.z;
r3.x = r3.x * 0.5 + r3.z;
r3.x = r8.x * r6.z + r3.x;
r3.x = r8.y * r3.y + r3.x;
r3.y = min(r12.z, r10.w);
r3.z = -r3.y * 0.5 + r12.z;
r3.y = r3.z * r3.y;
r3.y = r12.z * r12.y + r3.y;
r3.z = saturate(0.535533905 + r7.w);
r6.z = 1 + -r3.z;
r6.z = min(r12.z, r6.z);
r6.w = -r6.z * 0.5 + r12.z;
r6.z = r6.w * r6.z;
r3.z = r12.z * r3.z + r6.z;
r6.z = r7.w + r7.x;
r6.z = saturate(-1.53553391 + r6.z);
r6.z = r6.z * r6.z;
r6.z = -r6.z * 0.5 + 1;
r6.w = r12.w + r7.x;
r6.w = saturate(-1.53553391 + r6.w);
r6.w = r6.w * r6.w;
r6.w = -r6.w * 0.5 + 1;
r3.x = r11.w * r3.y + r3.x;
r3.x = r11.z * r3.z + r3.x;
r3.x = r11.x * r6.z + r3.x;
r3.x = r11.y * r6.w + r3.x;
r3.yz = float2(0.535533905,1) + -r12.ww;
r6.z = saturate(r3.y + -r7.x);
r6.z = r6.z * r6.z;
r6.z = r6.z * r9.z;
r6.w = -r12.w + -r7.x;
r8.xy = saturate(float2(1.53553391,2.53553391) + r6.ww);
r6.w = min(r12.z, r8.x);
r3.y = saturate(r3.y);
r8.z = 1 + -r3.y;
r8.z = min(r8.z, r6.w);
r8.w = -r8.z * 0.5 + r6.w;
r8.z = r8.w * r8.z;
r3.y = r6.w * r3.y + r8.z;
r3.z = min(r8.x, r3.z);
r6.y = min(r3.z, r6.y);
r6.w = -r6.y * 0.5 + r3.z;
r6.y = r6.w * r6.y;
r3.z = r3.z * r4.z + r6.y;
r4.z = 1 + -r8.x;
r4.z = min(r8.y, r4.z);
r6.y = -r4.z * 0.5 + r8.y;
r4.z = r6.y * r4.z;
r4.z = r8.y * r8.x + r4.z;
r3.x = r9.w * r3.y + r3.x;
r3.x = r6.z * 0.5 + r3.x;
r3.x = r9.x * r4.z + r3.x;
r3.x = r9.y * r3.z + r3.x;
} else {
r3.x = 0;
}
if (r10.y != 0) {
r8.xyzw = cb1[39].wwww * float4(0.25,3,0.75,3) + r4.xyxy;
r9.xyzw = t1.GatherCmp(s2_s, r8.xy, r2.z).xyzw;
r8.xyzw = t1.GatherCmp(s2_s, r8.zw, r2.z).xyzw;
r3.yz = cb1[39].ww * float2(1.25,3) + r4.xy;
r11.xyzw = t1.GatherCmp(s2_s, r3.yz, r2.z).xyzw;
r6.yzw = float3(1.53553391,1,1) + -r7.xwx;
r6.y = saturate(r6.y);
r3.y = 1 + -r6.y;
r3.z = min(r6.z, r3.y);
r4.z = -r3.z * 0.5 + r6.z;
r3.z = r4.z * r3.z;
r3.z = r6.z * r6.y + r3.z;
r4.z = saturate(0.535533905 + r7.x);
r10.x = 1 + -r4.z;
r10.y = min(r10.x, r6.z);
r10.w = -r10.y * 0.5 + r6.z;
r10.y = r10.w * r10.y;
r10.y = r6.z * r4.z + r10.y;
r10.w = r7.x + r7.w;
r10.w = saturate(-1.53553391 + r10.w);
r10.w = r10.w * r10.w;
r10.w = -r10.w * 0.5 + 1;
r12.xy = r6.wz + r7.wx;
r12.xy = saturate(float2(-1.53553391,-1.53553391) + r12.xy);
r12.xy = r12.xy * r12.xy;
r12.xy = -r12.xy * float2(0.5,0.5) + float2(1,1);
r3.z = r9.w * r3.z + r3.x;
r3.z = r9.z * r10.w + r3.z;
r3.z = r9.x * r10.y + r3.z;
r3.z = r9.y * r12.x + r3.z;
r3.z = r3.z + r8.w;
r3.z = r3.z + r8.z;
r3.z = r3.z + r8.x;
r3.z = r3.z + r8.y;
r8.x = 1 + -r6.z;
r3.y = min(r8.x, r3.y);
r8.y = -r3.y * 0.5 + r8.x;
r3.y = r8.y * r3.y;
r3.y = r8.x * r6.y + r3.y;
r6.y = min(r8.x, r10.x);
r8.y = -r6.y * 0.5 + r8.x;
r6.y = r8.y * r6.y;
r4.z = r8.x * r4.z + r6.y;
r6.y = r6.w + r6.z;
r6.y = saturate(-1.53553391 + r6.y);
r6.y = r6.y * r6.y;
r6.y = -r6.y * 0.5 + 1;
r3.z = r11.w * r12.y + r3.z;
r3.y = r11.z * r3.y + r3.z;
r3.y = r11.x * r6.y + r3.y;
r3.x = r11.y * r4.z + r3.y;
}
if (r10.z != 0) {
r8.xyzw = cb1[39].wwww * float4(0.25,5,0.75,5) + r4.xyxy;
r9.xyzw = t1.GatherCmp(s2_s, r8.xy, r2.z).xyzw;
r8.xyzw = t1.GatherCmp(s2_s, r8.zw, r2.z).xyzw;
r3.yz = cb1[39].ww * float2(1.25,5) + r4.xy;
r10.xyzw = t1.GatherCmp(s2_s, r3.yz, r2.z).xyzw;
r11.xyzw = float4(0.535533905,1.53553391,1,1) + -r7.yzxw;
r3.yz = saturate(r11.xy + -r11.zz);
r3.y = r3.y * r3.y;
r3.y = r3.y * r9.x;
r12.xyzw = float4(1,0.535533905,0.535533905,1) + -r11.zzww;
r4.x = min(r12.x, r3.z);
r11.xy = saturate(r11.xy);
r4.yz = float2(1,1) + -r11.xy;
r4.y = min(r4.x, r4.y);
r6.y = -r4.y * 0.5 + r4.x;
r4.y = r6.y * r4.y;
r4.x = r4.x * r11.x + r4.y;
r4.y = min(r11.w, r3.z);
r6.yz = saturate(r12.yz);
r7.xy = float2(1,1) + -r6.yz;
r6.w = min(r7.x, r4.y);
r7.z = -r6.w * 0.5 + r4.y;
r6.w = r7.z * r6.w;
r4.y = r4.y * r6.y + r6.w;
r6.w = -r11.z + -r7.w;
r6.w = saturate(2.53553391 + r6.w);
r7.z = 1 + -r3.z;
r7.z = min(r7.z, r6.w);
r9.x = -r7.z * 0.5 + r6.w;
r7.z = r9.x * r7.z;
r3.z = r6.w * r3.z + r7.z;
r4.y = r9.w * r4.y + r3.x;
r3.z = r9.z * r3.z + r4.y;
r3.y = r3.y * 0.5 + r3.z;
r3.y = r9.y * r4.x + r3.y;
r3.z = min(r12.x, r4.z);
r4.x = -r3.z * 0.5 + r12.x;
r3.z = r4.x * r3.z;
r3.z = r12.x * r11.y + r3.z;
r4.x = saturate(0.535533905 + r7.w);
r4.y = 1 + -r4.x;
r4.y = min(r12.x, r4.y);
r4.z = -r4.y * 0.5 + r12.x;
r4.y = r4.z * r4.y;
r4.x = r12.x * r4.x + r4.y;
r4.y = r11.z + r7.w;
r4.y = saturate(-1.53553391 + r4.y);
r4.y = r4.y * r4.y;
r4.y = -r4.y * 0.5 + 1;
r4.z = r11.w + r11.z;
r4.z = saturate(-1.53553391 + r4.z);
r4.z = r4.z * r4.z;
r4.z = -r4.z * 0.5 + 1;
r3.y = r8.w * r4.y + r3.y;
r3.y = r8.z * r4.z + r3.y;
r3.y = r8.x * r3.z + r3.y;
r3.y = r8.y * r4.x + r3.y;
r3.z = saturate(r12.z + -r11.z);
r3.z = r3.z * r3.z;
r3.z = r3.z * r10.y;
r4.x = -r11.z + -r11.w;
r4.xy = saturate(float2(1.53553391,2.53553391) + r4.xx);
r7.zw = min(r12.wx, r4.xx);
r7.xy = min(r7.zw, r7.xy);
r8.xy = -r7.xy * float2(0.5,0.5) + r7.zw;
r7.xy = r8.xy * r7.xy;
r6.yz = r7.zw * r6.yz + r7.xy;
r4.z = 1 + -r4.x;
r4.z = min(r4.y, r4.z);
r6.w = -r4.z * 0.5 + r4.y;
r4.z = r6.w * r4.z;
r4.x = r4.y * r4.x + r4.z;
r3.y = r10.w * r4.x + r3.y;
r3.y = r10.z * r6.y + r3.y;
r3.y = r10.x * r6.z + r3.y;
r3.x = r3.z * 0.5 + r3.y;
}
r3.x = 0.0482842699 * r3.x;
r3.x = min(r6.x, r3.x);
r1.w = -r1.w * r5.x + 1;
r0.w = dot(cb1[34].xyzw, icb[r0.w+0].xyzw);
r0.w = r1.w * r0.w + 1;
r1.w = cb1[38].y * r0.w;
r0.w = cb1[38].y * r0.w + -1;
r0.w = 0.5 * r0.w;
r0.w = saturate(r3.x * r1.w + -r0.w);
r0.w = r0.w + -r2.w;
r2.w = r5.y * r0.w + r2.w;
} else {
r2.xyz = float3(0,0,0);
}
r0.w = log2(r2.w);
r0.w = cb1[38].x * r0.w;
r0.w = exp2(r0.w);
r1.w = cb1[38].z * r1.z;
r3.xy = t6.SampleLevel(s0_s, r1.xy, 0).xy;
r2.w = cmp(r3.x < r1.w);
if (r2.w != 0) {
r2.w = 1 + -r3.y;
r1.w = cmp(r2.w < r1.w);
if (r1.w != 0) {
r1.w = t5.SampleLevel(s1_s, r1.xy, 0).w;
} else {
r6.xyzw = float4(4,1,0.25,1) * cb1[40].xxyy;
r1.xy = r1.xy * r6.xy + float2(-0.5,-0.5);
r3.xy = floor(r1.xy);
r1.xy = -r3.xy + r1.xy;
r4.xy = float2(1,1) + -r1.xy;
r1.w = 0;
r2.w = 0;
while (true) {
r3.z = cmp((uint)r2.w >= 4);
if (r3.z != 0) break;
r3.z = (int)r2.w & 1;
r4.z = (uint)r2.w >> 1;
r6.x = (uint)r3.z;
r6.y = (uint)r4.z;
r6.xy = r6.xy + r3.xy;
r6.xy = float2(0.5,0.5) + r6.xy;
r6.xy = r6.xy * r6.zw;
r7.xy = t3.SampleLevel(s0_s, r6.xy, 0).xy;
r5.x = 1 + -r7.y;
r8.xyzw = t4.SampleLevel(s0_s, r6.xy, 0).xyzw;
r9.xyzw = t5.SampleLevel(s0_s, r6.xy, 0).xyzw;
r6.x = r1.z * cb1[38].z + -r7.x;
r5.x = r5.x + -r7.x;
r5.x = saturate(r6.x / r5.x);
r6.x = 8 * r5.x;
r7.xyzw = -r5.xxxx * float4(8,8,8,8) + float4(2,3,4,1);
r6.y = max(0, r7.w);
r6.x = min(1, r6.x);
r6.x = r8.x * r6.x;
r7.xyz = saturate(r7.xyz);
r6.x = r6.x * r7.x + r6.y;
r10.xyzw = saturate(r5.xxxx * float4(8,8,8,8) + float4(-1,-2,-3,-4));
r8.xyz = r10.xyz * r8.yzw;
r6.x = r8.x * r7.y + r6.x;
r6.x = r8.y * r7.z + r6.x;
r7.xyzw = -r5.xxxx * float4(8,8,8,8) + float4(5,6,7,8);
r7.xyz = saturate(r7.xyz);
r6.x = r8.z * r7.x + r6.x;
r6.y = r10.w * r9.x;
r6.x = r6.y * r7.y + r6.x;
r8.xyz = r5.xxx * float3(8,8,8) + float3(-5,-6,-7);
r8.xy = saturate(r8.xy);
r7.xy = r9.yz * r8.xy;
r5.x = r7.x * r7.z + r6.x;
r6.x = min(1, r7.w);
r5.x = r7.y * r6.x + r5.x;
r6.x = max(0, r8.z);
r5.x = r9.w * r6.x + r5.x;
r3.z = r3.z ? r1.x : r4.x;
r4.z = r4.z ? r1.y : r4.y;
r3.z = r4.z * r3.z;
r1.w = r5.x * r3.z + r1.w;
r2.w = (int)r2.w + 1;
}
}
} else {
r1.w = 1;
}
if (r5.z != 0) {
r1.x = cb1[38].z * r2.z;
r1.yz = t6.SampleLevel(s0_s, r2.xy, 0).xy;
r1.z = 1 + -r1.z;
r1.y = cmp(r1.y < r1.x);
if (r1.y != 0) {
r1.x = cmp(r1.z < r1.x);
if (r1.x != 0) {
r1.x = t5.SampleLevel(s1_s, r2.xy, 0).w;
} else {
r6.xyzw = float4(4,1,0.25,1) * cb1[40].xxyy;
r1.yz = r2.xy * r6.xy + float2(-0.5,-0.5);
r2.xy = floor(r1.yz);
r1.yz = -r2.xy + r1.yz;
r3.xy = float2(1,1) + -r1.yz;
r1.x = 0;
r2.w = 0;
while (true) {
r3.z = cmp((uint)r2.w >= 4);
if (r3.z != 0) break;
r3.z = (int)r2.w & 1;
r4.x = (uint)r2.w >> 1;
r6.x = (uint)r3.z;
r6.y = (uint)r4.x;
r4.yz = r6.xy + r2.xy;
r4.yz = float2(0.5,0.5) + r4.yz;
r4.yz = r4.yz * r6.zw;
r5.xz = t3.SampleLevel(s0_s, r4.yz, 0).xy;
r5.z = 1 + -r5.z;
r7.xyzw = t4.SampleLevel(s0_s, r4.yz, 0).xyzw;
r8.xyzw = t5.SampleLevel(s0_s, r4.yz, 0).xyzw;
r4.y = r2.z * cb1[38].z + -r5.x;
r4.z = r5.z + -r5.x;
r4.y = saturate(r4.y / r4.z);
r4.z = 8 * r4.y;
r9.xyzw = -r4.yyyy * float4(8,8,8,8) + float4(2,3,4,1);
r5.x = max(0, r9.w);
r4.z = min(1, r4.z);
r4.z = r7.x * r4.z;
r9.xyz = saturate(r9.xyz);
r4.z = r4.z * r9.x + r5.x;
r10.xyzw = saturate(r4.yyyy * float4(8,8,8,8) + float4(-1,-2,-3,-4));
r7.xyz = r10.xyz * r7.yzw;
r4.z = r7.x * r9.y + r4.z;
r4.z = r7.y * r9.z + r4.z;
r9.xyzw = -r4.yyyy * float4(8,8,8,8) + float4(5,6,7,8);
r9.xyz = saturate(r9.xyz);
r4.z = r7.z * r9.x + r4.z;
r5.x = r10.w * r8.x;
r4.z = r5.x * r9.y + r4.z;
r7.xyz = r4.yyy * float3(8,8,8) + float3(-5,-6,-7);
r7.xy = saturate(r7.xy);
r5.xz = r8.yz * r7.xy;
r4.y = r5.x * r9.z + r4.z;
r4.z = min(1, r9.w);
r4.y = r5.z * r4.z + r4.y;
r4.z = max(0, r7.z);
r4.y = r8.w * r4.z + r4.y;
r3.z = r3.z ? r1.y : r3.x;
r4.x = r4.x ? r1.z : r3.y;
r3.z = r4.x * r3.z;
r1.x = r4.y * r3.z + r1.x;
r2.w = (int)r2.w + 1;
}
}
} else {
r1.x = 1;
}
r1.x = r1.x + -r1.w;
r1.w = r5.y * r1.x + r1.w;
}
r0.x = dot(r0.xyz, r0.xyz);
r0.x = saturate(r0.x * cb1[33].x + cb1[33].y);
r0.x = saturate(r0.w * r1.w + r0.x);
if (r3.w != 0) {
r0.y = saturate(r4.w * cb1[38].y + -r5.w);
r0.y = log2(r0.y);
r0.y = cb1[38].x * r0.y;
r0.y = exp2(r0.y);
o0.x = min(r0.x, r0.y);
} else {
o0.x = r0.x;
}
return;
}

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)

#15
Posted 02/12/2017 06:33 PM   
  1 / 4    
Scroll To Top