Git Product home page Git Product logo

Comments (8)

ocornut avatar ocornut commented on August 15, 2024 1

I don't really know/understand WebGPU yet but I would assume we could call wgpuDeviceCreateBindGroup() one time per frame with a list of all unique WGPUTextureView, and then call wgpuRenderPassEncoderSetBindGroup() with the right index?

So we remove bd->ImageBindGroups[] as a persistent storage, instead we use it as temporary storage during the frame:

  • iterate all draw cmd to create a list of unique WGPUTextureView, with each a unique integer.
  • create the bind group
  • iterate all draw cmd to perform render, call wgpuRenderPassEncoderSetBindGroup() with the right index pulled from that map?

from imgui.

ocornut avatar ocornut commented on August 15, 2024

Hello,

Do you have a suggested solution as to how to decently solve this?

from imgui.

dkaste avatar dkaste commented on August 15, 2024

I'm not sure WebGPU exposes any kind of truly unique identifier for resources.

The only decent solution I can think of is to remove the cache, use WGPUBindGroup as ImTextureID, and provide a helper function for the user to create bind groups from texture views. It would unfortunately require the user to manually manage those bind groups, which kind of feels like it goes against the spirit of IMGUI.

from imgui.

dkaste avatar dkaste commented on August 15, 2024

That sounds like a reasonable solution. I'm new to WebGPU as well, so that didn't even occur to me.

It might be worth supporting multiple bind groups for "chunks", since WGPULimits::maxBindingsPerBindGroup could be as low as 640.

Edit: Actually, I think such a solution would require the proposed binding_array feature, which isn't in the spec yet.

from imgui.

ocornut avatar ocornut commented on August 15, 2024

Let's start with a single bind group and we can easily change it to multiple of them based on runtime limits.

from imgui.

ocornut avatar ocornut commented on August 15, 2024

I don't have test code for loading a texture in the WebGPU example so one would be helpful but otherwise I'll work toward one eventually.

from imgui.

rdeepak2002 avatar rdeepak2002 commented on August 15, 2024

Hello @dkaste, could you share your workaround solution? I'm facing the same issue and a temporary work around would help. Thanks!

Edit: never mind, was able to figure it out. Just called bd->renderResources.ImageBindGroups.Clear(); at the beginning of ImGui_ImplWGPU_RenderDrawData

from imgui.

ocornut avatar ocornut commented on August 15, 2024

As mentioned, I would likely be able to tackle the issue if I had an example of loading textures with WebGPU, e.g a WebGPU version of the tutorial here: https://github.com/ocornut/imgui/wiki/Image-Loading-and-Displaying-Examples

from imgui.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.