Which concepts/parts of C/C++ do I have to learn if I want to understand and modify Blenders Source Code

I’ve read this thread, about recourses for Coders who want to modify Blenders Source:

@RhysRodrigues wrote: […] Resources For An Intermediate Coder enough to understand and edit the blender Code, […]

I’m not new to coding, but I don’t have very much experience with C/C++ and Blenders Source Code. I managed to change a label xD, but when trying to change something more advanced, the source code breaks.

It would be nice if someone could recommend me a course for the core concepts I have to learn to be able to modify Blenders Source properly.

Questions like these are very hard to answer, blender is a very very large and diverse codebase. If you are counting on there’s these X number of things you need to know and you’ll be a “successful blender developer” and can do anything in blender, that’s just not how it works.

To be a successful blender developer

  1. learn how to build and run it (You don’t even need to understand how the build system works, but being able to build it is the bare minimum you need)

  2. Know some basic C/C++ , No need to know by heart what methods std:vector has or what order the parameters for strcmp go in, most IDE’s will help you there anyway. This information can be looked up, Just know enough to being able to write “code that builds” and if it doesn’t build you should be able to figure out what you did wrong.

  3. Learn how to use the debugger on your platform, it is your friend it will always be there for you when things are not working

Don’t get me wrong , sure an advanced C++17 course would be great and you’ll learn many valuable skills, but for any project regardless if is blender or not. The following core fundamentals will always be needed. learn how to build it, learn how to make a small change, learn how to debug it. Unless you got those skills down, there is no high concept development course you can take to make your life easier.

Also it is important to understand you’ll never understand “all of blender” and you really don’t need to, find a niche area in blender you like and learn what you need for it, maybe it’s python, maybe it’s c99, maybe it’s an older piece of blender code using mostly C++98, maybe it’s a new area leaning heavily into C++17 maybe it’s GLSL or CMake.

Sure you could be a master of all these things, and that be great! You’d be a great developer to have around, but it’s not what is needed to thrive as a developer, many of us have specialized and that is perfectly alight.

@fclem probably can’t debug a compiler codegen bug, I wouldn’t know where to start solving a GLSL shader issue as long as there’s someone around with the skills required it’ll all work out, no reason this all needs to be a single developer.

So yeah, rather than going, “what do I need to learn?” Just pick an area you want to work on and go for it! You’ll be contributing to blender in no-time!

16 Likes

:heavy_check_mark: I learned to build Blender since @pablovazquez made a video about it. Thank you, Pablo.

@LazyDodo Thank you for your advice, I’ll try that and see if it works :slightly_smiling_face:

3 Likes

can you please send me the link of the video.

Here you go: COMPILE BLENDER on LINUX #HowToBlender - YouTube