-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Macross water animation problem #5559
Comments
Any savestate can share here to reproduce ? |
Sure, here's one from Macross Triangle Frontier: Also here's a youtube movie which shows the animation on psp: |
Yeah, it should kind of blend between 3 different water textures to create a smooth animation, instead it's refreshing every 10 frames swapping one of the 3 textures at the top, creating choppy animation. |
Not too sure if this is related as seldom see game use tex lod slope 46:39:196 user_main W[G3D]: GLES\GLES_GPU.cpp:1591 Unsupported texture level bias settings: 000002 |
I think both tex level bias and lod slope are just used to blur/sharpen textures, maybe it could overally improve graphics, but not sure if it is related to animation. the same settings are used for other things, like interface or VF textures. |
If you double click on "Texture L1 addr" copy the value, cancel, and then double click L0 and paste, OK, you should see the other texture level. Does it look different? Is the bias / slope value changing as it renders (the 10 frames)? I think you're saying no, and they're static, right? Is it using any alpha blending? Seeing the flags and settings tabs would help. -[Unknown] |
When I copy L1 address to L0 and then click step into to refresh texture preview it shows different texture. Tex level/bias 000002 Here are the settings: Name Value and flags: Name Value So I guess it does use alpha blending. |
Hmm, but it uses it in a pretty standard way. Does the L1 texture change each frame, or does it match the L0 texture? -[Unknown] |
From what I'm checking now the L0 actually never changes, L1 texture does change once every 10 frames and that's the one visible. Edit to be clear: and L1 never looks same as L0. I think it should do something like: My first post in this issue kind of describes it differently, because now I check it at the ocean where water texture is like 3 clicks away, seems to be much less confusing to check, the other stage with water(there are only 2 of them :]) had to click through xxx terrain textures and is actually a river that's why it has 3 different textures that swap places ~ moving animation. Wouldn't even know about L1 texture if you wouldn't told me to change L0 address to the one from L1. :o |
@unknownbrackets not sure if this means anything, but tried the new feature to change level in the texture preview and while it works in v0.9.8-1218-g07b13f6 which allows me to change between L0 and L1 in this game, it's grayed out in v0.9.8-1219-gf664979. Here's a texture tab: Hmmm does: "Tex mode swizzled, 1 levels" does that mean it should mix those textures and show as 1 or something? Maybe that's why it doesn't work. |
Ah, "Tex mode swizzled, 1 levels" means only one level is valid (according to the game), or else that we don't understand that setting properly. Maybe these settings override that: Tex level/bias 000002 -[Unknown] |
No, I'm sure that swizzling is fine, unless it toggles the swizzling. We might not check that. I meant the "1 levels" means that the second level is theoretically not valid. For example, some games set multiple levels for draw A, and then don't bother to unset the other levels for draw B (just setting max levels = 1.) My recent change made the "Level +" button support this feature. Before, in Tactics Ogre for example, you'd see a completely unrelated texture as the second level for almost everything. It did what I described above. -[Unknown] |
Ah ok, I now see some other textures in macross also show completely unrelated L1 like mech texture showing black water as second level, it just accidently makes this one water texture easier to check. It's really hard to recognize the water texture in game vs the texture preview - kind of impossible for me. I was assuming the game shows only L1 textures, since it changes every 10 frames just as in-game, however it could as well be L0+L1 swizzled together(?) which would also be a visible change every 10 frames. Well how the game changes that 3fps animation into nicely animated water remains a mystery. Don't really know how to check if the game toggles the swizzling. I found 2 unknown commands in the display list between light commands: |
I find it unlikely that texlevel/bias would override the main "number of levels" setting, that one should be a hard limit of the amount of texture data present.. |
Has this changed at all with the depth changes? Does it draw the water in multiple passes at all, or does it ever draw any part of the water with multiple mip levels? The unknown commands may likely not be commands; often, data is "interleaved" into the display list, and JUMP commands are used to skip it. The debugger will try to convert the data into commands. -[Unknown] |
This game suffers from 2 opened issues so I check it pretty often, but nothing really affected either of those issues yet. Not sure if it's the exact same place I checked last time, but when drawing water GE now shows Tex mode as swizzled, 2 levels, CLUT per level when earlier it was having 2 levels, but mode was saying swizzled, 1 levels - so maybe that changed, however it does look exactly same as before in-game and just changes all water textures every 10 frames resulting in 3fps animation. Copy of ge debugger tabs - https://gist.github.com/LunaMoo/f85e88ee8ff515332d55 When going step by step all the way, it does seem to do another pass on most of the water without doing any changes to the settings, but then something weird seems to happen as when you expect the closer things to get it's second pass it changes tex mode to swizzled, 1 levels and tex level/bias to slope + bias: 0.000000, and does say it draws things and shows selection on the texture itself but no selection is visible anywhere on the scene. Then it can return back to previous settings to draw some very distant water and while it was very microscopic I could see selection there at least as a few pixel dark line which makes me think the weird thing that's drawn earlier is completely out of the scene and potentially is what's missing here. I'm thinking maybe the effect actually works, but the distance is messing it up, I mean this game also suffers from #5549 which is messing vertices of some animations where they are drawn much closer to the camera than they should be resulting in stuff like big arms or transformation/some attacks covering up whole screen, possibly even going behind it. Maybe the water animation get's "behind" the camera or the opposite soo distant that doesn't even show selection on the scene. |
It uses slope bias? What is the Would be nice to see if the bias (from pass 1) or the slope (from pass 2) change each frame. If so, both effects could create an animation. Since both texture levels have the same size, we don't implement either one here. Tactics Ogre, this game, and #6357 AFAIK all suffer from the issue of using miplevels as separate texture units. -[Unknown] |
Tex lod slope is same always(well in this scene) 0.001333. When Tex level/bias shows bias the value seems to increase every frame ie bias: 0.687500 then next frame bias: 0.750000, edit: then after 0.875 returns to start from 0 again. |
Yeah, then that's exactly the same thing as #6357. That would make the water appear to animate, because The reason it changes abruptly every 10 frames is because that's when it switches to the next two mip levels, and starts the bias back at 0. -[Unknown] |
Oh, cool at least it's not a mystery anymore, I think I will just close this in favor of the other one which has a demo. |
Another one about Macross ~
Water animation is just choppy in all 3 macross games it seems to change texture once every exactly 10 frames and it seems to show single texture which seems to be additionally incorrect.
My thought on how it tries to work:
The game is running at 30fps and there are 3 water textures, I don't understand all it tries to do, but the order of the 3 water textures does change every 10 frames by looking at GE debugger and it probably should blend/mix them to give a nice smooth water animation. In ppsspp the first texture is clearly visible, the other two which are processed after never affect the screen in any way until their turn comes after 10 frames.
Tried all hacks and optional settings for it from the graphics tab, nothing seems to affect it, including software renderer.
Not sure if this is related, but before v0.9.7.1-37-g9c4d946(Detect bad mipmap sizes, autogen mipmaps in this case.), we had to disable mipmaps to even see the water, it's animation was always choppy like that through.
Here are the pictures of the 3 water textures in GE debugger, the first one is the one ending up visible on the screen with the second one, if you look at the 3rd one it should be affected by the second texture already, but still shows only the first one.
The text was updated successfully, but these errors were encountered: