-
-
Notifications
You must be signed in to change notification settings - Fork 381
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
Render differences between Milkdrop and projectM. #509
Comments
There are some bugs and compatible issues. Usually this issue is caused by a failure to compile the shader as projectM must convert the windows-specific HLSL shaders to the more cross-platform GLSL. If you look in the console it will likely say what the compilation error is. |
Hi, thanks for the reply. I ran projectm.exe from the cmd line and didn't see anything obvious...
|
According to RenderDoc, all waveform meshes generated by the "robotopia" preset have only vertices with 0.50/0.50 coordinates, thus rendering nothing as all vertices are exactly in the center of the screen. So this doesn't look like an actual rendering issue, but something going wrong interpreting the preset's waveform math. |
Looking deeper into projectM's waveform math, one prominent issue that caught my eye is that projectM has an off-by-one error between the nWaveMode parameter and the enumeration declaring the waveform types, which means that for mode 0, no waveform is calculated and all points remain at the screen center and all other waveforms are also one index off, thus it's not that visible. This matches what I've seen in RenderDoc. Milkdrop also supports a waveform mode 8, which is identical to 6 but renders a spectrum line instead of a waveform line. This is currently unimplemented in projectM. If I have some time on hand over the coming days I'll try to look into it and try to fix the waveform math using the original Milkdrop code as a reference. This should get rid of many rendering differences as presets use waveforms as the central drawing element. |
Another major part missing from projectM is providing a few noise textures presets can sample from in shader code. These lookups just fail, breaking the shader:
Opened another issue #532 for the shader-related stuff that's missing. Edit: Noise textures are now fixed in master. |
Another smaller issue affecting a few presets: Shader translation does not support sampler state structs like this: sampler sampler_grad2 = sampler_state {
AddressU = WRAP;
AddressV = WRAP;
}; The first line will be replaced with the GLSL pendant, but the next three lines are kept as-is, which breaks the shader code. |
Hi, I don't post much, partly as not having a lot to say but mainly as not being able to contribute to the code. Thanks! |
You're welcome! Helping with testing is surely a thing that's highly appreciated. I'm more or less using this issue to collect all the things that come up while testing and can't be fixed easily or immediately. If anyone else finds specific things that don't work, please just add a note here as well. BTW, the robotopia issue is still not fixed, but I've got some idea why it might happen - some variable not being reset properly between frames or per-point waveform equation runs. Currently focusing on the API so we can get the 4.0 release out, finish the new SDL UI, then back to bug fixing. |
The preset renderer has been mostly rewritten, with a focus on making it as compatible as possible with Milkdrop. Some issues remain, a few we can't fix because of HLSL/GLSL incompatibilities. But for the majority of the presets out there, the rendering output should now match Milkdrop, or at least be very close to the original. All in all, projectM is now closer to the original than it probably was ever before. |
Hi, the more I use projectM the more I've been noticing presets that look 'bad' or that don't seem to do much other than a full colour backdrop with a few pixels here and there.
So I've checked a few presets both in projectM and using Milkdrop 2 via MediaMonkey (also tried BeatDrop, which basically gives the same results as MD2 via MM) and there seems to be major rendering differences between the two.
Wondering if this is down to the move from DirectX for Milkdrop to OpenGL for projectM?
And possibly me using an AMD gfx card? As I know AMD's OGL drivers aren't the greatest, at least under Windows.
Here's an example.
Both running at the same time, pointed to the same .milk preset file.
Win10 x64, AMD Vega 64.
The text was updated successfully, but these errors were encountered: