Files
goo-engine/source/blender/compositor/CMakeLists.txt
T
Omar Emara 931c188ce5 Compositor: Refactor File Output node
This patches refactors the compositor File Output mechanism and
implements the file output node for the Realtime Compositor. The
refactor was done for the following reasons:

1. The existing file output mechanism relied on a global EXR image
   resource where the result of each compositor execution for each
   view was accumulated and stored in the global resource, until the
   last view is executed, when the EXR is finally saved. Aside from
   relying on global resources, this can cause effective memory leaks
   since the compositor can be interrupted before the EXR is written and
   closed.
2. We need common code to share between all compositors since we now
   have multiple compositor implementations.
3. We needed to take the opportunity to fix some of the issues with the
   existing implementation, like lossy compression of data passes,
   and inability to save single values passes.

The refactor first introduced a new structure called the Compositor
Render Context. This context stores compositor information related to
the render pipeline and is persistent across all compositor executions
of all views. Its extended lifetime relative to a single compositor
execution lends itself well to store data that is accumulated across
views. The context currently has a map of File Output objects. Those
objects wrap a Render Result structure and can be used to construct
multi-view images which can then be saved after all views are executed
using the existing BKE_image_render_write function.

Minor adjustments were made to the BKE and RE modules to allow saving
using the BKE_image_render_write function. Namely, the function now
allows the use of a source image format for saving as well as the
ability to not save the render result as a render by introducing two new
default arguments. Further, for multi-layer EXR saving, the existent of
a single unnamed render layer will omit the layer name from the EXR
channel full name, and only the pass, view, and channel ID will remain.
Finally, the Render Result to Image Buffer conversion now take he number
of channels into account, instead of always assuming color channels.

The patch implements the File Output node in the Realtime Compositor
using the aforementioned mechanisms, replaces the implementation of the
CPU compositor using the same Realtime Compositor implementation, and
setup the necessary logic in the render pipeline code.

Pull Request: https://projects.blender.org/blender/blender/pulls/113982
2023-12-13 11:08:03 +01:00

686 lines
21 KiB
CMake

# SPDX-FileCopyrightText: 2011 Blender Authors
#
# SPDX-License-Identifier: GPL-2.0-or-later
add_subdirectory(realtime_compositor)
if(WITH_COMPOSITOR_CPU)
set(INC
.
intern
nodes
operations
realtime_compositor
../blenkernel
../blentranslation
../imbuf
../makesrna
../nodes
../windowmanager
../nodes/composite
../nodes/intern
../render
../render/intern
../../../extern/clew/include
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna
)
set(INC_SYS
)
set(SRC
COM_compositor.hh
COM_defines.h
intern/COM_BufferArea.h
intern/COM_BufferOperation.cc
intern/COM_BufferOperation.h
intern/COM_BufferRange.h
intern/COM_BuffersIterator.h
intern/COM_CPUDevice.cc
intern/COM_CPUDevice.h
intern/COM_ChunkOrder.cc
intern/COM_ChunkOrder.h
intern/COM_ChunkOrderHotspot.cc
intern/COM_ChunkOrderHotspot.h
intern/COM_CompositorContext.cc
intern/COM_CompositorContext.h
intern/COM_ConstantFolder.cc
intern/COM_ConstantFolder.h
intern/COM_Converter.cc
intern/COM_Converter.h
intern/COM_Debug.cc
intern/COM_Debug.h
intern/COM_Device.cc
intern/COM_Device.h
intern/COM_Enums.cc
intern/COM_Enums.h
intern/COM_ExecutionGroup.cc
intern/COM_ExecutionGroup.h
intern/COM_ExecutionModel.cc
intern/COM_ExecutionModel.h
intern/COM_ExecutionSystem.cc
intern/COM_ExecutionSystem.h
intern/COM_FullFrameExecutionModel.cc
intern/COM_FullFrameExecutionModel.h
intern/COM_MemoryBuffer.cc
intern/COM_MemoryBuffer.h
intern/COM_MemoryProxy.cc
intern/COM_MemoryProxy.h
intern/COM_MetaData.cc
intern/COM_MetaData.h
intern/COM_MultiThreadedOperation.cc
intern/COM_MultiThreadedOperation.h
intern/COM_MultiThreadedRowOperation.cc
intern/COM_MultiThreadedRowOperation.h
intern/COM_Node.cc
intern/COM_Node.h
intern/COM_NodeConverter.cc
intern/COM_NodeConverter.h
intern/COM_NodeGraph.cc
intern/COM_NodeGraph.h
intern/COM_NodeOperation.cc
intern/COM_NodeOperation.h
intern/COM_NodeOperationBuilder.cc
intern/COM_NodeOperationBuilder.h
intern/COM_OpenCLDevice.cc
intern/COM_OpenCLDevice.h
intern/COM_SharedOperationBuffers.cc
intern/COM_SharedOperationBuffers.h
intern/COM_SingleThreadedOperation.cc
intern/COM_SingleThreadedOperation.h
intern/COM_TiledExecutionModel.cc
intern/COM_TiledExecutionModel.h
intern/COM_WorkPackage.cc
intern/COM_WorkPackage.h
intern/COM_WorkScheduler.cc
intern/COM_WorkScheduler.h
intern/COM_compositor.cc
operations/COM_QualityStepHelper.cc
operations/COM_QualityStepHelper.h
# Internal nodes
nodes/COM_SocketProxyNode.cc
nodes/COM_SocketProxyNode.h
# input nodes
nodes/COM_BokehImageNode.cc
nodes/COM_BokehImageNode.h
nodes/COM_ColorNode.cc
nodes/COM_ColorNode.h
nodes/COM_ImageNode.cc
nodes/COM_ImageNode.h
nodes/COM_MaskNode.cc
nodes/COM_MaskNode.h
nodes/COM_MovieClipNode.cc
nodes/COM_MovieClipNode.h
nodes/COM_RenderLayersNode.cc
nodes/COM_RenderLayersNode.h
nodes/COM_SceneTimeNode.cc
nodes/COM_SceneTimeNode.h
nodes/COM_SplitNode.cc
nodes/COM_SplitNode.h
nodes/COM_SwitchNode.cc
nodes/COM_SwitchNode.h
nodes/COM_SwitchViewNode.cc
nodes/COM_SwitchViewNode.h
nodes/COM_TextureNode.cc
nodes/COM_TextureNode.h
nodes/COM_TimeNode.cc
nodes/COM_TimeNode.h
nodes/COM_ValueNode.cc
nodes/COM_ValueNode.h
# output nodes
nodes/COM_CompositorNode.cc
nodes/COM_CompositorNode.h
nodes/COM_FileOutputNode.cc
nodes/COM_FileOutputNode.h
nodes/COM_ViewLevelsNode.cc
nodes/COM_ViewLevelsNode.h
nodes/COM_ViewerNode.cc
nodes/COM_ViewerNode.h
operations/COM_CalculateMeanOperation.cc
operations/COM_CalculateMeanOperation.h
operations/COM_CalculateStandardDeviationOperation.cc
operations/COM_CalculateStandardDeviationOperation.h
# distort nodes
nodes/COM_FlipNode.cc
nodes/COM_FlipNode.h
nodes/COM_RotateNode.cc
nodes/COM_RotateNode.h
nodes/COM_ScaleNode.cc
nodes/COM_ScaleNode.h
nodes/COM_TranslateNode.cc
nodes/COM_TranslateNode.h
nodes/COM_DisplaceNode.cc
nodes/COM_DisplaceNode.h
nodes/COM_MapUVNode.cc
nodes/COM_MapUVNode.h
nodes/COM_ChannelMatteNode.cc
nodes/COM_ChannelMatteNode.h
nodes/COM_ChromaMatteNode.cc
nodes/COM_ChromaMatteNode.h
nodes/COM_ColorMatteNode.cc
nodes/COM_ColorMatteNode.h
nodes/COM_DifferenceMatteNode.cc
nodes/COM_DifferenceMatteNode.h
nodes/COM_DistanceMatteNode.cc
nodes/COM_DistanceMatteNode.h
nodes/COM_LensDistortionNode.cc
nodes/COM_LensDistortionNode.h
nodes/COM_LuminanceMatteNode.cc
nodes/COM_LuminanceMatteNode.h
nodes/COM_GlareNode.cc
nodes/COM_GlareNode.h
nodes/COM_SunBeamsNode.cc
nodes/COM_SunBeamsNode.h
operations/COM_SunBeamsOperation.cc
operations/COM_SunBeamsOperation.h
nodes/COM_CryptomatteNode.cc
nodes/COM_CryptomatteNode.h
operations/COM_CryptomatteOperation.cc
operations/COM_CryptomatteOperation.h
nodes/COM_CornerPinNode.cc
nodes/COM_CornerPinNode.h
nodes/COM_PlaneTrackDeformNode.cc
nodes/COM_PlaneTrackDeformNode.h
nodes/COM_CropNode.cc
nodes/COM_CropNode.h
operations/COM_CropOperation.cc
operations/COM_CropOperation.h
nodes/COM_DefocusNode.cc
nodes/COM_DefocusNode.h
nodes/COM_MovieDistortionNode.cc
nodes/COM_MovieDistortionNode.h
nodes/COM_Stabilize2dNode.cc
nodes/COM_Stabilize2dNode.h
nodes/COM_TransformNode.cc
nodes/COM_TransformNode.h
# color nodes
nodes/COM_AlphaOverNode.cc
nodes/COM_AlphaOverNode.h
nodes/COM_BrightnessNode.cc
nodes/COM_BrightnessNode.h
nodes/COM_ColorBalanceNode.cc
nodes/COM_ColorBalanceNode.h
nodes/COM_ColorCorrectionNode.cc
nodes/COM_ColorCorrectionNode.h
nodes/COM_ColorCurveNode.cc
nodes/COM_ColorCurveNode.h
nodes/COM_ColorExposureNode.cc
nodes/COM_ColorExposureNode.h
nodes/COM_ColorRampNode.cc
nodes/COM_ColorRampNode.h
nodes/COM_ColorToBWNode.cc
nodes/COM_ColorToBWNode.h
nodes/COM_ConvertAlphaNode.cc
nodes/COM_ConvertAlphaNode.h
nodes/COM_ConvertColorSpaceNode.cc
nodes/COM_ConvertColorSpaceNode.h
nodes/COM_GammaNode.cc
nodes/COM_GammaNode.h
nodes/COM_HueSaturationValueCorrectNode.cc
nodes/COM_HueSaturationValueCorrectNode.h
nodes/COM_HueSaturationValueNode.cc
nodes/COM_HueSaturationValueNode.h
nodes/COM_InvertNode.cc
nodes/COM_InvertNode.h
nodes/COM_MixNode.cc
nodes/COM_MixNode.h
nodes/COM_SetAlphaNode.cc
nodes/COM_SetAlphaNode.h
nodes/COM_TonemapNode.cc
nodes/COM_TonemapNode.h
nodes/COM_VectorCurveNode.cc
nodes/COM_VectorCurveNode.h
nodes/COM_ZCombineNode.cc
nodes/COM_ZCombineNode.h
operations/COM_TonemapOperation.cc
operations/COM_TonemapOperation.h
# converter nodes
nodes/COM_CombineColorNode.cc
nodes/COM_CombineColorNode.h
nodes/COM_CombineColorNodeLegacy.cc
nodes/COM_CombineColorNodeLegacy.h
nodes/COM_CombineXYZNode.cc
nodes/COM_CombineXYZNode.h
nodes/COM_IDMaskNode.cc
nodes/COM_IDMaskNode.h
nodes/COM_SeparateColorNode.cc
nodes/COM_SeparateColorNode.h
nodes/COM_SeparateColorNodeLegacy.cc
nodes/COM_SeparateColorNodeLegacy.h
nodes/COM_SeparateXYZNode.cc
nodes/COM_SeparateXYZNode.h
nodes/COM_MapRangeNode.cc
nodes/COM_MapRangeNode.h
nodes/COM_MapValueNode.cc
nodes/COM_MapValueNode.h
nodes/COM_MathNode.cc
nodes/COM_MathNode.h
nodes/COM_NormalNode.cc
nodes/COM_NormalNode.h
nodes/COM_NormalizeNode.cc
nodes/COM_NormalizeNode.h
operations/COM_NormalizeOperation.cc
operations/COM_NormalizeOperation.h
nodes/COM_PixelateNode.cc
nodes/COM_PixelateNode.h
operations/COM_PixelateOperation.cc
operations/COM_PixelateOperation.h
# Filter nodes
nodes/COM_BilateralBlurNode.cc
nodes/COM_BilateralBlurNode.h
operations/COM_BilateralBlurOperation.cc
operations/COM_BilateralBlurOperation.h
nodes/COM_VectorBlurNode.cc
nodes/COM_VectorBlurNode.h
operations/COM_VectorBlurOperation.cc
operations/COM_VectorBlurOperation.h
nodes/COM_AntiAliasingNode.cc
nodes/COM_AntiAliasingNode.h
nodes/COM_BlurNode.cc
nodes/COM_BlurNode.h
nodes/COM_BokehBlurNode.cc
nodes/COM_BokehBlurNode.h
nodes/COM_DenoiseNode.cc
nodes/COM_DenoiseNode.h
nodes/COM_DespeckleNode.cc
nodes/COM_DespeckleNode.h
nodes/COM_DilateErodeNode.cc
nodes/COM_DilateErodeNode.h
nodes/COM_DirectionalBlurNode.cc
nodes/COM_DirectionalBlurNode.h
nodes/COM_FilterNode.cc
nodes/COM_FilterNode.h
nodes/COM_InpaintNode.cc
nodes/COM_InpaintNode.h
nodes/COM_KuwaharaNode.cc
nodes/COM_KuwaharaNode.h
nodes/COM_PosterizeNode.cc
nodes/COM_PosterizeNode.h
operations/COM_BlurBaseOperation.cc
operations/COM_BlurBaseOperation.h
operations/COM_BokehBlurOperation.cc
operations/COM_BokehBlurOperation.h
operations/COM_DirectionalBlurOperation.cc
operations/COM_DirectionalBlurOperation.h
operations/COM_FastGaussianBlurOperation.cc
operations/COM_FastGaussianBlurOperation.h
operations/COM_GammaCorrectOperation.cc
operations/COM_GammaCorrectOperation.h
operations/COM_GaussianAlphaBlurBaseOperation.cc
operations/COM_GaussianAlphaBlurBaseOperation.h
operations/COM_GaussianAlphaXBlurOperation.cc
operations/COM_GaussianAlphaXBlurOperation.h
operations/COM_GaussianAlphaYBlurOperation.cc
operations/COM_GaussianAlphaYBlurOperation.h
operations/COM_GaussianBlurBaseOperation.cc
operations/COM_GaussianBlurBaseOperation.h
operations/COM_GaussianBokehBlurOperation.cc
operations/COM_GaussianBokehBlurOperation.h
operations/COM_GaussianXBlurOperation.cc
operations/COM_GaussianXBlurOperation.h
operations/COM_GaussianYBlurOperation.cc
operations/COM_GaussianYBlurOperation.h
operations/COM_KuwaharaAnisotropicOperation.cc
operations/COM_KuwaharaAnisotropicOperation.h
operations/COM_KuwaharaAnisotropicStructureTensorOperation.cc
operations/COM_KuwaharaAnisotropicStructureTensorOperation.h
operations/COM_KuwaharaClassicOperation.cc
operations/COM_KuwaharaClassicOperation.h
operations/COM_MovieClipAttributeOperation.cc
operations/COM_MovieClipAttributeOperation.h
operations/COM_MovieDistortionOperation.cc
operations/COM_MovieDistortionOperation.h
operations/COM_PosterizeOperation.cc
operations/COM_PosterizeOperation.h
operations/COM_SMAAOperation.cc
operations/COM_SMAAOperation.h
operations/COM_SummedAreaTableOperation.cc
operations/COM_SummedAreaTableOperation.h
operations/COM_VariableSizeBokehBlurOperation.cc
operations/COM_VariableSizeBokehBlurOperation.h
# Matte nodes
nodes/COM_BoxMaskNode.cc
nodes/COM_BoxMaskNode.h
nodes/COM_ColorSpillNode.cc
nodes/COM_ColorSpillNode.h
nodes/COM_DoubleEdgeMaskNode.cc
nodes/COM_DoubleEdgeMaskNode.h
nodes/COM_EllipseMaskNode.cc
nodes/COM_EllipseMaskNode.h
operations/COM_DoubleEdgeMaskOperation.cc
operations/COM_DoubleEdgeMaskOperation.h
nodes/COM_KeyingScreenNode.cc
nodes/COM_KeyingScreenNode.h
operations/COM_KeyingScreenOperation.cc
operations/COM_KeyingScreenOperation.h
nodes/COM_TrackPositionNode.cc
nodes/COM_TrackPositionNode.h
operations/COM_TrackPositionOperation.cc
operations/COM_TrackPositionOperation.h
nodes/COM_KeyingNode.cc
nodes/COM_KeyingNode.h
operations/COM_KeyingBlurOperation.cc
operations/COM_KeyingBlurOperation.h
operations/COM_KeyingClipOperation.cc
operations/COM_KeyingClipOperation.h
operations/COM_KeyingDespillOperation.cc
operations/COM_KeyingDespillOperation.h
operations/COM_KeyingOperation.cc
operations/COM_KeyingOperation.h
operations/COM_ColorSpillOperation.cc
operations/COM_ColorSpillOperation.h
operations/COM_RenderLayersProg.cc
operations/COM_RenderLayersProg.h
operations/COM_BokehImageOperation.cc
operations/COM_BokehImageOperation.h
operations/COM_ImageOperation.cc
operations/COM_ImageOperation.h
operations/COM_MultilayerImageOperation.cc
operations/COM_MultilayerImageOperation.h
operations/COM_TextureOperation.cc
operations/COM_TextureOperation.h
operations/COM_SocketProxyOperation.cc
operations/COM_SocketProxyOperation.h
operations/COM_CompositorOperation.cc
operations/COM_CompositorOperation.h
operations/COM_ConvertDepthToRadiusOperation.cc
operations/COM_ConvertDepthToRadiusOperation.h
operations/COM_FileOutputOperation.cc
operations/COM_FileOutputOperation.h
operations/COM_PreviewOperation.cc
operations/COM_PreviewOperation.h
operations/COM_SplitOperation.cc
operations/COM_SplitOperation.h
operations/COM_ViewerOperation.cc
operations/COM_ViewerOperation.h
operations/COM_ZCombineOperation.cc
operations/COM_ZCombineOperation.h
operations/COM_ChangeHSVOperation.cc
operations/COM_ChangeHSVOperation.h
operations/COM_ChannelMatteOperation.cc
operations/COM_ChannelMatteOperation.h
operations/COM_ChromaMatteOperation.cc
operations/COM_ChromaMatteOperation.h
operations/COM_ColorCurveOperation.cc
operations/COM_ColorCurveOperation.h
operations/COM_ColorExposureOperation.cc
operations/COM_ColorExposureOperation.h
operations/COM_ColorMatteOperation.cc
operations/COM_ColorMatteOperation.h
operations/COM_ColorRampOperation.cc
operations/COM_ColorRampOperation.h
operations/COM_CurveBaseOperation.cc
operations/COM_CurveBaseOperation.h
operations/COM_DifferenceMatteOperation.cc
operations/COM_DifferenceMatteOperation.h
operations/COM_DistanceRGBMatteOperation.cc
operations/COM_DistanceRGBMatteOperation.h
operations/COM_DistanceYCCMatteOperation.cc
operations/COM_DistanceYCCMatteOperation.h
operations/COM_HueSaturationValueCorrectOperation.cc
operations/COM_HueSaturationValueCorrectOperation.h
operations/COM_LuminanceMatteOperation.cc
operations/COM_LuminanceMatteOperation.h
operations/COM_VectorCurveOperation.cc
operations/COM_VectorCurveOperation.h
operations/COM_BrightnessOperation.cc
operations/COM_BrightnessOperation.h
operations/COM_ColorCorrectionOperation.cc
operations/COM_ColorCorrectionOperation.h
operations/COM_ConstantOperation.cc
operations/COM_ConstantOperation.h
operations/COM_GammaOperation.cc
operations/COM_GammaOperation.h
operations/COM_MixOperation.cc
operations/COM_MixOperation.h
operations/COM_ReadBufferOperation.cc
operations/COM_ReadBufferOperation.h
operations/COM_SetColorOperation.cc
operations/COM_SetColorOperation.h
operations/COM_SetValueOperation.cc
operations/COM_SetValueOperation.h
operations/COM_SetVectorOperation.cc
operations/COM_SetVectorOperation.h
operations/COM_WriteBufferOperation.cc
operations/COM_WriteBufferOperation.h
operations/COM_MathBaseOperation.cc
operations/COM_MathBaseOperation.h
operations/COM_AlphaOverKeyOperation.cc
operations/COM_AlphaOverKeyOperation.h
operations/COM_AlphaOverMixedOperation.cc
operations/COM_AlphaOverMixedOperation.h
operations/COM_AlphaOverPremultiplyOperation.cc
operations/COM_AlphaOverPremultiplyOperation.h
operations/COM_ColorBalanceASCCDLOperation.cc
operations/COM_ColorBalanceASCCDLOperation.h
operations/COM_ColorBalanceLGGOperation.cc
operations/COM_ColorBalanceLGGOperation.h
operations/COM_InvertOperation.cc
operations/COM_InvertOperation.h
operations/COM_MapRangeOperation.cc
operations/COM_MapRangeOperation.h
operations/COM_MapValueOperation.cc
operations/COM_MapValueOperation.h
operations/COM_SetAlphaMultiplyOperation.cc
operations/COM_SetAlphaMultiplyOperation.h
operations/COM_SetAlphaReplaceOperation.cc
operations/COM_SetAlphaReplaceOperation.h
# Distort operation
operations/COM_DisplaceOperation.cc
operations/COM_DisplaceOperation.h
operations/COM_DisplaceSimpleOperation.cc
operations/COM_DisplaceSimpleOperation.h
operations/COM_FlipOperation.cc
operations/COM_FlipOperation.h
operations/COM_MapUVOperation.cc
operations/COM_MapUVOperation.h
operations/COM_PlaneCornerPinOperation.cc
operations/COM_PlaneCornerPinOperation.h
operations/COM_PlaneDistortCommonOperation.cc
operations/COM_PlaneDistortCommonOperation.h
operations/COM_PlaneTrackOperation.cc
operations/COM_PlaneTrackOperation.h
operations/COM_ProjectorLensDistortionOperation.cc
operations/COM_ProjectorLensDistortionOperation.h
operations/COM_RotateOperation.cc
operations/COM_RotateOperation.h
operations/COM_ScaleOperation.cc
operations/COM_ScaleOperation.h
operations/COM_ScreenLensDistortionOperation.cc
operations/COM_ScreenLensDistortionOperation.h
operations/COM_TransformOperation.cc
operations/COM_TransformOperation.h
operations/COM_TranslateOperation.cc
operations/COM_TranslateOperation.h
operations/COM_WrapOperation.cc
operations/COM_WrapOperation.h
# Filter operations
operations/COM_ConvolutionEdgeFilterOperation.cc
operations/COM_ConvolutionEdgeFilterOperation.h
operations/COM_ConvolutionFilterOperation.cc
operations/COM_ConvolutionFilterOperation.h
operations/COM_DenoiseOperation.cc
operations/COM_DenoiseOperation.h
operations/COM_DespeckleOperation.cc
operations/COM_DespeckleOperation.h
operations/COM_DilateErodeOperation.cc
operations/COM_DilateErodeOperation.h
operations/COM_GlareBaseOperation.cc
operations/COM_GlareBaseOperation.h
operations/COM_GlareFogGlowOperation.cc
operations/COM_GlareFogGlowOperation.h
operations/COM_GlareGhostOperation.cc
operations/COM_GlareGhostOperation.h
operations/COM_GlareSimpleStarOperation.cc
operations/COM_GlareSimpleStarOperation.h
operations/COM_GlareStreaksOperation.cc
operations/COM_GlareStreaksOperation.h
operations/COM_GlareThresholdOperation.cc
operations/COM_GlareThresholdOperation.h
operations/COM_InpaintOperation.cc
operations/COM_InpaintOperation.h
operations/COM_SetSamplerOperation.cc
operations/COM_SetSamplerOperation.h
# Convert operations
operations/COM_ConvertOperation.cc
operations/COM_ConvertOperation.h
operations/COM_IDMaskOperation.cc
operations/COM_IDMaskOperation.h
operations/COM_ConvertColorSpaceOperation.cc
operations/COM_ConvertColorSpaceOperation.h
operations/COM_DotproductOperation.cc
operations/COM_DotproductOperation.h
# Matte operation
operations/COM_BoxMaskOperation.cc
operations/COM_BoxMaskOperation.h
operations/COM_EllipseMaskOperation.cc
operations/COM_EllipseMaskOperation.h
operations/COM_ConvertColorProfileOperation.cc
operations/COM_ConvertColorProfileOperation.h
operations/COM_MovieClipOperation.cc
operations/COM_MovieClipOperation.h
operations/COM_AntiAliasOperation.cc
operations/COM_AntiAliasOperation.h
operations/COM_MaskOperation.cc
operations/COM_MaskOperation.h
)
set(LIB
bf_blenkernel
PRIVATE bf::blenlib
PRIVATE bf::depsgraph
PRIVATE bf::dna
PRIVATE bf::intern::clog
PRIVATE bf::intern::guardedalloc
bf_realtime_compositor
extern_clew
PRIVATE bf::intern::atomic
)
list(APPEND INC
${CMAKE_CURRENT_BINARY_DIR}/operations
)
data_to_c(
${CMAKE_CURRENT_SOURCE_DIR}/operations/COM_OpenCLKernels.cl
${CMAKE_CURRENT_BINARY_DIR}/operations/COM_OpenCLKernels.cl.h
SRC
STRIP_LEADING_C_COMMENTS
)
add_definitions(-DCL_USE_DEPRECATED_OPENCL_1_1_APIS)
set(GENSRC_DIR ${CMAKE_CURRENT_BINARY_DIR}/operations)
set(GENSRC ${GENSRC_DIR}/COM_SMAAAreaTexture.h)
add_custom_command(
OUTPUT ${GENSRC}
COMMAND ${CMAKE_COMMAND} -E make_directory ${GENSRC_DIR}
COMMAND "$<TARGET_FILE:smaa_areatex>" ${GENSRC}
DEPENDS smaa_areatex
)
list(APPEND SRC
${GENSRC}
)
unset(GENSRC)
unset(GENSRC_DIR)
if(WITH_OPENIMAGEDENOISE)
add_definitions(-DWITH_OPENIMAGEDENOISE)
add_definitions(-DOIDN_STATIC_LIB)
list(APPEND INC_SYS
${OPENIMAGEDENOISE_INCLUDE_DIRS}
${TBB_INCLUDE_DIRS}
)
list(APPEND LIB
${OPENIMAGEDENOISE_LIBRARIES}
${TBB_LIBRARIES}
)
endif()
blender_add_lib(bf_compositor "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
if(WITH_UNITY_BUILD)
set_target_properties(bf_compositor PROPERTIES UNITY_BUILD ON)
set_target_properties(bf_compositor PROPERTIES UNITY_BUILD_BATCH_SIZE 10)
endif()
if(COMMAND target_precompile_headers)
target_precompile_headers(bf_compositor PRIVATE COM_precomp.h)
endif()
if(CXX_WARN_NO_SUGGEST_OVERRIDE)
target_compile_options(bf_compositor PRIVATE "-Wsuggest-override")
endif()
if(WITH_GTESTS)
set(TEST_SRC
tests/COM_BufferArea_test.cc
tests/COM_BufferRange_test.cc
tests/COM_BuffersIterator_test.cc
tests/COM_ComputeSummedAreaTableOperation_test.cc
tests/COM_NodeOperation_test.cc
)
set(TEST_INC
)
set(TEST_LIB
bf_compositor
)
include(GTestTesting)
blender_add_test_lib(bf_compositor_tests "${TEST_SRC}" "${INC};${TEST_INC}" "${INC_SYS}" "${LIB};${TEST_LIB}")
endif()
# RNA_prototypes.h
add_dependencies(bf_compositor bf_rna)
# End WITH_COMPOSITOR_CPU.
endif()