JMC47





Content Producer Posts: 6,463

Threads: 28

Joined: Feb 2013





https://github.com/dolphin-emu/dolphin/pull/1812



In that pull request, there are some tasks that the developers of the implementation can't handle: figuring out if this is broken on anyone's graphics card/drivers. So, what I'd like to ask of people is to try a zfreeze title (less priority on Rogue Squadron 2/3, even though they're working, they're actually the least difficult zfreeze implementation and very unlikely to break) to make sure everything is working. Mario Power Tennis, many EA sports/racing games, and other titles use zfreeze for shadows and other important aspects.



There's a known issue of zfighting in Mario Power Tennis's Delfino Plaza Court, but since the phire's current graphics card is incapable of rendering the courts, he has no way of debugging it yet and should be ignored. Also, Fast depth should be UNCHECKED during testing.



Known zfreeze titles: Mario Power Tennis - Courts and Shadows

Mario Golf: Toadstool Tour - Main Menu

Blood Omen 2: Legacy of Kain - Skybox and menus for some reason.

NBA Live 2005 - Shadows and Main Menu

NBA Live 2006 - Main Menu???

Need For Speed Hot Pursuit 2 - Certain Car Shadows

NBA Street Volume 3 - Shadows

Star Wars Rogue Squadron 2

Star Wars Rogue Squadron 3

NHL 2003

Super Mario Strikers - Weapon Shadows (shells, Bananas, Bowser Event) + Goalposts

Likely other EA Sports Titles

Reporting Guidelines:



Since we're mostly concerned about making sure that graphics cards are working, it's very, very important that any report be made in the following format.



Game(s) tested: You put any games you tested here. Pretty simple

Graphics Card: Graphics card. For me, this would be a NVIDIA GTX 760.

Driver Version: For people on windows, just say the version of the driver. On my NVIDIA it's 347.09. On Linux, please say whether you're using proprietary or open source drivers.

Operating System: Windows, Linux, etc.



Notes: If you run into any unreported zfreeze problems, or if everything is perfect, etc. that goes here. If you run into a game that uses zfreeze that we don't know about, please put that down too! There are likely tons of EA Sports games that use it for shadows that we don't know about.



Builds:



Windows -

Mac OSX -

Linux - Have to build it yourself, sorry! A lot of work has been done recently on zfreeze, with multiple types of hacks and attempts to bring it together. Thanks to a collaboration between three developers with work spanning 3 years, there is an implementation in the wood works.In that pull request, there are some tasks that the developers of the implementation can't handle: figuring out if this is broken on anyone's graphics card/drivers. So, what I'd like to ask of people is to try a zfreeze title (less priority on Rogue Squadron 2/3, even though they're working, they're actually the least difficult zfreeze implementation and very unlikely to break) to make sure everything is working. Mario Power Tennis, many EA sports/racing games, and other titles use zfreeze for shadows and other important aspects.There's a known issue of zfighting in Mario Power Tennis's Delfino Plaza Court, but since the phire's current graphics card is incapable of rendering the courts, he has no way of debugging it yet and should be ignored. Also, Fast depth should be UNCHECKED during testing.Known zfreeze titles:Reporting Guidelines:Since we're mostly concerned about making sure that graphics cards are working, it's very, very important that any report be made in the following format.Game(s) tested: You put any games you tested here. Pretty simpleGraphics Card: Graphics card. For me, this would be a NVIDIA GTX 760.Driver Version: For people on windows, just say the version of the driver. On my NVIDIA it's 347.09. On Linux, please say whether you're using proprietary or open source drivers.Operating System: Windows, Linux, etc.Notes: If you run into any unreported zfreeze problems, or if everything is perfect, etc. that goes here. If you run into a game that uses zfreeze that we don't know about, please put that down too! There are likely tons of EA Sports games that use it for shadows that we don't know about.Builds:Windows - https://dl.dolphin-emu.org/prs/pr-1812-dolphin-latest-x64.7z Mac OSX - https://dl.dolphin-emu.org/prs/pr-1812-dolphin-latest.dmg Linux - Have to build it yourself, sorry! Find Reply Link_to_the_past





Link on steroids really Posts: 1,767

Threads: 17

Joined: Feb 2010 The Simpsons is an EA game with completely broken shadows all over the place, i wonder whether it falls in this category, doesn't seem influenced by the zfreeze build though. Find Reply pokemontrainer





Junior Member Posts: 28

Threads: 3

Joined: May 2014 Is this supposed to work on both opengl and D3D? Only works on D3D for me. (win64, GTX660, 347.09 drivers).



I can also confirm that this fixes NHL 06 and FIFA 07 shadows (meaning they also use zfreeze).



Mario Golf starting default tournament (D3D):



Game crashed with pixel shader error.

Cleared Shader cache but that didn't help

Even after force quitting dolphin, my X360 controller keeps vibrating (can this be fixed?)

This is my bad_ps_0000.txt:

//Pixel Shader for TEV stages



//1 TEV stages, 1 texgens, 524289 IND stages

int idot(int3 x, int3 y)

{

int3 tmp = x * y;

return tmp.x + tmp.y + tmp.z;

}

int idot(int4 x, int4 y)

{

int4 tmp = x * y;

return tmp.x + tmp.y + tmp.z + tmp.w;

}



int iround(float x) { return int (round(x)); }

int2 iround(float2 x) { return int2(round(x)); }

int3 iround(float3 x) { return int3(round(x)); }

int4 iround(float4 x) { return int4(round(x)); }



sampler samp0 : register(s0);

sampler samp1 : register(s1);

sampler samp2 : register(s2);

sampler samp3 : register(s3);

sampler samp4 : register(s4);

sampler samp5 : register(s5);

sampler samp6 : register(s6);

sampler samp7 : register(s7);



Texture2DArray Tex0 : register(t0);

Texture2DArray Tex1 : register(t1);

Texture2DArray Tex2 : register(t2);

Texture2DArray Tex3 : register(t3);

Texture2DArray Tex4 : register(t4);

Texture2DArray Tex5 : register(t5);

Texture2DArray Tex6 : register(t6);

Texture2DArray Tex7 : register(t7);



cbuffer PSBlock : register(b0) {

int4 color[4];

int4 k[4];

int4 alphaRef;

float4 texdim[8];

int4 czbias[2];

int4 cindscale[2];

int4 cindmtx[6];

int4 cfogcolor;

int4 cfogi;

float4 cfogf[2];

float4 czslope;

float4 cefbscale;

};

struct Light {

int4 color;

float4 cosatt;

float4 distatt;

float4 pos;

float4 dir;

};

cbuffer VSBlock : register(b1) {

float4 cpnmtx[6];

float4 cproj[4];

int4 cmtrl[4];

Light clights[8];

float4 ctexmtx[24];

float4 ctrmtx[64];

float4 cnmtx[32];

float4 cpostmtx[64];

float4 cpixelcenter;

};

globallycoherent RWBuffer<int> bbox_data : register(u2);

struct VS_OUTPUT {

float4 pos : POSITION;

float4 colors_0 : COLOR0;

float4 colors_1 : COLOR1;

float3 tex0 : TEXCOORD0;

float4 clipPos : TEXCOORD1;

float4 Normal : TEXCOORD2;

};

void main(

out float4 ocol0 : SV_Target0,

out float depth : SV_Depth,

in float4 rawpos : SV_Position,

in centroid float4 colors_0 : COLOR0,

in centroid float4 colors_1 : COLOR1

,

in centroid float3 uv0 : TEXCOORD0,

in centroid float4 clipPos : TEXCOORD1,

in centroid float4 Normal : TEXCOORD2 ) {

int4 c0 = color[1], c1 = color[2], c2 = color[3], prev = color[0];

int4 rastemp = int4(0, 0, 0, 0), textemp = int4(0, 0, 0, 0), konsttemp = int4(0, 0, 0, 0);

int3 comp16 = int3(1, 256, 0), comp24 = int3(1, 256, 256*256);

int alphabump=0;

int3 tevcoord=int3(0, 0, 0);

int2 wrappedcoord=int2(0,0), tempcoord=int2(0,0);

int4 tevin_a=int4(0,0,0,0),tevin_b=int4(0,0,0,0),tevin_c=int4(0,0,0,0),tevin_d=int4(0,0,0,0);



float3 _norm0 = normalize(Normal.xyz);



float3 pos = float3(clipPos.x,clipPos.y,Normal.w);

int4 lacc;

float3 ldir, h;

float dist, dist2, attn;

float4 col0, col1;

int2 fixpoint_uv0 = iround(uv0.xy * texdim[0].zw * 128.0);



// TEV stage 0

tevcoord.xy = fixpoint_uv0;

textemp = iround(255.0 * Tex0.Sample(samp0, float3((float2(tevcoord.xy)/128.0).xy * texdim[0].xy, 0.0))).rgba;

tevin_a = int4(int3(0,0,0), 0)&255;

tevin_b = int4(int3(0,0,0), textemp.a)&255;

tevin_c = int4(int3(0,0,0), c0.a)&255;

tevin_d = int4(textemp.rgb, 0);

// color combine

prev.rgb = clamp((((tevin_d.rgb)) + (((((tevin_a.rgb<<8) + (tevin_b.rgb-tevin_a.rgb)*(tevin_c.rgb+(tevin_c.rgb>>7)))) + 128)>>8)), int3(0,0,0), int3(255,255,255));

// alpha combine

prev.a = clamp((((tevin_d.a)) + (((((tevin_a.a<<8) + (tevin_b.a-tevin_a.a)*(tevin_c.a+(tevin_c.a>>7)))) + 128)>>8)), 0, 255);

prev = prev & 255;

int zCoord = czbias[1].x + iround((clipPos.z / clipPos.w) * float(czbias[1].y));

ocol0 = float4(prev) / 255.0;

} Find Reply JMC47





Content Producer Posts: 6,463

Threads: 28

Joined: Feb 2013 It should work in both OpenGL and D3D. Working in both for me. Make sure you don't have fast-depth on! Find Reply morgoth32





Junior Member Posts: 34

Threads: 2

Joined: Oct 2014 [color=#000000] Game(s) tested: mario tennis ntsc [/color]



[color=#000000] Graphics Card: Graphics card. 970 gt [/color]

[color=#000000] Driver Version: 347.09 [/color]

[color=#000000] Operating System: Windows 7 [/color]

[color=#000000] . [/color]

[color=#000000] Delphino plaza court under openGL shows the minigames elements blinking in single match mode. [/color]

[color=#000000] Under D3D that's better they appear at the beginning of the match for 0.5 sec. [/color]





[color=#000000] All other courts seem to work under openGL [/color]

[color=#000000] I had no issue with mario golf (tested opengl only). [/color] Find Reply pokemontrainer





Junior Member Posts: 28

Threads: 3

Joined: May 2014 (01-04-2015, 06:06 AM) JMC47 Wrote: It should work in both OpenGL and D3D. Working in both for me. Make sure you don't have fast-depth on!

I don't have fast-depth on. I can confirm that I get the same dome effect in opengl than in my reference 4803 build inside rogue squadron. FIFA 07 shadows, however, are fixed by this build in opengl. I don't have fast-depth on. I can confirm that I get the same dome effect in opengl than in my reference 4803 build inside rogue squadron. FIFA 07 shadows, however, are fixed by this build in opengl. Find Reply JMC47





Content Producer Posts: 6,463

Threads: 28

Joined: Feb 2013 You probably have something setup wrong. Try using portable.txt to get a clean set of settings. Find Reply pokemontrainer





Junior Member Posts: 28

Threads: 3

Joined: May 2014



RS2 graphical issues:

Tatooine training: In both opengl and D3D I see a kind of semi-transparent wall in the distance that moves along with me. Kind of a less annoying version of the dome effect. Also, the sky is not blue. Seems more like dusk. Comparing to this:



The Mario golf Pixelshader crash (not a crash technically just getting spammed by dialog boxes) still happens in D3D. Seems fine in Opengl.



Mario power tennis seems fine except for Delfino court, as others have said. Don't know if it's related to zfreeze but the menu star-like things which are supposed to be bright yellow show up as a kind of dull gray (reference: I tried using portable.txt. Opengl working now, sorry.RS2 graphical issues:Tatooine training: In both opengl and D3D I see a kind of semi-transparent wall in the distance that moves along with me. Kind of a less annoying version of the dome effect. Also, the sky is not blue. Seems more like dusk. Comparing to this: http://youtu.be/dr0kNIzg6OE The Mario golf Pixelshader crash (not a crash technically just getting spammed by dialog boxes) still happens in D3D. Seems fine in Opengl.Mario power tennis seems fine except for Delfino court, as others have said. Don't know if it's related to zfreeze but the menu star-like things which are supposed to be bright yellow show up as a kind of dull gray (reference: http://youtu.be/REHRRGOILnU?t=5m21s Find Reply Qaazavaca Qaanic

Unregistered

Mario Sunshine OpenGL - In secret stages, gray "path" blocks are still there. Reply JMC47





Content Producer Posts: 6,463

Threads: 28

Joined: Feb 2013 Jimbo1qaz: can you give me a screenshot?



Pokemontrainer: EFB2RAM is needed in Rogue Squadron 2. Find Reply