Advertisement

Recommendation for optimizing 3k rendertarget performance?

Started by August 30, 2017 05:10 PM
6 comments, last by galop1n 7 years, 5 months ago

In my render pipeline, I have a large 3k by 3k rendertarget meant for terrain splatting, and another one that uses the splatting output render the terrain's final texture. As you can guess, I'm hitting ~40 fps on my weaker laptop. What would be the best way to optimize this without lowering the resolution of my rendertargets? In essence, how do you optimize textures that need to be large?

Things I've thought about, correct me if it's likely wrong:

- Subdividing up the rendertarget into 4 quads and rendering them.

You are likely bandwidth bound and splitting the render target won't solve anything.

Your options are to not render everything everyframe, can you update just a sub rectangle of your splatting ? if the texture is based on your current position, maybe do a fixed step in texel step, move the existing content and only splat the new edges.

Or use a compute shader to rasterize manually your splatting, combining everything inside a loop, to save on alpha blending and ROP bandwidth.

 

You should give us more details of what you are doing here if you want more precise options. 

Advertisement

https://666uille.files.wordpress.com/2017/03/gdc2017_ghostreconwildlands_terrainandtechnologytools-onlinevideos1.pdf

They talk about virtual texturing, generating the tiles at runtime with CS, compressing them with async CS for free.

What do you actually do with this 3k texture? Do you run a single pixel shader once per frame for each of the ~10M texels, etc?

4 minutes ago, Hodgman said:

What do you actually do with this 3k texture? Do you run a single pixel shader once per frame for each of the ~10M texels, etc?

It is true, you should also only rasterize portions of your texture that are visible !

4 hours ago, Hodgman said:

What do you actually do with this 3k texture? Do you run a single pixel shader once per frame for each of the ~10M texels, etc?

I use a 3k rendertarget for doing terrain splatting, I update it when I do terrain changes(gameplay mechanic). Then I use another 3k rendertarget to render projective textures like crack decals on top of converting the rgb splat to the base terrain texture. I let the camera be top-down RTS/MOBA-styled isometric(and zoomable!), player controlled, so it's not stuck to any player.

Anyway, thanks for the suggestions y'all. It's probable that my laptop just can't take it and I'd have to provide better performing graphics options.

Advertisement
8 minutes ago, ddengster said:

I use a 3k rendertarget for doing terrain splatting, I update it when I do terrain changes(gameplay mechanic). Then I use another 3k rendertarget to render projective textures like crack decals on top of converting the rgb splat to the base terrain texture. I let the camera be top-down RTS/MOBA-styled isometric(and zoomable!), player controlled, so it's not stuck to any player.

Anyway, thanks for the suggestions y'all. It's probable that my laptop just can't take it and I'd have to provide better performing graphics options.

I still think you have opportunities to optimize, and do caching to reach quality and performance on modest hardware, but you would have to give more details on how you compose things, AND do more in depth profiling to find where the costs are really.

This topic is closed to new replies.

Advertisement