Archive 17/01/2023.

How to get RenderSurface from RenderPath

rbnpontes

I need to get RenderSurface created in RenderPath, if i’m trying to get Texture from View the texture only return null

cadaver

If you mean using View::FindNamedTexture() be aware that it’s only valid during view rendering, as the textures are pooled and reused. Actually there’s right now not a good event that would fire after the textures have been reserved; that should be added, but right now you could send an event from the beginning of the renderpath (CMD_SENDEVENT).

If you need to reliably get to the texture during any time within the frame you should turn it around by creating the texture yourself, giving it a name and storing it to the resource cache as a manual resource. E.g. “MyTexture”. Then you can refer to “MyTexture” in the renderpath and it will use your texture instead of allocating a pooled texture.

rbnpontes

Thank’s for the explanation, but exist one mean to set a Created RenderSurface in gpu and transfer to RenderPath ?

cadaver

Can’t understand what you’re asking, sorry.

rbnpontes

Ok, i have a RenderSurface created in CPU, i need transfer this RenderSurface to RenderPath
I working to implement HBAO+ from Nvidia Gameworks, the process off render HBAO is working normaly, but i need clean RenderSurface in GPU

Texture2D* tex = new Texture2D(context_);
RenderSurface* _renderTarget = tex->GetRenderSurface();
// I need upload _renderTarget to GPU
franck22000

I have tried to add nvidia HBAO+ a month ago but did not succeeded. If you get it working could you share your code ?

cadaver

The SetSize() function for a rendertarget Texture2D creates the GPU-side representation. After that you can render to it, or sample it.

tex->SetSize(width, height, Graphics::GetRGBAFormat(), TEXTURE_RENDERTARGET);

Replace format with what you actually need.

rbnpontes

Yep, i Will share the code, i have sucess for execute HBAO, but my problem is for clean render buffer

rbnpontes

Thank’s cadaver for the help

cadaver

In master branch, a new event was added (E_VIEWBUFFERSREADY) which is sent when a view’s screen buffers have been allocated and are valid to query with FindNamedTexture().