Welcome Guest! You need to login or register to make posts.



Go to last post Go to first unread
Chris Jones  
#1 Posted : Tuesday, June 20, 2017 1:14:03 AM(UTC)
Chris Jones

Rank: Advanced Member

Groups: Member
Joined: 6/9/2016(UTC)
Posts: 34

Thanks: 22 times
When rendering very large images (my scenario at the moment is 8267x16062 pixels) it takes a very long time to render other images onto it (i didnt time it exactly but over 10 minutes). Due to pipelining where it chunks up the rendering, it calls my drawer a lot of times and each time i reload and rerender a lot of high resolution images (in my case 18).

One optimisation i want to try is only drawing objects that are actually inside the current chunk being rendered by the pipeline. Is there any information anywhere on how to do this culling? or do you have any code samples please? Matrix math isn't my strong point.

I know there are also other optimisations i can make as well such as caching the images in memory but this seems like it would improve performance a lot.

ps. Is it possible to tune the pipelining code such as configuring the size of the chunks? (or would that be a bad idea anyway?)

Eugene Kosmin  
#2 Posted : Tuesday, June 20, 2017 2:41:04 AM(UTC)
Eugene Kosmin

Rank: Advanced Member

Groups: Member, Administration, Moderator
Joined: 9/19/2006(UTC)
Posts: 486

Was thanked: 30 time(s) in 30 post(s)
Hi Chris,

It's hard to say for sure what is the reason of low speed and whether it is possible to do something to improve it without seeing the code.

There is no way to change the chunk size. The idea is not bad, and we will consider it in future versions.

The only way to get the current offset of a drawer is to check Ty element of the transformation matrix. Each time it will be different.
drawer.Draw += (sender, e) =>

And also there are two things I would try to improve the performance:
  • If there is no need in matrices and clipping paths, try to use Combiner class for drawing images. It should be faster.
If you give us a small snippet, I could check it more precisely.

Best regards,
Eugene Kosmin
The Aurigma Development Team
Users browsing this topic
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.