4ea2baf4ae
The cleanup of blenkernel last weeks , caused the house of cards to collapse on top of bf_gpu's shader_builder, which is off by default but used on a daily basis by the rendering team. Given the fixes forward in #110394 ran into a ODR violation in OSL that was hiding there for years, I don't see another way forward without impeding the rendering teams productivity for "quite a while" as there is no guarantee the OSL issue would be the end of it. the only way forward appears to be back. this reverts :19422044eda670b53abe0f541db97cbe516e8c813e88a2f44c4e64b772f59547e7a31707fe6c5a57The problematic commit was07fe6c5a57as blenkernel links most of blender, it's a bit of a link order issue magnet. Given all these commits stack, it's near impossible to revert just that one without spending a significant amount of time resolving merge conflicts. 99% of that work was automated, so easier to just revert all of them, and re-do the work, than it is to deal with the merge conflicts. Pull Request: https://projects.blender.org/blender/blender/pulls/110438
The following 4 steps to adding a new image format to blender, its probably easiest to look at the png code for a clean clear example, animation formats are a bit more complicated but very similar: Step 1: create a new file named after the format for example lets say we were creating an openexr read/writer use openexr.c It should contain functions to match the following prototypes: struct ImBuf *imb_loadopenexr(unsigned char *mem,int size,int flags); /* Use one of the following depending on what's easier for your file format */ short imb_saveopenexr(struct ImBuf *ibuf, FILE myfile, int flags); short imb_saveopenexr(struct ImBuf *ibuf, char *myfile, int flags); /* Used to test if its the correct format int IMB_is_openexr(void *buf); Step 2: Add your hooks to read and write the image format these go in writeimage.c and readimage.c just look at how the others are done Step 3: Add in IS_openexr to blender/source/blender/imbuf/IMB_imbuf_types.h Add in R_openexr to source/blender/makesdna/DNA_scene_types.h Step 4: Add your hooks to the gui. source/blender/src/buttons_scene.c source/blender/src/toets.c source/blender/src/writeimage.c Step 5: edit the following files: blender/source/blender/imbuf/intern/util.c blender/source/blender/src/filesel.c blender/source/blender/src/screendump.c and add your extension so that your format gets recognized in the thumbnails. Step 6: Alter the build process: For cmake you need to edit blender/source/blender/imbuf/CMakeLists.txt and add in your additional files to source_files. If you have any external library info you will also need to add that to the various build processes. Step 7: Its also good to add your image format to: makepicstring in blender/source/blender/blenkernel/intern/image.c