View Single Post
Old 9th December 2010, 02:10   #1
Milkdrop Moderator
Join Date: Oct 2004
Posts: 114
I figured out why Pixel Shader 3 presets don't work on ATI

Having run milkdrop through Microsoft's directx debugging tool PIX, I noticed that for presets that are running in pixel shader 3.0 mode, the vertex shader's are all compiled as shader model 1.1, while the pixel shaders are compiled as model 3.0.
ATI cards will not run ver 3.0 pixel shaders with non 3.0 vertex shaders. Any version of pixel shader below 3.0 can be combined with lesser versions of vertex shader, which is why 2.0 and 2.x presets still work in Milkdrop 2.

DirectX will actually issue a warning in regards to this, but not an actual error so it can be missed during development if using NVidia GPUs. I'm familiar with the error because Rendermonkey issues the warning. When I use Rendermonkey on our ATI GPU computers I have to set the vertex shader to compile for vs3.0 whenever I set the pixel shader to use PS3.0 or it doesn't render. On our Nvidia GPU computers it still issues the warning, but the GPU allows it and still renders.

This is a very easy fix codewise, as the fxc compiler just needs to be given the flag to compile VS as 3.0 for PS3 presets, so hopefully a winamp developer with access to the MD2 source can implement this fix.

It's possible this may not be the only issue, but having spent the last 6 years programming on both ATI/Nvidia GPUs I'm pretty positive this should be the whole of it.

Eo.S. is offline   Reply With Quote