I have been looking a bit into how to make these things. It really started with mr. one asking what it would take to make one of these.
It has to work with both games and movies, so my first thought was that it would be simple, just do some DirectX screen captures a bit of processing then hook up some RGB LEDs via USB and it's all good. But unfortunately it's pretty slow to capture the front surface buffer and it's slow to copy surface data from GPU memory to system memory, so it would effect frame rate. Also I ran into all sorts of problems with games on different DirectX versions.
I thought since Fraps works well in capturing the screen it would be straight forward. So I had a closer look at how Fraps actually works, and I'm a bit shocked
, it's really nasty
, it injects itself into pretty much every process on the machine to check for when a D3D DLL is loaded and then hooks onto the rendering events. I'm scared of running Fraps now, although I don't think it's every caused me any issues, but it could crash everything.
I did have a go at doing it the Fraps way, but less aggressive and only inject into a specific process (I used Far Cry 3 for testing), then hook into the End Scene event. Kind of works, but not very reliable and it still has impact on FPS performance.
Now I'm considering totally abandoning this approach, unless we got some DirectX experts who knows a much better way of doing it (I'm really not and expert on DirectX, I only know just enough to be dangerous
)
Anyway, this is the kind of effect I'm after, just bigger and better with support for multiple monitors etc
(Without too much performance penalty and not having to buy a Phillips TV)
There are quite a lot of DIY projects out there, but they all seem to suffer from limitations (see bottom of wiki page for links)
http://en.wikipedia.org/wiki/Ambilight
I'm considering doing something totally different. Instead of capturing the screen I would hook into the signal directly, but that it not so simple with high speed DVI, HDMI and DP digital signals, I do have a few ideas though.
Let me know if anyone got some good ideas, maybe I'm trying to solve a problem that has already been solved, that wouldn't be the first time
It has to work with both games and movies, so my first thought was that it would be simple, just do some DirectX screen captures a bit of processing then hook up some RGB LEDs via USB and it's all good. But unfortunately it's pretty slow to capture the front surface buffer and it's slow to copy surface data from GPU memory to system memory, so it would effect frame rate. Also I ran into all sorts of problems with games on different DirectX versions.
I thought since Fraps works well in capturing the screen it would be straight forward. So I had a closer look at how Fraps actually works, and I'm a bit shocked
I did have a go at doing it the Fraps way, but less aggressive and only inject into a specific process (I used Far Cry 3 for testing), then hook into the End Scene event. Kind of works, but not very reliable and it still has impact on FPS performance.
Now I'm considering totally abandoning this approach, unless we got some DirectX experts who knows a much better way of doing it (I'm really not and expert on DirectX, I only know just enough to be dangerous
Anyway, this is the kind of effect I'm after, just bigger and better with support for multiple monitors etc
There are quite a lot of DIY projects out there, but they all seem to suffer from limitations (see bottom of wiki page for links)
http://en.wikipedia.org/wiki/Ambilight
I'm considering doing something totally different. Instead of capturing the screen I would hook into the signal directly, but that it not so simple with high speed DVI, HDMI and DP digital signals, I do have a few ideas though.
Let me know if anyone got some good ideas, maybe I'm trying to solve a problem that has already been solved, that wouldn't be the first time