It was only used by OpenEXR and Iris images, and saving the Z Buffer in those formats was disabled by default. This option comes from the times prior to the addition of the Multilayer EXR. It also worth noting that it was not possible to save Iris with Depth pass from Blender as internally it is called IRIZ format and it was not exposed. But even after exposing this format option something still was missing as saving and loading ITIZ did not show up the Depth pass. The reason of removal is to make it a more clear match of the ImBuf with a render pass, and use it instead of a custom type in the render result and render pass API. This will simplify the API and also avoid stealing buffers and making shallow copies when showing the render result. For the cases when Depth is needed a Multilayer EXR is to be used, as most likely more than just the Depth will be needed. On a user level this change: - Removes the "Z Buffer" option from the interface. - It preserves existing sockets in compositor nodes, but it will output black image. Also changing the image data-block will remove the socket unless a Multilayer EXR with Depth pass image is selected. - Removes "Depth" socket of the Viewer and Composite nodes. Ref #108618 Pull Request: https://projects.blender.org/blender/blender/pulls/109687
119 lines
4.3 KiB
C
119 lines
4.3 KiB
C
/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#pragma once
|
|
|
|
/** \file
|
|
* \ingroup bke
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct BlendDataReader;
|
|
struct BlendWriter;
|
|
struct ImbFormatOptions;
|
|
struct ImageFormatData;
|
|
struct ImBuf;
|
|
struct Scene;
|
|
|
|
/* Init/Copy/Free */
|
|
|
|
void BKE_image_format_init(struct ImageFormatData *imf, const bool render);
|
|
void BKE_image_format_copy(struct ImageFormatData *imf_dst, const struct ImageFormatData *imf_src);
|
|
void BKE_image_format_free(struct ImageFormatData *imf);
|
|
|
|
void BKE_image_format_blend_read_data(struct BlendDataReader *reader, struct ImageFormatData *imf);
|
|
void BKE_image_format_blend_write(struct BlendWriter *writer, struct ImageFormatData *imf);
|
|
|
|
/* File Paths */
|
|
|
|
void BKE_image_path_from_imformat(char *filepath,
|
|
const char *base,
|
|
const char *relbase,
|
|
int frame,
|
|
const struct ImageFormatData *im_format,
|
|
bool use_ext,
|
|
bool use_frames,
|
|
const char *suffix);
|
|
void BKE_image_path_from_imtype(char *filepath,
|
|
const char *base,
|
|
const char *relbase,
|
|
int frame,
|
|
char imtype,
|
|
bool use_ext,
|
|
bool use_frames,
|
|
const char *suffix);
|
|
|
|
/**
|
|
* The number of extensions an image may have (`.jpg`, `.jpeg` for example).
|
|
* Add 1 as the array is nil terminated.
|
|
*/
|
|
#define BKE_IMAGE_PATH_EXT_MAX 3
|
|
/**
|
|
* Fill in an array of acceptable image extensions for the image format.
|
|
*
|
|
* \note In the case a file has no valid extension,
|
|
* the first extension should be used (`r_ext[0]`).
|
|
* \return the number of extensions assigned to `r_ext`, 0 for unsupported formats.
|
|
*/
|
|
int BKE_image_path_ext_from_imformat(const struct ImageFormatData *im_format,
|
|
const char *r_ext[BKE_IMAGE_PATH_EXT_MAX]);
|
|
int BKE_image_path_ext_from_imtype(const char imtype, const char *r_ext[BKE_IMAGE_PATH_EXT_MAX]);
|
|
|
|
int BKE_image_path_ext_from_imformat_ensure(char *filepath,
|
|
size_t filepath_maxncpy,
|
|
const struct ImageFormatData *im_format);
|
|
int BKE_image_path_ext_from_imtype_ensure(char *filepath, size_t filepath_maxncpy, char imtype);
|
|
|
|
/* File Types */
|
|
|
|
#define IMA_CHAN_FLAG_BW 1
|
|
#define IMA_CHAN_FLAG_RGB 2
|
|
#define IMA_CHAN_FLAG_RGBA 4
|
|
|
|
char BKE_ftype_to_imtype(int ftype, const struct ImbFormatOptions *options);
|
|
int BKE_imtype_to_ftype(char imtype, struct ImbFormatOptions *r_options);
|
|
|
|
bool BKE_imtype_is_movie(char imtype);
|
|
bool BKE_imtype_supports_compress(char imtype);
|
|
bool BKE_imtype_supports_quality(char imtype);
|
|
bool BKE_imtype_requires_linear_float(char imtype);
|
|
char BKE_imtype_valid_channels(char imtype, bool write_file);
|
|
char BKE_imtype_valid_depths(char imtype);
|
|
|
|
/**
|
|
* String is from command line `--render-format` argument,
|
|
* keep in sync with `creator_args.c` help info.
|
|
*/
|
|
char BKE_imtype_from_arg(const char *imtype_arg);
|
|
|
|
/* Conversion between ImBuf settings. */
|
|
|
|
void BKE_image_format_from_imbuf(struct ImageFormatData *im_format, const struct ImBuf *imbuf);
|
|
void BKE_image_format_to_imbuf(struct ImBuf *ibuf, const struct ImageFormatData *imf);
|
|
|
|
bool BKE_image_format_is_byte(const struct ImageFormatData *imf);
|
|
|
|
/* Color Management */
|
|
|
|
void BKE_image_format_color_management_copy(struct ImageFormatData *imf,
|
|
const struct ImageFormatData *imf_src);
|
|
void BKE_image_format_color_management_copy_from_scene(struct ImageFormatData *imf,
|
|
const struct Scene *scene);
|
|
|
|
/* Image Output
|
|
*
|
|
* Initialize an image format that can be used for file writing, including
|
|
* color management settings from the scene. */
|
|
|
|
void BKE_image_format_init_for_write(struct ImageFormatData *imf,
|
|
const struct Scene *scene_src,
|
|
const struct ImageFormatData *imf_src);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|