AleDel / Spout-UE4

Spout Plugin for Unreal Engine
175 stars 80 forks source link

When using the scenecapture2d to send a texture render target instead of the viewport the colours arn't correct #7

Closed sheridanis closed 8 years ago

sheridanis commented 8 years ago

When using the scene capture 2d as a spout source the colours are darker as shown in the attached image. I've tried setting the capture source to final colour (LDR with postprocess) and the rendertarget2d to be hdr but with no luck. Any suggestions?

spoutcolours

sheridanis commented 8 years ago

BTW - this doesn't seem to happen with the viewport but I'd like to be able to use multiple senders. Also when I look at the rendertarget2D it looks correct so the scencapture2d seems to be capturing things properly.

Ive looked through your code (SpoutBPFunctionLibrary.cpp) and both cases (viewport/texture) seem to be treated in the same way and use the same texture format (87 - DXGI_FORMAT_B8G8R8A8_UNORM). I'm a bit lost as to where the colour change is happening, any ideas?

AleDel commented 8 years ago

Good question yes I also want to capture different views with good image, im not sure how unreal creates the world, the renderer, viewpot ,etc

AleDel commented 8 years ago

I added a new parameter to spoutSender, "targetGamma", at least partly resolves. I have no idea why the color is different when the pixel format is correct. http://spout.zeal.co/forums/topic/creating-spout-sender-for-vbs3/#post-1753

sheridanis commented 8 years ago

Are you able to post the changed you made to spout please? I need to use a new spout version (currently unreleased) that allows for more than 10 senders so I'll need to recompile the dll.

Its weird why the viewport works but not the render texture. I've done a shared memory transfer of the render texture and it works fine so the spout plugin sees the data fine. I'm guessing the viewport must apply some gamma changes as things are drawn.

I think the UGameViewportClient (https://docs.unrealengine.com/latest/INT/API/Runtime/Engine/Engine/UGameViewportClient/index.html) is how the game once build renders things to the screen but I've been searching for a way to grab this like you do with the editor viewport and am yet to find one.

AleDel commented 8 years ago

i changed #define MaxSenders 10 // Max for list of Sender names from SpoutSenderNames.h. to #define MaxSenders 20 // Max for list of Sender names and upload the binaries and the code is in Therdparty folder. use those dll if you want. i try whit touchdesigner overriding the "Spout.dll" and work

The gamma option in SpoutSender blueprint only work when capturing from Texture render target 2D and when the option "capture Source" of SceneCaptureComponent2D is Final Color(LDR with PostProcess).

yes im watching how the scene is captured for the SceneCapture, how make more windows, how split screen.. but I can not find the way that relates the viewport With the scene. i will continue looking at the code

sheridanis commented 8 years ago

Changing the maxsenders like this breaks any of the old spout users. The spout developer has send me a new SDK that offers a backwards compatible was to enable more than 10 senders. If you email at sheridanis at gmail I'll send you the new sdk which if testing works out will become spout 2.05

AleDel commented 8 years ago

yes of course, thanks.