Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamicimage #495

Open
wants to merge 161 commits into
base: master
Choose a base branch
from
Open

Dynamicimage #495

wants to merge 161 commits into from

Conversation

woelper
Copy link
Owner

@woelper woelper commented Oct 28, 2024

No description provided.

@woelper woelper requested a review from B-LechCode October 28, 2024 15:54
@B-LechCode
Copy link
Collaborator

@woelper I started looking in that and tried to render grayscale textures - which didn't work. I created them as R8, but I can't tell notan to add a swizzle mask or something else to render it grayscale.

Doing "imageops::crop_imm" on a "DynamicImage" will always result in an rgba image, even if the underlying data is grayscale.

I didn't find any flaws in your implementation so far.

@woelper
Copy link
Owner Author

woelper commented Oct 31, 2024

Thanks so much for looking at it! Regarding grey textures, that is of course bad news. Maybe we can use a shader to convert red to grey? Would it make sense to open an issue in notan for this?

@B-LechCode
Copy link
Collaborator

I thought about asking in notan's issue section, too.
I will do this rn :)

Yes, we maybe could define a default shader, doing conditional conversion?

@woelper
Copy link
Owner Author

woelper commented Oct 31, 2024

Great!

Yeah, a shader could make sense anyways for HDR and other things!

@B-LechCode
Copy link
Collaborator

B-LechCode commented Nov 1, 2024

@woelper do you know where to inject a pixel shader to do that? That's beyond my knowledge. Maybe you got some hints.

Then I would try to commit a dynamic rendering for R8 at least.
Edit: Could this work: "https://github.com/Nazariglez/notan/blob/develop/examples/draw_image_shader.rs"?

@woelper
Copy link
Owner Author

woelper commented Nov 1, 2024

I was going to post the same URL :)

I am quite happy with the progress, your idea to have a convert operator was amazing. The pixel operators and image operators already support some additional data types and you can convert on the fly between them.

@B-LechCode
Copy link
Collaborator

B-LechCode commented Nov 2, 2024

I got it for image rendering, but not for egui::image.
Maybe you have an idea where to add a shader for egui.
The alternative is maybe to use notan here, too. (Need to look at it today!)

Edit: I committed my changes, I hope it's okay for you! Due to the special behavior of imageops::crop_imm on dynamic image, I needed to match the types. Maybe you can have a look at it, if this is a bug or intention.

Screenshot_20241102_004043

src/texture_wrapper.rs Outdated Show resolved Hide resolved
@B-LechCode
Copy link
Collaborator

@woelper is the branach dynamicimage_zoom supposed to combine the new zoom image and dynamic image?
I'd merge them then together and delete both old branches?

@woelper
Copy link
Owner Author

woelper commented Nov 4, 2024

Hi! I tried to combine them by merging zoom into it and made it build, but I think I am missing something. If you have time maybe you can try integrating the changes from your zoom window branch directly into this one? I can delete the dynamicimage_zoom in that case.

@B-LechCode
Copy link
Collaborator

Hi! I tried to combine them by merging zoom into it and made it build, but I think I am missing something. If you have time maybe you can try integrating the changes from your zoom window branch directly into this one? I can delete the dynamicimage_zoom in that case.

Done :)

@B-LechCode
Copy link
Collaborator

@woelper @Stoppedpuma My work with implementing the various conversions are done and tested with and without tiling (type conversion operator is really neat for this).
From my side it's done for this pr and I'm waiting to do the final testing and reviewing with you.

Please ping me if you need something :)

@Stoppedpuma
Copy link
Collaborator

I think this should be good on my end as well, I've tried to intentionally break things and I haven't encountered anything which isn't already reported.

Small list of things which should be double checked or implemented on @woelper's end before merge:

Making sure all build flags work
Removing useless / outdated comments
Quick pass on code to look for any potential issues or things which aren't pretty

Woelpers adjustments to the view original / modified button
Implementing #530 (CJK language support), compressed to not bloat binary (Not a requirement but nice to have)
Decide if #562 should be merged or not

@woelper
Copy link
Owner Author

woelper commented Jan 11, 2025

Language support is in, but will bloat binary. I tested compression, but that makes startup less snappy (noticeable delay in startup). I made a cleanup task to use system fonts. Also added test files for Arabic and Simplified Chinese.

@B-LechCode
Copy link
Collaborator

Language support is in, but will bloat binary. I tested compression, but that makes startup less snappy (noticeable delay in startup). I made a cleanup task to use system fonts. Also added test files for Arabic and Simplified Chinese.

What algorithm did you use for compression? Zstd should be quite fast if usable.

@Stoppedpuma
Copy link
Collaborator

Language support is in, but will bloat binary. I tested compression, but that makes startup less snappy (noticeable delay in startup). I made a cleanup task to use system fonts. Also added test files for Arabic and Simplified Chinese.

What algorithm did you use for compression? Zstd should be quite fast if usable.

I believe it was xz which is several magnitudes slower than say zstd-fast.

@Stoppedpuma
Copy link
Collaborator

Stoppedpuma commented Jan 11, 2025

@woelper Bug I just found which should be fixed prior to merge, saved edits no longer seem to load.

@B-LechCode
Copy link
Collaborator

One thing I found: the Histogram is currently based on rgba8, when should we change this?
Next version? Would create an issue for this then.

@Stoppedpuma
Copy link
Collaborator

@B-LechCode Opened an issue at #606 for this to be in 0.9.3!

@Stoppedpuma
Copy link
Collaborator

Stoppedpuma commented Jan 11, 2025

Two more weird behaviours I've found

1: The colour channel can still be changed even when no images are present by simply pressing e, then a colour channel key.

2: More weirdness in the file manager depending on the size (Thumbnails shifting around, not the artifacts, the artifacts are an encoding issue with wf-recorder):

scroll.webm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request UI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants