Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-03-22Cleanup: add proper IMB_openexr.h instead of including file from intern/Brecht Van Lommel
2022-03-22Fix build error when WITH_OPENEXR=OFF, after recent refactorBrecht Van Lommel
2022-03-21Cleanup: move render image and multilayer EXR write code to image_save.ccBrecht Van Lommel
These share a lot of logic with regular image saving and should be unified more in the future.
2022-03-21Cleanup: move OpenEXR channel name construction to OpenEXR codeBrecht Van Lommel
2022-03-21Cleanup: add image_format.cc for functions related to ImageFormatDataBrecht Van Lommel
Also fixes missing code to read/write/free/copy color management settings in various places. This can't be set through the UI currently, but still should be handled consistently.
2022-03-16Cleanup: rename cnt to countCampbell Barton
Follow naming from T85728.
2022-03-14Cleanup: Clang tidyHans Goudey
2022-03-14Fix dead-lock in movie cacheSergey Sharybin
Steps to reproduce: - Add image sequence to movie clip editor. - Set cache limit to a low value in the user preferences. - Playback until old frames starts to be removed from cache. - Jump to the beginning of the image sequence. The reason of dead-lock comes from two factors: - Due to global nature of the cache limiter calls needs to be guarded with locks. - Image buffers stored in the cache can have their own cache (which is used for color management). Didn't find a better solution than to use recursive lock. Kind of makes sense since the thread-guardable resource is recursive (moviecache can have nested moviecaches). Differential Revision: https://developer.blender.org/D14331
2022-03-14Convert moviecache to C++Sergey Sharybin
2022-03-14Cleanup: Make more obvious from the name that function is not publicSergey Sharybin
2022-03-09Cleanup: use ELEM macroCampbell Barton
2022-03-08Cleanup: spelling in commentsCampbell Barton
2022-03-07Fix memory leak when reading ffmpeg video frames.Sebastian Parborg
We had forgotten to unref packets after reading them. This lead to a memory leak inside of ffmpeg.
2022-03-03Fix mistake in seeking cleanupRichard Antalik
In `ffmpeg_read_video_frame` fix assignment used as truth value. In `ffmpeg_seek_recover_stream_position` loop while return value is greater or equal to 0.
2022-03-02Cleanup: use back-slash for doxygen commands, color after parametersCampbell Barton
2022-03-02Cleanup: Refactor seeking codeRichard Antalik
Improve readability and reduce indentation levels. No functional changes. Reviewed By: zeddb Differential Revision: https://developer.blender.org/D14075
2022-03-01Merge branch 'blender-v3.1-release'Jacques Lucke
2022-03-01Fix crash triggered by an introduced assert.Jeroen Bakker
2022-03-01Image Engine: Performance 8 byte images.Jeroen Bakker
Previously we used to cache a float image representation of the image in rect_float. This adds some incorrect behavior as many areas only expect one of these buffers to be used. This patch stores float buffers inside the image engine. This is done per instance. In the future we should consider making a global cache.
2022-02-23Cleanup: Remove repeated word in commentsCampbell Barton
2022-02-18Merge branch 'blender-v3.1-release'Sebastian Parborg
2022-02-18VSE: Refactor our code to be compatible with ffmpeg 5.0Sebastian Parborg
In ffmpeg 5.0, several variables were made const to try to prevent bad API usage. Removed some dead code that wasn't used anymore as well. Reviewed By: Richard Antalik Differential Revision: http://developer.blender.org/D14063
2022-02-17Merge branch 'blender-v3.1-release'Brecht Van Lommel
2022-02-17Images: update code to support OpenEXR 3Sebastian Parborg
Compatibility with OpenEXR 2 is preserved, since Blender releases and Linux distribution packages can be on different versions. Ref D14128
2022-02-11File headers: SPDX License migrationCampbell Barton
Use a shorter/simpler license convention, stops the header taking so much space. Follow the SPDX license specification: https://spdx.org/licenses - C/C++/objc/objc++ - Python - Shell Scripts - CMake, GNUmakefile While most of the source tree has been included - `./extern/` was left out. - `./intern/cycles` & `./intern/atomic` are also excluded because they use different header conventions. doc/license/SPDX-license-identifiers.txt has been added to list SPDX all used identifiers. See P2788 for the script that automated these edits. Reviewed By: brecht, mont29, sergey Ref D14069
2022-02-10Cleanup: copyright in headers, spelling in commentsCampbell Barton
- Order year consistently. - Minor consistency (case, double-spacing). - Correct typos.
2022-02-10Cleanup: remove overly detailed contact info, correct md5 copyrightCampbell Barton
Also remove copyright text with no assignment.
2022-02-09Cleanup: non-standard license formatting, minor changesCampbell Barton
2022-02-09Cleanup: move file descriptions into doxygen file sectionCampbell Barton
Continuation of 19100aa57d847699d17527b76c2fab1f4ab88885.
2022-02-09Cleanup: move file descriptions into doxygen file sectionCampbell Barton
Also other minor corrections & reformat particle system copyright.
2022-02-09Cleanup: simplify copyright headers for sequence & imbufCampbell Barton
2022-02-02Fix T95378: Seek problems when timecodes are usedRichard Antalik
Function `IMB_indexer_get_seek_pos()` can return non 0 seek position for frame index 0. This causes seeking to incorrect GOP and scanning ends with failiure. Hard-code first frame index seek position to 0. Differential Revision: https://developer.blender.org/D13974
2022-01-31Fix T95332: Crash loading older files.Jeroen Bakker
Image buffer was visible but buffer wasn't available. In the case the color only overlay of the render result was displayed the image buffer was not check to be valid. This patch adds a null pointer check to check in `IMB_alpha_affects_rgb` to solve this crash.
2022-01-28Fix T93328: Movie seeking doesn't work.Richard Antalik
Caused by integer overflow in `steps_per_frame` calculation.
2022-01-26Cleanup: unused variable warning, formattingCampbell Barton
2022-01-26VSE: Build proxies only for slow moviesRichard Antalik
This change applies only for automatic proxy building, when strip is added to timeline. Manual building process is not affected. Don't build proxy file if movie is already fast enough to seek. To determine seek performance, check if whole GOP can be decoded in 100 milliseconds. To consider some variation in GOP size, large number of packets are read, assuming that each packet will produce 1 frame. While this is not technically correct, it does give quite accurate estimate of maximum GOP size. This test will ensure consistent performance on wide array of machines. Check should be done in order of few milliseconds. Reviewed By: sergey Differential Revision: https://developer.blender.org/D11671
2022-01-25VSE: Use timecodes by defaultRichard Antalik
Movies with variable frame rate can cause mismatch of displayed frame when proxies are used. Since proxies are not used for rendering, this means, that output may be different than expected. This problem can be avoided when timecodes are used. Set used timecode to Record Run. Timecodes are built with proxies at the same time, therefore if proxies are built and used this will resolve possible mismatch of output. Record run is chosen, because it will show frames based on time they were encoded by encoder and should match behavior as if movie was played back at normal speed. This change is done only for new strips in order to not overwrite user defined settings. Other minor changes: - When proxies are enabled, size 25% is no longer set by default. It was mostly annoying anyway. - Silence warning when timecode file is not present. This was introduced in 4adbe31e2fc98f982aed3d97505513750ec348d4. Previously use of timecodes was hard-coded in sequencer and this error would spam console if timecodes would be enabled by default and proxies would be never built. ref: T95093 Reviewed By: sergey Differential Revision: https://developer.blender.org/D13905
2022-01-25Fix T94237: Glitch when copying unaligned ffmpeg bufferMichael
Using a negative linesize to flip an image vertically is supported in ffmpeg but not for every function. This method treats frames that need and those that do not need alignment the same. An RGBA frame buffer with alignment that ffmpeg decides is optimal for the CPU and build options is allocated by ffmpeg. The `sws_scale` does the colorspace transformation into this RGBA frame buffer without flipping. Now the image is upside down and aligned. The combined unaligning and vertical flipping is then done by `av_image_copy_to_buffer` which seems to handle negative linesize correctly. Reviewed By: ISS Differential Revision: https://developer.blender.org/D13908
2022-01-12Revert "BLI: Refactor vector types & functions to use templates"Clément Foucault
Includes unwanted changes This reverts commit 46e049d0ce2bce2f53ddc41a0dbbea2969d00a5d.
2022-01-12BLI: Refactor vector types & functions to use templatesClment Foucault
This patch implements the vector types (i.e:`float2`) by making heavy usage of templating. All vector functions are now outside of the vector classes (inside the `blender::math` namespace) and are not vector size dependent for the most part. In the ongoing effort to make shaders less GL centric, we are aiming to share more code between GLSL and C++ to avoid code duplication. ####Motivations: - We are aiming to share UBO and SSBO structures between GLSL and C++. This means we will use many of the existing vector types and others we currently don't have (uintX, intX). All these variations were asking for many more code duplication. - Deduplicate existing code which is duplicated for each vector size. - We also want to share small functions. Which means that vector functions should be static and not in the class namespace. - Reduce friction to use these types in new projects due to their incompleteness. - The current state of the `BLI_(float|double|mpq)(2|3|4).hh` is a bit of a let down. Most clases are incomplete, out of sync with each others with different codestyles, and some functions that should be static are not (i.e: `float3::reflect()`). ####Upsides: - Still support `.x, .y, .z, .w` for readability. - Compact, readable and easilly extendable. - All of the vector functions are available for all the vectors types and can be restricted to certain types. Also template specialization let us define exception for special class (like mpq). - With optimization ON, the compiler unroll the loops and performance is the same. ####Downsides: - Might impact debugability. Though I would arge that the bugs are rarelly caused by the vector class itself (since the operations are quite trivial) but by the type conversions. - Might impact compile time. I did not saw a significant impact since the usage is not really widespread. - Functions needs to be rewritten to support arbitrary vector length. For instance, one can't call `len_squared_v3v3` in `math::length_squared()` and call it a day. - Type cast does not work with the template version of the `math::` vector functions. Meaning you need to manually cast `float *` and `(float *)[3]` to `float3` for the function calls. i.e: `math::distance_squared(float3(nearest.co), positions[i]);` - Some parts might loose in readability: `float3::dot(v1.normalized(), v2.normalized())` becoming `math::dot(math::normalize(v1), math::normalize(v2))` But I propose, when appropriate, to use `using namespace blender::math;` on function local or file scope to increase readability. `dot(normalize(v1), normalize(v2))` ####Consideration: - Include back `.length()` method. It is quite handy and is more C++ oriented. - I considered the GLM library as a candidate for replacement. It felt like too much for what we need and would be difficult to extend / modify to our needs. - I used Macros to reduce code in operators declaration and potential copy paste bugs. This could reduce debugability and could be reverted. - This touches `delaunay_2d.cc` and the intersection code. I would like to know @howardt opinion on the matter. - The `noexcept` on the copy constructor of `mpq(2|3)` is being removed. But according to @JacquesLucke it is not a real problem for now. I would like to give a huge thanks to @JacquesLucke who helped during this and pushed me to reduce the duplication further. Reviewed By: brecht, sergey, JacquesLucke Differential Revision: https://developer.blender.org/D13791
2022-01-12Revert "BLI: Refactor vector types & functions to use templates"Clément Foucault
Reverted because the commit removes a lot of commits. This reverts commit a2c1c368af48644fa8995ecbe7138cc0d7900c30.
2022-01-12BLI: Refactor vector types & functions to use templatesClément Foucault
This patch implements the vector types (i.e:float2) by making heavy usage of templating. All vector functions are now outside of the vector classes (inside the blender::math namespace) and are not vector size dependent for the most part. In the ongoing effort to make shaders less GL centric, we are aiming to share more code between GLSL and C++ to avoid code duplication. Motivations: - We are aiming to share UBO and SSBO structures between GLSL and C++. This means we will use many of the existing vector types and others we currently don't have (uintX, intX). All these variations were asking for many more code duplication. - Deduplicate existing code which is duplicated for each vector size. - We also want to share small functions. Which means that vector functions should be static and not in the class namespace. - Reduce friction to use these types in new projects due to their incompleteness. - The current state of the BLI_(float|double|mpq)(2|3|4).hh is a bit of a let down. Most clases are incomplete, out of sync with each others with different codestyles, and some functions that should be static are not (i.e: float3::reflect()). Upsides: - Still support .x, .y, .z, .w for readability. - Compact, readable and easilly extendable. - All of the vector functions are available for all the vectors types and can be restricted to certain types. Also template specialization let us define exception for special class (like mpq). - With optimization ON, the compiler unroll the loops and performance is the same. Downsides: - Might impact debugability. Though I would arge that the bugs are rarelly caused by the vector class itself (since the operations are quite trivial) but by the type conversions. - Might impact compile time. I did not saw a significant impact since the usage is not really widespread. - Functions needs to be rewritten to support arbitrary vector length. For instance, one can't call len_squared_v3v3 in math::length_squared() and call it a day. - Type cast does not work with the template version of the math:: vector functions. Meaning you need to manually cast float * and (float *)[3] to float3 for the function calls. i.e: math::distance_squared(float3(nearest.co), positions[i]); - Some parts might loose in readability: float3::dot(v1.normalized(), v2.normalized()) becoming math::dot(math::normalize(v1), math::normalize(v2)) But I propose, when appropriate, to use using namespace blender::math; on function local or file scope to increase readability. dot(normalize(v1), normalize(v2)) Consideration: - Include back .length() method. It is quite handy and is more C++ oriented. - I considered the GLM library as a candidate for replacement. It felt like too much for what we need and would be difficult to extend / modify to our needs. - I used Macros to reduce code in operators declaration and potential copy paste bugs. This could reduce debugability and could be reverted. - This touches delaunay_2d.cc and the intersection code. I would like to know @Howard Trickey (howardt) opinion on the matter. - The noexcept on the copy constructor of mpq(2|3) is being removed. But according to @Jacques Lucke (JacquesLucke) it is not a real problem for now. I would like to give a huge thanks to @Jacques Lucke (JacquesLucke) who helped during this and pushed me to reduce the duplication further. Reviewed By: brecht, sergey, JacquesLucke Differential Revision: http://developer.blender.org/D13791
2022-01-12Cleanup: make formatDalai Felinto
2022-01-12Fix T89542: Crash when loading certain .hdr filesJesse Yurkovich
The direct cause of the bug in question was passing in the raw memory buffer to sscanf. It should be called with a null-terminated buffer; which isn't guaranteed when blindly trusting the file data. When attempting to fuzz this code path, a variety of other crashes were discovered and fixed. Differential Revision: https://developer.blender.org/D11952
2022-01-12Cleanup: remove redundant const qualifiers for POD typesCampbell Barton
2022-01-11Fix T93588: some videos loaded flipped over Y axis on macOS ArmBrecht Van Lommel
Was not actually flipping in the need_aligned_ffmpeg_buffer case.
2022-01-10Fix T94661: Out-of-bounds memory access due to malformed DDS image fileSergey Sharybin
Harden bounds check in the stream reader avoiding integer overflow.
2022-01-07Fix T86952: Buffer overflow reading specific DDS imagesSergey Sharybin
Add a data boundary check in the flipping code. This code now also communicates the number of mipmap levels it processed with an intent to avoid GPU texture from using more levels than there are in the DDS data. Differential Revision: https://developer.blender.org/D13755
2022-01-07Fix T94629: The IMB_flip API would fail with large imagesJesse Yurkovich
Fix IMB_flip[xy] to handle cases where integer overflow might occur when given sufficiently large image dimensions. All of these fixes were of a similar class where the intermediate sub-expression would overflow silently. Widen the types as necessary. Differential Revision: https://developer.blender.org/D13744
2022-01-07Cleanup: remove redundant const qualifiers for POD typesCampbell Barton
MSVC used to warn about const mismatch for arguments passed by value. Remove these as newer versions of MSVC no longer show this warning.