Be faster - Create your own Blender with new modifers and faster rendering

It has to do with the principled shader and it’s subsurface code it seems. I had a similar problem 1 year ago with a patch optimizing the principled shader https://developer.blender.org/D2679, it would also crash on this scene. I hope it helps.

The issue was that some code for Dithered Sobol was executed even if regular Sobol was chosen (so with CMJ and Dithered Sobol the crash did not occur and only regular Sobol was affected).

I have fixed it, new patch be downloaded here: http://Dragon.Studio/blender-2.80-patches.7z (only patches 0002 and 0003 are needed for Scrambling Distance and Dithered Sobol).

1 Like

Thanks for the patch, I’ll have a look at it. In the meantime, I compiled and uploaded a version without dithered sobol to be sure. What line(s) did you change exactly?

Ok, so there is a new version available, without dithered sobol first, will come back later. As a plus, scrambling distance is now available to be tweaked manually. The default is 0.0 = automatic.
Those who like dithered sobol can still use the old build in the mean time.

2 Likes

I can confirm that Dithered Sobol did not cause the cycles crash only regular Sobol. Thanks Dragon.Studio for this find and patch.

Bliblubli hopefully next build we can add the Dithered Sobol fixed patch and thanks for adding the manual scrambling distance parameter.

Here is the thread about the course Eklein. I’m open to suggestion and I really invested a good chunck of time in testing and including dithered sobol, but I have to offer a stable base and concentrate on the tutorials here.

If you want support, I also offer monthly or yearly support with E-Cycles. Customers are really happy with it see here and here for example about the response/bug fixing rate and time.

Here the build are only offered for students to check what the changes offer as an artists. They may get updated further, but the focus is on helping people make their own version to be able to be faster/better as an artists.

I thought I was helping you by suggesting adding two popular patches DS & SD to your base course to help make your course more valuable and have more sales. I did a lot of testing to make your product better.

It is unfortunately if now I have to buy E-Cycles to get now the newer patches. Especially since I do this as hobby. Maybe you can offer a discount to course customers.

Then let me word it better. I’m thankful you gave ideas and I did my best to integrate them, but I have to prioritize the course here, dithered sobol is way to complexe for a course to get started with coding. But it will come back in the final build offered with the course as a bonus, when it’s stable and well tested. The old build is still there as I said, so you can further test it. And now that you know it only crashes the normal sobol, you can test safely with dithered sobol always on.

By the way, dithered sobol is not in E-Cycles yet (because it’s not tested enough. For example, I know it make some scenes with glass much darker), so you have even more luck here.

And if I do everything for the students, they don’t learn. Try and if you have a problem, I’m here to help :slight_smile:

Summary

The line which caused the issue was if(rng_hash & DITHER_MASK) - it was supposed to be true only for Dithered Sobol, but as it turned out there is a chance it will be true for regular Sobol as well and this will cause a crash. So at first I replaced it with if(rng_hash & DITHER_MASK && kernel_data.integrator.dither_size > 0), and later today I simplified it to just if(kernel_data.integrator.dither_size > 0) - dither_size is always set to 0 for regular Sobol, and when Dithered Sobol is chosen dither_size is always > 0 because dither_size = sobol_dither_matrix_size() and dither matrix cannot have zero size.

1 Like

very helpful, thanks a lot :slight_smile:

The course has been updated.

  • Now everything you have to know to make Cycles 2x faster is explained. With some tips to make it fit your GPU and make it even faster than E-Cycles.
  • The bonus course about the bevel after boolean modifier is also available.
  • You will also learn how to upload your changes for review on developer.blender.org, either automatically or manually.

Have fun coding and/or using your own Blender :slight_smile:

2 Likes

Bliblubli,

Thanks for the update. I will start now going through course.

The all-in-one pack has been updated right now with all the latest changes.

1 Like

The course has been updated with a bonus part to give quick basics about programming to make it easier to read and write code :slight_smile: It’s already available for all students.
You will learn the basics about:

  • variables
  • pointers
  • structures
  • functions
  • iterators
2 Likes

IMHO it would be interesting to introduce some specific (or usual) computer graphics programming patterns in the course as well :slight_smile:
What do you think?

Awesome, thankyou. :slight_smile:

Your welcome. The links and commands text file has been updated to correct an URL and I added some alternatives to the git command line for those wanting to use a UI. Some good links to help regarding coding have also been added :slight_smile:

1 Like

Thanks for the suggestion, here are some reason why I wouldn’t include that in the course:

  • it’s intended for artist who have little to no experience in programming or have experience, but want to start to discover Blender’s code base.
  • the course is very practical. It brings you pretty fast to powerful results you can extend easily. With the course on the modifier, you can pretty easily add tens of modifiers that can be very useful in your workflow in very little time. Adding some design pattern will make it much more theoretical, will encourage student to reinvent the wheel instead of using and combining the existing building bricks.
  • Design patterns may be helpful when writing from scratch, but when extending a program like Blender, which already has a lot of the best libraries like boost, Opensubdiv, OSL, OpenVDB, etc… has very good libraries itself to work with vectors, rays, mesh, BVH, etc. has a lot of advanced functions to intersect, project, cut, mesh, etc. at the end, you can do everything you think about by reusing those functions. It’s not only faster for you to code, it’s safer as those are well tested over years, it’s well written so pretty optimized and it’s required if you want to have your code accepted as the Blender Foundation doesn’t want to have 10 functions spread over the code that do the exact same thing. Their is already a big effort to remove duplicates in Blender, to make the code easier to maintain. So new code should reuse existing one from the start. Believe me, after so many years development, you would have to be a very good researcher to find a better or new building brick in Blender.
  • For advanced new features like Dithered Sobol or the anisotropy for SSS, you would need years of math, physics and programming experience. The official programmer propose patches and this course show you how to use them. As an artists, you have other strength programmer don’t have (you know what you need better than anyone else, programmer must satisfy very different needs which inevitably leads to a lot of compromise, you can write code that works in your case, programmers must write code that works in many crazy cases, etc.). This course is about using your strength and the strength of professional programmers together. If an artists want to know how to code a path tracer, which I doubt, I give links to good books and source of information to go deeper.

If there is a lot of demand for more advanced programming skills from the artists community (which I doubt), I may propose a course for that. I think it’s good if their is some overlap in skills between programmers and artists, it’s what this course gives, but I think an artists will work better if he focuses on art. Forging a personalized version of your tool will give you a clear advantage compared to the many other artists available on the market, but if you want to stay productive, let the pro do the advanced programming :slight_smile:

Cycles 2x faster and a curve to terrain modifier are already cool :slight_smile:

Coming soon… The remove double modifier. Perfect for fixing meshes :slight_smile:

7 Likes

My idea was not of course to master 3D graphics programming, nor reinventing wheels which is something that doesn’t happen (at least should not) too often in open source development. To learn how things work though, it’s not necessary to reinvent the wheel just as about you learn math theorems instead of creating your own ones daily.
It’s clear now this course is exclusively for artists and not programmers, I didn’t understand that at the beginning before you were launching it. I guess you said it’s for programmers that does not have experience with Blender source base.