Suppose there is a frame, which is larger that the device memory (I mean, dozens of Gb). And I would like to render to it from a set of textures, which is larger than the host memory (I mean, dozens to hundreds of Gb). Each texture is rendered to a different part of the frame.
To give more context, I'm baking the texture of a 3D-model, using its several projections.

I see two ways to handle it.
1. Go out of core texture-first, i.e. for each texture perform rendering several times to render each part of the frame.
2. Go out of core frame-first, i.e. for each frame part load every texture and render the frame part, then shift frame part and repeat.

The first way is definitely unfeasible, as PCI throughput is insufficient to load-unload the whole memory of a device for each renderpass.
The second way is much better, but it does not scale with frame dimensions, as it requires loading all the textures from disk and rendering them for each part of the frame.

So, is there any alternative to this I miss?

  • $\begingroup$ "Suppose there is a frame, which is larger that the device memory" What do you mean by a "frame" here? In graphics terms, a "frame" is usually the amount of rendering and computation you need to do to display an image to the user within a given quantity of time. As such, "frame" doesn't really have a memory size. Are you talking about a frame buffer? $\endgroup$ Aug 7 '19 at 13:51
  • $\begingroup$ @NicolBolas, I think so, I just tried to sound generic. I meant the buffer, which we draw onto during the frame. I believe, its this thing khronos.org/opengl/wiki/Renderbuffer_Object in opengl. In Vulkan terminology it's several huge color attachments that do not fit into device memory. $\endgroup$ Aug 7 '19 at 14:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.