Skip to content

Commit 4dd0273

Browse files
authored
Adsk Contrib - Update documentation for 2.4 release (#2060)
* Update documentation for 2.4 release Signed-off-by: Doug Walker <doug.walker@autodesk.com> * Add link to prototype ACES 2 configs Signed-off-by: Doug Walker <doug.walker@autodesk.com> * Update video links Signed-off-by: Doug Walker <doug.walker@autodesk.com> --------- Signed-off-by: Doug Walker <doug.walker@autodesk.com>
1 parent feb4ada commit 4dd0273

File tree

7 files changed

+279
-8
lines changed

7 files changed

+279
-8
lines changed

docs/concepts/publications/publications.rst

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,22 @@
77
Presentations & Publications
88
============================
99

10+
* ASWF Open Source Days 2024 -- NanoColor `video <https://youtu.be/ym1kfYmGz-M?feature=shared>`_
11+
12+
* ASWF Open Source Days 2024 -- Project Update `video <https://youtu.be/zizC0ORvwnc?feature=shared>`_
13+
14+
* OCIO honored with the SMPTE Workflow Systems Medal! `article <https://www.aswf.io/blog/opencolorio-receives-smpte-workflow-systems-medal/>`_
15+
1016
* ASWF Open Source Days 2023 `video <https://www.youtube.com/watch?v=y-oq693Wl8g>`_
1117

12-
* OCIO wins the Pipeline Tool award at DigiPro 2022! `video <https://vimeo.com/742052701>`_
18+
* OCIO receives the Pipeline Tool award at DigiPro 2022! `video <https://vimeo.com/742052701>`_
1319

1420
* ASWF Open Source Days 2022 `video <https://www.youtube.com/watch?v=WzFlz1HeNdI>`_
1521

1622
* HPA Tech Retreat 2022 "Color Processing with OCIO v2 and the Academy/ASC Common LUT Format"
1723
`Slides & Tutorial <https://drive.google.com/drive/folders/1ZRTIYE6kFb-7sTUtYIYFNJndhY6tmJee?usp=share_link>`_
1824

19-
* OCIO v2 wins an Engineering Excellence award from the Hollywood Post Alliance!
25+
* OCIO v2 receives an Engineering Excellence award from the Hollywood Post Alliance!
2026
`article <https://www.hollywoodreporter.com/movies/movie-news/hpa-engineering-excellence-award-recipients-announced-1234995410/>`_
2127

2228
* SIGGRAPH 2021 course "Color management with OpenColorIO V2"

docs/configurations/aces_cg.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ and so requires no external LUT files. In fact, even the config file is built i
2525
and users may access it from any application that uses OCIO 2.2 or higher by using one of the
2626
following strings in place of the config path:
2727

28+
``ocio://studio-config-v2.2.0_aces-v1.3_ocio-v2.4`` (for OCIO 2.4 or higher)
29+
2830
``ocio://studio-config-v2.1.0_aces-v1.3_ocio-v2.3`` (for OCIO 2.3 or higher)
2931

3032
``ocio://studio-config-v1.0.0_aces-v1.3_ocio-v2.1`` (for OCIO 2.2 or higher)

docs/configurations/aces_studio.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ and so requires no external LUT files. In fact, even the config file is built i
2525
and users may access it from any application that uses OCIO 2.2 or higher by using one of the
2626
following strings in place of the config path:
2727

28+
``ocio://studio-config-v2.2.0_aces-v1.3_ocio-v2.4`` (for OCIO 2.4 or higher)
29+
2830
``ocio://studio-config-v2.1.0_aces-v1.3_ocio-v2.3`` (for OCIO 2.3 or higher)
2931

3032
``ocio://studio-config-v1.0.0_aces-v1.3_ocio-v2.1`` (for OCIO 2.2 or higher)

docs/guides/using_ocio/compatible_software.rst

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ Documentation :
2727

2828
- `Color Management <https://help.autodesk.com/view/3DSMAX/2024/ENU/?guid=GUID-AF6FB34D-5453-4AE2-A987-388A4BB5AAFD>`__
2929

30+
- `OCIO color management in Autodesk 3DS Max 2024.1 <https://youtu.be/dlwDiLsPWgI?feature=shared>`__
31+
3032

3133
After Effects
3234
*************
@@ -102,7 +104,7 @@ Documentation:
102104

103105

104106
cineSync (ftrack)
105-
*********************
107+
*****************
106108

107109
Website : `<https://cospective.com/cinesync/>`__
108110

@@ -335,11 +337,13 @@ Website : `<https://github.com/aferrero2707/PhotoFlow>`__
335337

336338

337339
Photoshop (beta)
338-
*********
340+
****************
341+
339342
OCIO can be enabled via a technology preview checkbox in preferences. For more details see `OpenColorIO and 32-bit Editing now available in Photoshop Beta <https://community.adobe.com/t5/photoshop-beta-discussions/new-feature-opencolorio-and-32-bit-editing-now-available-in-photoshop-beta/td-p/14767506>`__.
340343

341344
Photoshop
342345
*********
346+
343347
OpenColorIO display luts can be exported as ICC profiles for use in photoshop. The core idea is to create an .icc profile, with a valid description, and then to save it to the proper OS icc directory. (On OSX, ``~/Library/ColorSync/Profiles/``). Upon a Photoshop relaunch, Edit->Assign Profile, and then select your new OCIO lut.
344348

345349
Website : `<https://www.adobe.com/products/photoshop.html>`__
@@ -348,6 +352,7 @@ An OpenColorIO plugin is also available for use in Photoshop. The plug-in can pe
348352

349353
Plugin binaries are available for `download <http://fnordware.blogspot.com/2017/02/opencolorio-for-photoshop.html>`__, courtesy of `fnordware <http://www.fnordware.com>`__.
350354

355+
351356
Python
352357
******
353358

@@ -357,21 +362,23 @@ Website: `<https://github.com/AcademySoftwareFoundation/OpenColorIO/tree/main/sr
357362

358363
Documentation:
359364

360-
- `Developer Guide <https://opencolorio.org/developers/index.html>`__
365+
- :ref:`developing`
361366

362-
- `Usage Examples <https://opencolorio.org/developers/usage_examples.html>`__
367+
- :ref:`developers-usageexamples`
363368

364369

365370
RV (Autodesk)
366371
*************
367372

368-
Website : `<http://www.tweaksoftware.com>`__
373+
Website : `<https://www.autodesk.com/products/flow-production-tracking/rv>`__
374+
375+
OpenRV : `<https://github.com/AcademySoftwareFoundation/OpenRV>`__
369376

370377
Supported Version: >= 4
371378

372379
Documentation :
373380

374-
- For more details, see the OpenColorIO section of the `RV User Manual <http://www.tweaksoftware.com/static/documentation/rv/current/html/rv_manual.html#OpenColorIO>`__.
381+
- For more details, see the OpenColorIO section of the `RV User Manual <https://aswf-openrv.readthedocs.io/en/latest/rv-manuals/rv-user-manual/rv-user-manual-chapter-eleven.html>`__.
375382

376383

377384
Silhouette (Boris FX)
@@ -444,6 +451,7 @@ Documentation :
444451

445452
Apps w/icc or luts
446453
******************
454+
447455
flame (.3dl), lustre (.3dl), cinespace (.csp), houdini (.lut), iridas_itx (.itx)
448456
photoshop (.icc)
449457

docs/guides/using_ocio/tool_overview.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,17 @@ Use the --help argument for more information on to the available options.
189189
.. TODO: Examples
190190
191191
192+
.. _overview-ociocpuinfo:
193+
194+
ociocpuinfo
195+
***********
196+
197+
This tool simply prints information about the CPU in your computer. OCIO will
198+
switch in different versions of the apply functions based on which SIMD
199+
instruction sets are supported by a given CPU, so this is provided as a
200+
potential trouble-shooting tool.
201+
202+
192203
.. _overview-ociodisplay:
193204

194205
ociodisplay

docs/releases/_index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Releases
1010
.. toctree::
1111
:caption: Upgrading to v2
1212

13+
ocio_2_4
1314
ocio_2_3
1415
ocio_2_2
1516
ocio_2_1

docs/releases/ocio_2_4.rst

Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,241 @@
1+
..
2+
SPDX-License-Identifier: CC-BY-4.0
3+
Copyright Contributors to the OpenColorIO Project.
4+
5+
6+
OCIO 2.4 Release
7+
================
8+
9+
Timeline
10+
********
11+
12+
OpenColorIO 2.4 was delivered in September 2024 and is in the VFX Reference Platform for
13+
calendar year 2025.
14+
15+
16+
New Feature Guide
17+
=================
18+
19+
ACES 2.0 Output Transforms (PREVIEW RELEASE)
20+
********************************************
21+
22+
The Academy Color Encoding System has released a new major version with a completely new
23+
set of Output Transforms (which are the transforms that convert from ACES2065-1 to a display
24+
color space). These transforms are much more sophisticated than ACES 1 and include a
25+
sophisticated gamut mapping algorithm that takes advantage of recent work in color appearance
26+
modeling. The invertibility of the transforms is also improved.
27+
28+
**ACES 2 support in OCIO 2.4.0 is labelled a "Preview Release" to indicate that this is a
29+
work-in-progress that is not yet ready for production use. Both the processing results and
30+
the API for it will likely change in OCIO 2.4.1 and future releases.**
31+
32+
The OCIO config files for ACES 2 are still under development, but prototype configs for
33+
testing may be downloaded from `this PR on the OpenColorIO-Config-ACES repo.
34+
<https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/pull/130>`_
35+
36+
A preliminary technical description of the ACES 2 Output Transform algorithm may be found
37+
`at this link. <https://draftdocs.acescentral.com/output-transforms/technical-details/>`_
38+
39+
40+
Built-in Configs
41+
****************
42+
43+
An updated set of built-in CG and Studio configs is included in the 2.4 release. These include
44+
the updates from the OCIO Configs Working Group over the past year. The updates include:
45+
46+
* Updated texture asset color space names, following the work of the ASWF Color Interop Forum.
47+
(The previous names for all active color spaces have been preserved via an alias.)
48+
* Making the display color spaces active (allowing for easier display-to-display conversions).
49+
50+
Additional updates for the Studio config include:
51+
52+
* Addition of the Apple Log camera color space
53+
54+
Given that the ACES 2 support is still a work-in-progress, the built-in configs in 2.4.0
55+
are based on ACES 1.3. Versions for ACES 2 are under development and are planned for the
56+
OCIO 2.4.1 release.
57+
58+
For Users
59+
+++++++++
60+
61+
The following URI strings may be provided anywhere you would normally provide a file path
62+
to a config (e.g. as the OCIO environment variable):
63+
64+
To use the updated :ref:`aces_cg`, use this string for the config path:
65+
ocio://cg-config-v2.2.0_aces-v1.3_ocio-v2.4
66+
67+
To use the updated :ref:`aces_studio`, use this string for the config path:
68+
ocio://studio-config-v2.2.0_aces-v1.3_ocio-v2.4
69+
70+
This string will give you the current default config, which is the latest ACES CG Config:
71+
ocio://default
72+
73+
This string now points to this latest CG config:
74+
ocio://cg-config-latest
75+
76+
This string now points to this latest Studio config:
77+
ocio://studio-config-latest
78+
79+
80+
Tool Enhancements
81+
*****************
82+
83+
For Users
84+
+++++++++
85+
86+
* There are now Python Wheels available for Python 3.13 (Python 3.7 support will be removed soon).
87+
88+
* There is a ``bitdepth`` argument to ``ocioconvert`` to control the processing and writing bit-depth.
89+
90+
* There is a ``ociocpuinfo`` utility that prints info about the CPU in your computer, especially
91+
which SIMD intrinsics it supports. As with the other command-line tools, this is available as part
92+
of an OCIO install when building from source or via PyPI.
93+
94+
95+
API Enhancements
96+
****************
97+
98+
For Developers
99+
++++++++++++++
100+
101+
You may find the following additions to the OCIO API useful:
102+
103+
* There is now a ``hasAlias`` method on the ColorSpace and NamedTransform classes.
104+
105+
* The FileTransform class has a new static method ``IsFormatExtensionSupported`` that
106+
checks if a specific LUT format file extension is supported by OpenColorIO.
107+
108+
109+
New Fixed Function Transforms
110+
*****************************
111+
112+
For Config Authors
113+
++++++++++++++++++
114+
115+
The following new styles are available for use with the FixedFunctionTransform:
116+
117+
* ``FIXED_FUNCTION_ACES_OUTPUT_TRANSFORM_20`` -- This implements the part of the ACES 2.0
118+
Output Transform that converts from ACES2065-1 to the intended linear values in the limiting
119+
primaries. (This requires further steps to get to the intended display colorimetry, typically
120+
a clamp, scale, and matrix.) It takes 9 parameters: peak_luminance (in nits), followed by
121+
the chromaticity coordinates for the limiting gamut: [ red_x, red_y, green_x, green_y, blue_x,
122+
blue_y, white_x, white_y ]. **This is a work-in-progress and may change or be removed in
123+
future releases.**
124+
125+
* ``FIXED_FUNCTION_ACES_RGB_TO_JMH_20`` -- This implements the conversion from a linear RGB
126+
space into the JMh (lightness, colorfulness, hue) color appearance model space that is used
127+
in the ACES 2 Output Transform algorithm. It takes 8 parameters which are the chromaticity
128+
coordinates of the linear RGB color space: [ red_x, red_y, green_x, green_y, blue_x,
129+
blue_y, white_x, white_y ]. **This is a work-in-progress and may change or be removed in
130+
future releases.**
131+
132+
* ``FIXED_FUNCTION_ACES_TONESCALE_COMPRESS_20`` -- This implements the part of the ACES 2
133+
Output Transform algorithm that modify the tonescale and chroma of the image when mapping from
134+
the scene-referred to display-referred image state. It takes one parameter: the peak_luminance
135+
of the target display device (in nits). **This is a work-in-progress and may change or be
136+
removed in future releases.**
137+
138+
* ``FIXED_FUNCTION_ACES_GAMUT_COMPRESS_20`` -- This implements the part of the ACES 2 Output
139+
Transform algorithm that applies gamut compression to the target display gamut. It takes
140+
the same 9 parameters as ``FIXED_FUNCTION_ACES_OUTPUT_TRANSFORM_20``. **This is a work-in-progress
141+
and may change or be removed in future releases.**
142+
143+
* ``FIXED_FUNCTION_LIN_TO_PQ`` -- This is the curve for SMPTE ST-2084 (PQ). It is scaled with 100 nits
144+
at 1.0. Negative values are mirrored around the origin. It takes no parameters. Note that this
145+
implementation is slower (especially on the CPU) than the Built-in Transform that implements
146+
the same function via a LUT1D rather than via a formula: ``CURVE - LINEAR_to_ST-2084``. The
147+
only advantage of the Fixed Function is that it does not use texture memory on the GPU.
148+
149+
* ``FIXED_FUNCTION_LIN_TO_GAMMA_LOG`` -- This curve contains a parametrized gamma and log segment.
150+
It takes 10 parameters and is capable of implementing both the Apple Log curve and the OETF for
151+
Hybrid Log Gamma (HLG). The parameters are:
152+
[ mirrorPt, breakPt, gammaSeg_power, gammaSeg_slope, gammaSeg_off, logSeg_base, logSeg_logSlope,
153+
logSeg_logOff, logSeg_linSlope, logSeg_linOff ].
154+
155+
The exact formula may be found in the renderer code in `ops/fixedfunction/FixedFunctionOpCPU.cpp
156+
<https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/2f5ae2c568a4c1fb87e548716e2a12ac9e74d861/src/OpenColorIO/ops/fixedfunction/FixedFunctionOpCPU.cpp#L1908>`_
157+
158+
For implementing the Apple Log or HLG OETF curves, it is recommended to use the Built-in Transforms
159+
``CURVE - APPLE_LOG_to_LINEAR`` and ``CURVE - HLG-OETF`` as they are faster (especially on the CPU)
160+
since they are implemented via a LUT1D rather than a formula.
161+
162+
* ``FIXED_FUNCTION_LIN_TO_DOUBLE_LOG`` -- This curve contains two parameterized LogAffineTransforms
163+
with an optional middle linear segment. It takes 13 parameters and is capable of implementing the
164+
Canon Log 2 and Canon Log 3 curves. The parameters are:
165+
[ base, break1, break2, logSeg1_logSlope, logSeg1_logOff, logSeg1_linSlope, logSeg1_linOff
166+
logSeg2_logSlope, logSeg2_logOff, logSeg2_linSlope, logSeg2_linOff, linSeg_slope, linSeg_off ]
167+
168+
The exact formula may be found in the renderer code in `ops/fixedfunction/FixedFunctionOpCPU.cpp
169+
<https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/2f5ae2c568a4c1fb87e548716e2a12ac9e74d861/src/OpenColorIO/ops/fixedfunction/FixedFunctionOpCPU.cpp#L2006>`_
170+
171+
For implementing the Canon Log 2 or 3 curves, it is recommended to use the Built-in Transforms
172+
``CURVE - CANON_CLOG2_to_LINEAR`` and ``CURVE - CANON_CLOG3_to_LINEAR`` as they are faster
173+
(especially on the CPU) since they are implemented via a LUT1D rather than a formula.
174+
175+
176+
New Built-in Transforms
177+
***********************
178+
179+
For Config Authors
180+
++++++++++++++++++
181+
182+
In config files with ``ocio_profile_version`` set to 2.4 or higher, config authors may take
183+
advantage of the following new BuiltinTransform styles:
184+
185+
* ``APPLE_LOG_to_ACES2065-1`` -- Converts Apple Log to ACES2065-1.
186+
187+
* ``CURVE - APPLE_LOG_to_LINEAR`` -- Applies only the EOTF curve for Apple Log.
188+
189+
* ``CURVE - HLG-OETF`` -- Applies the OETF curve for Hybrid Log Gamma.
190+
191+
* ``CURVE - HLG-OETF-INVERSE`` -- Applies the inverse-OETF curve for Hybrid Log Gamma.
192+
193+
* ``DISPLAY - CIE-XYZ-D65_to_DCDM-D65`` -- Implements a display color space to produce a
194+
Digital Cinema Distribution Master (DCDM) with a D65 creative white point. This uses the
195+
traditional 2.6 gamma SDR transfer function.
196+
197+
* ``DISPLAY - CIE-XYZ-D65_to_ST2084-DCDM-D65`` -- Implements a display color space to produce an
198+
HDR Digital Cinema Distribution Master (DCDM) with a D65 creative white point. This implements
199+
the ST-2084 transfer function for HDR with an input Y value of 1.0 mapping to 100 nits.
200+
201+
The following implement various View Transforms used by the ACES 2 Output Transforms:
202+
203+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0``
204+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0``
205+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-108nit-P3-D65_2.0``
206+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-300nit-P3-D65_2.0``
207+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D65_2.0``
208+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0``
209+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D65_2.0``
210+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D65_2.0``
211+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-REC2020_2.0``
212+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020_2.0``
213+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-REC2020_2.0``
214+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-REC2020_2.0``
215+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0``
216+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-P3-D65_2.0``
217+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC2020-D65_2.0``
218+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-P3-D65_2.0``
219+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-XYZ-E_2.0``
220+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-108nit-P3-D60-in-P3-D65_2.0``
221+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-300nit-P3-D60-in-XYZ-E_2.0``
222+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D60-in-P3-D65_2.0``
223+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-P3-D65_2.0``
224+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D60-in-P3-D65_2.0``
225+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D60-in-P3-D65_2.0``
226+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D60-in-REC2020-D65_2.0``
227+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-REC2020-D65_2.0``
228+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D60-in-REC2020-D65_2.0``
229+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D60-in-REC2020-D65_2.0``
230+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-REC2020-D60-in-REC2020-D65_2.0``
231+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020-D60-in-REC2020-D65_2.0``
232+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-REC2020-D60-in-REC2020-D65_2.0``
233+
* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-REC2020-D60-in-REC2020-D65_2.0``
234+
235+
236+
Release Notes
237+
=============
238+
239+
For additional details, please see the GitHub release page:
240+
241+
`OCIO 2.4.0 <https://github.com/AcademySoftwareFoundation/OpenColorIO/releases/tag/v2.4.0>`_

0 commit comments

Comments
 (0)