From 37e5ef29bba8a5e7fd310dd17a8938589d9f2396 Mon Sep 17 00:00:00 2001 From: Jonny Galloway Date: Tue, 31 Aug 2021 16:50:07 -0500 Subject: [PATCH] Atom/gallowj/color grading dev (#3751) * color grading workflow assets, python scripts, ~and test data for Nuke and PS. Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * minor changes Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * pep8 reformate code style, clean up, address CR Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * Pep8 refactor, some DRY refactoring. Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * simplification write_azasset() Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * corrected code and further simplified () Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * updated readme.txt, I was mistakenly converting the wrong lut to engine Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * refactoring, simplification and some re-org Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * fixed bad loop in old_lut_helper Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * improve the lut_helper and corrected lut shaping Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * skip non-digit metadata in 3DL files Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * file name fix Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * nit: renamed a tag in comment Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * style Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * cleanup, cmd readme Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * fixed WINGHOME Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * Updated the readme with basic instructions Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * fixed py bootstrapping errors Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * removed log file (shouldn't be there) Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * re-gen bad test lut (forgot) Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * simplify bootstrap, enhance initialize and oiio access, remove lrg .PSD files Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * bump py rev2 in bat files for colorgrading Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> * removed debug flag not used, caused failure Signed-off-by: Jonny Gallowy <~gallowj@amazon.com> Co-authored-by: Jonny Gallowy <~gallowj@amazon.com> --- .../Editor/Scripts/ColorGrading/__init__.py | 20 ++ .../ColorGrading/exr_to_3dl_azasset.py | 17 +- .../ColorGrading/from_3dl_to_azasset.py | 17 +- .../Editor/Scripts/ColorGrading/initialize.py | 83 ++++--- .../Scripts/ColorGrading/lut_compositor.py | 105 ++++---- .../Editor/Scripts/ColorGrading/lut_helper.py | 17 +- .../Common/Editor/Scripts/bootstrap.py | 31 +-- .../Nuke_Test_Extreme_Grade.nk~ | 232 ------------------ .../Shot_post_test-extreme-grade.exr | 3 - .../HDR/Test_Grade/Shot_post_test-grade.exr | 3 - .../Nuke/HDR/Test_Grade/Test-Grade.nk~ | 227 ----------------- .../Photoshop/Log2-48nits/CLT_grade.psd | 3 - .../LUT_layer_composite_hue-sat_grade.psd | 3 - .../cmdline/CMD_ColorGradingTools.bat | 2 +- .../Tools/ColorGrading/cmdline/Env_Python.bat | 14 +- .../ColorGrading/cmdline/Env_WingIDE.bat | 4 - .../cmdline/Launch_WingIDE-7-1.bat | 3 - .../cmdline/User_Env.bat.template | 9 +- 18 files changed, 148 insertions(+), 645 deletions(-) delete mode 100644 Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Extreme_Grade/Nuke_Test_Extreme_Grade.nk~ delete mode 100644 Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Extreme_Grade/Shot_post_test-extreme-grade.exr delete mode 100644 Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/Shot_post_test-grade.exr delete mode 100644 Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/Test-Grade.nk~ delete mode 100644 Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Photoshop/Log2-48nits/CLT_grade.psd delete mode 100644 Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Photoshop/Log2-48nits/LUT_layer_composite_hue-sat_grade.psd diff --git a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/__init__.py b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/__init__.py index af73f82b8d..d500d6e09c 100644 --- a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/__init__.py +++ b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/__init__.py @@ -76,6 +76,7 @@ DCCSI_GDEBUG = env_bool('DCCSI_GDEBUG', False) DCCSI_DEV_MODE = env_bool('DCCSI_DEV_MODE', False) DCCSI_GDEBUGGER = env_bool('DCCSI_GDEBUGGER', False) DCCSI_LOGLEVEL = env_bool('DCCSI_LOGLEVEL', int(20)) +DCCSI_WING_VERSION_MAJOR = env_bool('DCCSI_WING_VERSION_MAJOR', '7') # ------------------------------------------------------------------------- @@ -162,6 +163,25 @@ _LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME})) # ------------------------------------------------------------------------- +def get_datadir() -> pathlib.Path: + """ + persistent application data. + # linux: ~/.local/share + # macOS: ~/Library/Application Support + # windows: C:/Users//AppData/Roaming + """ + + home = pathlib.Path.home() + + if sys.platform == "win32": + return home / "AppData/Roaming" + elif sys.platform == "linux": + return home / ".local/share" + elif sys.platform == "darwin": + return home / "Library/Application Support" +# ------------------------------------------------------------------------- + + # ------------------------------------------------------------------------- def makedirs(folder, *args, **kwargs): """a makedirs for py2.7 support""" diff --git a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/exr_to_3dl_azasset.py b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/exr_to_3dl_azasset.py index 9166ef5a44..6c2aa1d5bb 100644 --- a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/exr_to_3dl_azasset.py +++ b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/exr_to_3dl_azasset.py @@ -27,18 +27,17 @@ import numpy as np # ------------------------------------------------------------------------ _MODULENAME = 'ColorGrading.exr_to_3dl_azasset' -import ColorGrading.initialize -ColorGrading.initialize.start() - _LOGGER = _logging.getLogger(_MODULENAME) _LOGGER.debug('Initializing: {0}.'.format({_MODULENAME})) -try: - import OpenImageIO as oiio - pass -except ImportError as e: - _LOGGER.error(f"invalid import: {e}") - sys.exit(1) +import ColorGrading.initialize +if ColorGrading.initialize.start(): + try: + import OpenImageIO as oiio + pass + except ImportError as e: + _LOGGER.error(f"invalid import: {e}") + sys.exit(1) # ------------------------------------------------------------------------ diff --git a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/from_3dl_to_azasset.py b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/from_3dl_to_azasset.py index e61ca33710..ba37994e63 100644 --- a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/from_3dl_to_azasset.py +++ b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/from_3dl_to_azasset.py @@ -18,18 +18,17 @@ import logging as _logging # ------------------------------------------------------------------------ _MODULENAME = 'ColorGrading.from_3dl_to_azasset' -import ColorGrading.initialize -ColorGrading.initialize.start() - _LOGGER = _logging.getLogger(_MODULENAME) _LOGGER.debug('Initializing: {0}.'.format({_MODULENAME})) -try: - import OpenImageIO as oiio - pass -except ImportError as e: - _LOGGER.error(f"invalid import: {e}") - sys.exit(1) +import ColorGrading.initialize +if ColorGrading.initialize.start(): + try: + import OpenImageIO as oiio + pass + except ImportError as e: + _LOGGER.error(f"invalid import: {e}") + sys.exit(1) # ------------------------------------------------------------------------ diff --git a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/initialize.py b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/initialize.py index 536c10ed05..ac64ade322 100644 --- a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/initialize.py +++ b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/initialize.py @@ -17,13 +17,10 @@ from pathlib import Path import logging as _logging # local imports -from ColorGrading import env_bool from ColorGrading import initialize_logger from ColorGrading import DCCSI_GDEBUG from ColorGrading import DCCSI_DEV_MODE -from ColorGrading import DCCSI_GDEBUGGER from ColorGrading import DCCSI_LOGLEVEL -from ColorGrading import FRMT_LOG_LONG __all__ = ['start'] @@ -44,15 +41,21 @@ _LOGGER.debug('Initializing: {0}.'.format({_MODULENAME})) # connect to the debugger if DCCSI_DEV_MODE: - APP_DATA_WING = Path('C:/Users/gallowj/AppData/Roaming/Wing Pro 7') - APP_DATA_WING.resolve() - site.addsitedir(pathlib.PureWindowsPath(APP_DATA_WING).as_posix()) - import wingdbstub as debugger - try: - debugger.Ensure() - _LOGGER.info("Wing debugger attached") - except Exception as e: - _LOGGER.debug('Can not attach Wing debugger (running in IDE already?)') + from ColorGrading import DCCSI_WING_VERSION_MAJOR + from ColorGrading import get_datadir + APPDATA = get_datadir() # os APPDATA + APPDATA_WING = Path(APPDATA, f"Wing Pro {DCCSI_WING_VERSION_MAJOR}").resolve() + if APPDATA_WING.exists(): + site.addsitedir(pathlib.PureWindowsPath(APPDATA_WING).as_posix()) + import wingdbstub as debugger + try: + debugger.Ensure() + _LOGGER.info("Wing debugger attached") + except Exception as e: + _LOGGER.debug('Can not attach Wing debugger (running in IDE already?)') + else: + _LOGGER.warning("Path envar doesn't exist: APPDATA_WING") + _LOGGER.info(f"Pattern: {APPDATA_WING}") # ------------------------------------------------------------------------ @@ -60,28 +63,16 @@ if DCCSI_DEV_MODE: def start(): """set up access to OpenImageIO, within o3de or without""" # ------------------------------------------------------------------------ + running_editor = None try: # running in o3de import azlmbr - - _O3DE_DEV = Path(os.getenv('O3DE_DEV', Path(azlmbr.paths.engroot))) - os.environ['O3DE_DEV'] = pathlib.PureWindowsPath(_O3DE_DEV).as_posix() - _LOGGER.debug(_O3DE_DEV) - - _O3DE_BIN_PATH = Path(str(_O3DE_DEV),Path(azlmbr.paths.executableFolder)) - - _O3DE_BIN = Path(os.getenv('O3DE_BIN', _O3DE_BIN_PATH.resolve())) - os.environ['O3DE_BIN'] = pathlib.PureWindowsPath(_O3DE_BIN).as_posix() - - _LOGGER.debug(_O3DE_BIN) - - site.addsitedir(_O3DE_BIN) + running_editor = True except Exception as e: # running external, start this module from: - # "C:\Depot\o3de-engine\Gems\Atom\Feature\Common\Tools\ColorGrading\cmdline\CMD_ColorGradinTools.bat" - pass - + # "C:\Depot\o3de-engine\Gems\Atom\Feature\Common\Tools\ColorGrading\cmdline\CMD_ColorGradingTools.bat" + try: _O3DE_DEV = Path(os.getenv('O3DE_DEV')) _O3DE_DEV = _O3DE_DEV.resolve() @@ -102,15 +93,32 @@ def start(): except EnvironmentError as e: _LOGGER.error('O3DE bin folder not set or found') raise e -# ------------------------------------------------------------------------ - + + if running_editor: + _O3DE_DEV = Path(os.getenv('O3DE_DEV', Path(azlmbr.paths.engroot))) + os.environ['O3DE_DEV'] = pathlib.PureWindowsPath(_O3DE_DEV).as_posix() + _LOGGER.debug(_O3DE_DEV) + + _O3DE_BIN_PATH = Path(str(_O3DE_DEV),Path(azlmbr.paths.executableFolder)) + + _O3DE_BIN = Path(os.getenv('O3DE_BIN', _O3DE_BIN_PATH.resolve())) + os.environ['O3DE_BIN'] = pathlib.PureWindowsPath(_O3DE_BIN).as_posix() + + _LOGGER.debug(_O3DE_BIN) + + site.addsitedir(_O3DE_BIN) -# ------------------------------------------------------------------------ -try: - import OpenImageIO as OpenImageIO -except ImportError as e: - _LOGGER.error(f"invalid import: {e}") - sys.exit(1) + # test access to oiio + if os.name == 'nt': + try: + import OpenImageIO as oiio + return True + except ImportError as e: + _LOGGER.error(f"invalid import: {e}") + pass + else: + _LOGGER.info("Non-Windows platforms not yet supported...") + return False # ------------------------------------------------------------------------ @@ -120,4 +128,5 @@ except ImportError as e: if __name__ == '__main__': """Run this file as main""" - start() \ No newline at end of file + oiio_exists = start() + _LOGGER.debug(f"Import OpenImageIO performed: {oiio_exists}") \ No newline at end of file diff --git a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/lut_compositor.py b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/lut_compositor.py index 74ba44dc27..75c21a31c4 100644 --- a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/lut_compositor.py +++ b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/lut_compositor.py @@ -11,42 +11,23 @@ import sys import os -import site import argparse -import math -import pathlib -from pathlib import Path import logging as _logging -from env_bool import env_bool # ------------------------------------------------------------------------ _MODULENAME = 'ColorGrading.lut_compositor' -# set these true if you want them set globally for debugging -_DCCSI_GDEBUG = env_bool('DCCSI_GDEBUG', False) -_DCCSI_DEV_MODE = env_bool('DCCSI_DEV_MODE', False) -_DCCSI_GDEBUGGER = env_bool('DCCSI_GDEBUGGER', False) -_DCCSI_LOGLEVEL = env_bool('DCCSI_LOGLEVEL', int(20)) - -if _DCCSI_GDEBUG: - _DCCSI_LOGLEVEL = int(10) - -FRMT_LOG_LONG = "[%(name)s][%(levelname)s] >> %(message)s (%(asctime)s; %(filename)s:%(lineno)d)" -_logging.basicConfig(level=_DCCSI_LOGLEVEL, - format=FRMT_LOG_LONG, - datefmt='%m-%d %H:%M') _LOGGER = _logging.getLogger(_MODULENAME) _LOGGER.debug('Initializing: {0}.'.format({_MODULENAME})) import ColorGrading.initialize -ColorGrading.initialize.start() - -try: - import OpenImageIO as oiio - pass -except ImportError as e: - _LOGGER.error(f"invalid import: {e}") - sys.exit(1) +if ColorGrading.initialize.start(): + try: + import OpenImageIO as oiio + pass + except ImportError as e: + _LOGGER.error(f"invalid import: {e}") + sys.exit(1) # ------------------------------------------------------------------------ operations = {"composite": 0, "extract": 1} @@ -62,49 +43,49 @@ args = parser.parse_args() op = operations.get(args.op, invalidOp) if op == invalidOp: - print("invalid operation") + _LOGGER.warning("invalid operation") sys.exit(1) elif op == 0: if args.l is None: - print("no LUT file specified") + _LOGGER.warning("no LUT file specified") sys.exit() # read in the input image -inBuf = oiio.ImageBuf(args.i) -inSpec = inBuf.spec() -print("Input resolution is ", inBuf.spec().width, " x ", inBuf.spec().height) +image_buffer = oiio.ImageBuf(args.i) +image_spec = image_buffer.spec() +_LOGGER.info("Input resolution is ", image_buffer.spec().width, " x ", image_buffer.spec().height) if op == 0: - outFileName = args.o - print("writing %s..." % (outFileName)) - lutBuf = oiio.ImageBuf(args.l) - lutSpec = lutBuf.spec() - print("Resolution is ", lutBuf.spec().width, " x ", lutBuf.spec().height) - if lutSpec.width != lutSpec.height*lutSpec.height: - print("invalid input file dimensions. Expect lengthwise LUT with dimension W: s*s X H: s, where s is the size of the LUT") + out_file_name = args.o + _LOGGER.info("writing %s..." % (out_file_name)) + lut_buffer = oiio.ImageBuf(args.l) + lut_spec = lut_buffer.spec() + _LOGGER.info("Resolution is ", lut_buffer.spec().width, " x ", lut_buffer.spec().height) + if lut_spec.width != lut_spec.height*lut_spec.height: + _LOGGER.warning("invalid input file dimensions. Expect lengthwise LUT with dimension W: s*s X H: s, where s is the size of the LUT") sys.exit(1) - lutSize = lutSpec.height - outSpec = oiio.ImageSpec(inSpec.width, inSpec.height, 3, oiio.TypeFloat) - outBuf = oiio.ImageBuf(outSpec) - outBuf.write(outFileName) - for y in range(outBuf.ybegin, outBuf.yend): - for x in range(outBuf.xbegin, outBuf.xend): - srcPx = inBuf.getpixel(x, y) - dstPx = (srcPx[0], srcPx[1], srcPx[2]) - if y < lutSpec.height and x < lutSpec.width: - lutPx = lutBuf.getpixel(x, y) - dstPx = (lutPx[0], lutPx[1], lutPx[2]) - outBuf.setpixel(x, y, dstPx) - outBuf.write(outFileName) + lut_size = lut_spec.height + out_image_spec = oiio.ImageSpec(image_spec.width, image_spec.height, 3, oiio.TypeFloat) + out_image_buffer = oiio.ImageBuf(out_image_spec) + out_image_buffer.write(out_file_name) + for y in range(out_image_buffer.ybegin, out_image_buffer.yend): + for x in range(out_image_buffer.xbegin, out_image_buffer.xend): + src_pixel = image_buffer.getpixel(x, y) + dst_pixel = (src_pixel[0], src_pixel[1], src_pixel[2]) + if y < lut_spec.height and x < lut_spec.width: + lut_pixel = lut_buffer.getpixel(x, y) + dst_pixel = (lut_pixel[0], lut_pixel[1], lut_pixel[2]) + out_image_buffer.setpixel(x, y, dst_pixel) + out_image_buffer.write(out_file_name) elif op == 1: - outFileName = args.o - print("writing %s..." % (outFileName)) - lutSize = args.s - lutSpec = oiio.ImageSpec(lutSize*lutSize, lutSize, 3, oiio.TypeFloat) - lutBuf = oiio.ImageBuf(lutSpec) - for y in range(lutBuf.ybegin, lutBuf.yend): - for x in range(lutBuf.xbegin, lutBuf.xend): - srcPx = inBuf.getpixel(x, y) - dstPx = (srcPx[0], srcPx[1], srcPx[2]) - lutBuf.setpixel(x, y, dstPx) - lutBuf.write(outFileName) \ No newline at end of file + out_file_name = args.o + _LOGGER.info("writing %s..." % (out_file_name)) + lut_size = args.s + lut_spec = oiio.ImageSpec(lut_size*lut_size, lut_size, 3, oiio.TypeFloat) + lut_buffer = oiio.ImageBuf(lut_spec) + for y in range(lut_buffer.ybegin, lut_buffer.yend): + for x in range(lut_buffer.xbegin, lut_buffer.xend): + src_pixel = image_buffer.getpixel(x, y) + dst_pixel = (src_pixel[0], src_pixel[1], src_pixel[2]) + lut_buffer.setpixel(x, y, dst_pixel) + lut_buffer.write(out_file_name) \ No newline at end of file diff --git a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/lut_helper.py b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/lut_helper.py index 459fe241fa..da774ffd1a 100644 --- a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/lut_helper.py +++ b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/lut_helper.py @@ -23,18 +23,17 @@ from pathlib import Path # ------------------------------------------------------------------------ _MODULENAME = 'ColorGrading.lut_helper' -import ColorGrading.initialize -ColorGrading.initialize.start() - _LOGGER = _logging.getLogger(_MODULENAME) _LOGGER.debug('Initializing: {0}.'.format({_MODULENAME})) -try: - import OpenImageIO as oiio - pass -except ImportError as e: - _LOGGER.error(f"invalid import: {e}") - sys.exit(1) +import ColorGrading.initialize +if ColorGrading.initialize.start(): + try: + import OpenImageIO as oiio + pass + except ImportError as e: + _LOGGER.error(f"invalid import: {e}") + sys.exit(1) # ------------------------------------------------------------------------ diff --git a/Gems/Atom/Feature/Common/Editor/Scripts/bootstrap.py b/Gems/Atom/Feature/Common/Editor/Scripts/bootstrap.py index 0070611592..90dfe6de8f 100644 --- a/Gems/Atom/Feature/Common/Editor/Scripts/bootstrap.py +++ b/Gems/Atom/Feature/Common/Editor/Scripts/bootstrap.py @@ -13,48 +13,19 @@ Example: color grading related scripts """ # ------------------------------------------------------------------------ # standard imports -import sys import os import inspect -import pathlib import site from pathlib import Path -import logging as _logging # ------------------------------------------------------------------------ _MODULENAME = 'Gems.Atom.Feature.Common.bootstrap' -# print (inspect.getfile(inspect.currentframe()) # script filename (usually with path) # script directory _MODULE_PATH = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) _MODULE_PATH = Path(_MODULE_PATH) site.addsitedir(_MODULE_PATH.resolve()) -from ColorGrading import env_bool from ColorGrading import initialize_logger -from ColorGrading import DCCSI_GDEBUG -from ColorGrading import DCCSI_DEV_MODE -from ColorGrading import DCCSI_LOGLEVEL - -if DCCSI_GDEBUG: - DCCSI_LOGLEVEL = int(10) - -_LOGGER = initialize_logger(_MODULENAME, log_to_file=False, default_log_level=DCCSI_LOGLEVEL) -_LOGGER.info('Initializing: {0}.'.format({_MODULENAME})) +_LOGGER = initialize_logger(_MODULENAME, log_to_file=False) _LOGGER.info(f'site.addsitedir({_MODULE_PATH.resolve()})') - -# early connect to the debugger -if DCCSI_DEV_MODE: - APP_DATA_WING = Path('C:/Users/gallowj/AppData/Roaming/Wing Pro 7') - APP_DATA_WING.resolve() - site.addsitedir(pathlib.PureWindowsPath(APP_DATA_WING).as_posix()) - import wingdbstub as debugger - try: - debugger.Ensure() - _LOGGER.info("Wing debugger attached") - except Exception as e: - _LOGGER.debug('Can not attach Wing debugger (running in IDE already?)') - - -from ColorGrading.initialize import start -start() # ------------------------------------------------------------------------ \ No newline at end of file diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Extreme_Grade/Nuke_Test_Extreme_Grade.nk~ b/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Extreme_Grade/Nuke_Test_Extreme_Grade.nk~ deleted file mode 100644 index a7c1f478b2..0000000000 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Extreme_Grade/Nuke_Test_Extreme_Grade.nk~ +++ /dev/null @@ -1,232 +0,0 @@ -#! C:/Program Files/Nuke13.0v3/nuke-13.0.3.dll -nx -version 13.0 v3 -define_window_layout_xml { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -} -Root { - inputs 0 - name C:/Depot/o3de/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Extreme_Grade/Nuke_Test_Extreme_Grade.nk - project_directory "\"C:/Depot/o3de-engine/Gems/AtomLyIntegration/CommonFeatures/Tools/ColorGrading/TestData/Nuke/" - format "2048 1556 0 0 2048 1556 1 2K_Super_35(full-ap)" - proxy_type scale - proxy_format "1024 778 0 0 1024 778 1 1K_Super_35(full-ap)" - colorManagement OCIO - OCIO_config aces_1.0.3 - defaultViewerLUT "OCIO LUTs" - workingSpaceLUT scene_linear - monitorLut ACES/Rec.709 - monitorOutLUT "sRGB (ACES)" - int8Lut matte_paint - int16Lut texture_paint - logLut compositing_log - floatLut scene_linear -} -Read { - inputs 0 - file_type exr - file C:/Depot/o3de/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/LUTs/linear_32_LUT.exr - format "1024 32 0 0 1024 32 1 " - origset true - colorspace data - name Read_Linear_LUT_32 - xpos -846 - ypos 10 -} -set Ncf69800 [stack 0] -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer1 - xpos -847 - ypos 135 -} -push $Ncf69800 -OCIOFileTransform { - file C:/Depot/o3de-engine/Tools/ColorGrading/OpenColorIO-Configs/aces_1.0.3/luts/Log2_48_nits_Shaper_to_linear.spi1d - working_space scene_linear - name Log2_48_nits_Shaper_to_linear - xpos -710 - ypos 46 -} -set Ncf69000 [stack 0] -Transform { - center {1024 778} - name Transform_Position_LUT - xpos -579 - ypos 3 -} -set Ncf68c00 [stack 0] -Read { - inputs 0 - file_type exr - file C:/Depot/o3de/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/displaymapperpassthrough.exr - format "2802 1854 0 0 2802 1854 1 " - origset true - name Read_DisplayMapperPassthrough - xpos -577 - ypos -119 -} -ZMerge { - inputs 2 - name ZMerge_Combine - xpos -413 - ypos -83 -} -set Ncef7c00 [stack 0] -HueShift { - ingray 0.136 - outgray 0.31 - saturation 2 - color_saturation 0.3 - hue_rotation -150 - brightness 0.81 - name HueShift1 - xpos -256 - ypos -83 -} -set Ncef7800 [stack 0] -OCIOCDLTransform { - saturation 1.23 - working_space scene_linear - name INV_Log2_48_nits_Shaper_to_linear - xpos -86 - ypos -83 -} -set Ncef7400 [stack 0] -Crop { - box {0 0 1024 32} - reformat true - crop false - name Crop1 - xpos -86 - ypos 32 -} -set Ncef7000 [stack 0] -OCIOFileTransform { - file C:/Depot/o3de-engine/Tools/ColorGrading/OpenColorIO-Configs/aces_1.0.3/luts/Log2_48_nits_Shaper_to_linear.spi1d - direction inverse - working_space reference - name OCIOFileTransform2 - xpos 84 - ypos 32 -} -Write { - file C:/Depot/o3de/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Extreme_Grade/test-extreme-grade_inv-Log2-48nits_32_LUT.exr - colorspace data - raw true - file_type exr - write_ACES_compliant_EXR true - datatype "32 bit float" - first_part rgba - version 8 - name Write_RAW_LUT - xpos 242 - ypos 20 -} -Viewer { - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer7 - xpos 242 - ypos 135 -} -push $Ncef7400 -Write { - file C:/Depot/o3de/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/Shot_post_test-extreme-grade.exr - colorspace compositing_linear - file_type exr - write_ACES_compliant_EXR true - datatype "32 bit float" - first_part rgba - version 7 - name Write_Shot_Grade_Comp - xpos 353 - ypos -95 -} -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer8 - xpos 357 - ypos 135 -} -push $Ncf69000 -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer2 - xpos -710 - ypos 137 -} -push $Ncf68c00 -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer3 - xpos -579 - ypos 135 -} -push $Ncef7c00 -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer4 - xpos -413 - ypos 133 -} -push $Ncef7800 -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer5 - xpos -254 - ypos 133 -} -push $Ncef7000 -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer6 - xpos -86 - ypos 134 -} diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Extreme_Grade/Shot_post_test-extreme-grade.exr b/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Extreme_Grade/Shot_post_test-extreme-grade.exr deleted file mode 100644 index f9235dac3a..0000000000 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Extreme_Grade/Shot_post_test-extreme-grade.exr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7ea4288b55725bfa89d7add69ea45b0ac9315cfffd6acfba66082f4d21c1ac1a -size 31227624 diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/Shot_post_test-grade.exr b/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/Shot_post_test-grade.exr deleted file mode 100644 index 49e0460826..0000000000 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/Shot_post_test-grade.exr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9ff499c054a259a3cd389b613382066f258287215f61da56115b3e958733dbe6 -size 31227639 diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/Test-Grade.nk~ b/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/Test-Grade.nk~ deleted file mode 100644 index 084ba1495d..0000000000 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/Test-Grade.nk~ +++ /dev/null @@ -1,227 +0,0 @@ -#! C:/Program Files/Nuke13.0v3/nuke-13.0.3.dll -nx -version 13.0 v3 -define_window_layout_xml { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -} -Root { - inputs 0 - name C:/Depot/o3de/Gems/Atom/Feature/Common/Assets/ColorGrading/TestData/Nuke/HDR/Test_Grade/Test-Grade.nk - project_directory "\"C:/Depot/o3de-engine/Gems/AtomLyIntegration/CommonFeatures/Tools/ColorGrading/TestData/Nuke/" - format "2048 1556 0 0 2048 1556 1 2K_Super_35(full-ap)" - proxy_type scale - proxy_format "1024 778 0 0 1024 778 1 1K_Super_35(full-ap)" - colorManagement OCIO - OCIO_config aces_1.0.3 - defaultViewerLUT "OCIO LUTs" - workingSpaceLUT scene_linear - monitorLut ACES/Rec.709 - monitorOutLUT "sRGB (ACES)" - int8Lut matte_paint - int16Lut texture_paint - logLut compositing_log - floatLut scene_linear -} -Read { - inputs 0 - file_type exr - file C:/Depot/o3de/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/LUTs/linear_32_LUT.exr - format "1024 32 0 0 1024 32 1 " - origset true - colorspace data - raw true - name Read_Linear_LUT_32 - xpos -846 - ypos 10 -} -set N3bfa9800 [stack 0] -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer1 - xpos -846 - ypos 135 -} -push $N3bfa9800 -OCIOFileTransform { - file C:/Depot/o3de-engine/Tools/ColorGrading/OpenColorIO-Configs/aces_1.0.3/luts/Log2_48_nits_Shaper_to_linear.spi1d - working_space rendering - name Log2_48_nits_Shaper_to_linear - xpos -710 - ypos 46 -} -set N3bfa9000 [stack 0] -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer2 - xpos -710 - ypos 137 -} -push $N3bfa9000 -Transform { - center {1024 778} - name Transform_Position_LUT - xpos -579 - ypos 3 -} -set N3bfa8c00 [stack 0] -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer3 - xpos -579 - ypos 135 -} -push $N3bfa8c00 -Read { - inputs 0 - file_type exr - file C:/Depot/o3de/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/displaymapperpassthrough.exr - format "2802 1854 0 0 2802 1854 1 " - origset true - name Read_DisplayMapperPassthrough - xpos -580 - ypos -146 -} -ZMerge { - inputs 2 - name ZMerge_Combine - xpos -413 - ypos -83 -} -set N3bf5bc00 [stack 0] -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer4 - xpos -413 - ypos 128 -} -push $N3bf5bc00 -HueShift { - ingray {0.18 0.18 0.18} - outgray {0.18 0.18 0.18} - saturation 1.26 - color {0.12 0.12 0.12} - color_saturation 0.78 - hue_rotation -150 - brightness 0.74 - name HueShift1 - xpos -256 - ypos -83 -} -set N3bf5b800 [stack 0] -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer5 - xpos -256 - ypos 130 -} -push $N3bf5b800 -Crop { - box {0 0 1024 32} - reformat true - crop false - name Crop1 - xpos -86 - ypos 32 -} -set N3bf5ac00 [stack 0] -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer6 - xpos -86 - ypos 134 -} -push $N3bf5b800 -Write { - file C:/Depot/o3de/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/Nuke_Shot_post_grade.exr - colorspace compositing_linear - file_type exr - write_ACES_compliant_EXR true - datatype "32 bit float" - first_part rgba - version 10 - name Write_Shot_Grade_Comp - selected true - xpos 353 - ypos -95 -} -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer8 - xpos 353 - ypos 135 -} -push $N3bf5ac00 -OCIOFileTransform { - file C:/Depot/o3de-engine/Tools/ColorGrading/OpenColorIO-Configs/aces_1.0.3/luts/Log2_48_nits_Shaper_to_linear.spi1d - direction inverse - working_space data - name invLog2_48_nits_Shaper_to_linear - xpos 74 - ypos -14 -} -Write { - file C:/Depot/o3de/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/test-grade_inv-Log2-48nits_32_LUT.exr - colorspace data - file_type exr - datatype "32 bit float" - first_part rgba - version 10 - name Write_RAW_LUT - xpos 242 - ypos 20 -} -Viewer { - frame 1 - frame_range 1-100 - viewerProcess "sRGB (ACES)" - name Viewer7 - xpos 242 - ypos 135 -} diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Photoshop/Log2-48nits/CLT_grade.psd b/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Photoshop/Log2-48nits/CLT_grade.psd deleted file mode 100644 index 3718e0facf..0000000000 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Photoshop/Log2-48nits/CLT_grade.psd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c0276e1d329cda3514f46a55fd1d3ce90fce617814198ab69d234f2c58c15882 -size 98742272 diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Photoshop/Log2-48nits/LUT_layer_composite_hue-sat_grade.psd b/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Photoshop/Log2-48nits/LUT_layer_composite_hue-sat_grade.psd deleted file mode 100644 index 82eca8b3cc..0000000000 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Photoshop/Log2-48nits/LUT_layer_composite_hue-sat_grade.psd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce91088eaa54afab608bfcea6ab4009cbb3027cb83c76710a46470144e7d799d -size 98638424 diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/CMD_ColorGradingTools.bat b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/CMD_ColorGradingTools.bat index 2c5809ec15..c655eb2e6c 100644 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/CMD_ColorGradingTools.bat +++ b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/CMD_ColorGradingTools.bat @@ -24,7 +24,7 @@ PUSHD %~dp0 SETLOCAL ENABLEDELAYEDEXPANSION :: if the user has set up a custom env call it -IF EXIST "%~dp0User_env.bat" CALL %~dp0User_env.bat +IF EXIST "%~dp0User_Env.bat" CALL %~dp0User_Env.bat :: Initialize env CALL %~dp0\Env_Core.bat diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_Python.bat b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_Python.bat index 83b7382dc6..fc4afc964e 100644 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_Python.bat +++ b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_Python.bat @@ -20,8 +20,6 @@ PUSHD %~dp0 CALL %~dp0\Env_Core.bat -::SETLOCAL ENABLEDELAYEDEXPANSION - echo. echo _____________________________________________________________________ echo. @@ -67,11 +65,14 @@ echo DCCSI_PY_BASE = %DCCSI_PY_BASE% :: ide and debugger plug set DCCSI_PY_DEFAULT=%DCCSI_PY_BASE% -set DCCSI_PY_IDE=%DCCSI_PYTHON_INSTALL%\runtime\python-3.7.10-rev1-windows\python +IF "%DCCSI_PY_REV%"=="" (set DCCSI_PY_REV=rev2) +IF "%DCCSI_PY_PLATFORM%"=="" (set DCCSI_PY_PLATFORM=windows) + +set DCCSI_PY_IDE=%DCCSI_PYTHON_INSTALL%\runtime\python-%DCCSI_PY_VERSION_MAJOR%.%DCCSI_PY_VERSION_MINOR%.%DCCSI_PY_VERSION_RELEASE%-%DCCSI_PY_REV%-%DCCSI_PY_PLATFORM%\python echo DCCSI_PY_IDE = %DCCSI_PY_IDE% :: Wing and other IDEs probably prefer access directly to the python.exe -set DCCSI_PY_EXE=%DCCSI_PYTHON_INSTALL%\runtime\python-3.7.10-rev1-windows\python\python.exe +set DCCSI_PY_EXE=%DCCSI_PY_IDE%\python.exe echo DCCSI_PY_EXE = %DCCSI_PY_EXE% set DCCSI_PY_IDE_PACKAGES=%DCCSI_PY_IDE%\Lib\site-packages @@ -90,7 +91,10 @@ SET PATH=%DCCSI_PYTHON_INSTALL%;%DCCSI_PY_IDE%;%DCCSI_PY_IDE_PACKAGES%;%DCCSI_PY set PYTHONPATH=%DCCSIG_PATH%;%DCCSI_PYTHON_LIB_PATH%;%O3DE_BIN_PATH%;%DCCSI_COLORGRADING_SCRIPTS%;%DCCSI_FEATURECOMMON_SCRIPTS%;%PYTHONPATH% echo PYTHONPATH = %PYTHONPATH% -::ENDLOCAL +:: used for debugging in WingIDE (but needs to be here) +IF "%TAG_USERNAME%"=="" (set TAG_USERNAME=NOT_SET) +echo TAG_USERNAME = %TAG_USERNAME% +IF "%TAG_USERNAME%"=="NOT_SET" (echo Add TAG_USERNAME to User_Env.bat) :: Set flag so we don't initialize dccsi environment twice SET O3DE_ENV_PY_INIT=1 diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_WingIDE.bat b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_WingIDE.bat index 4c297f53a9..29982db4f1 100644 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_WingIDE.bat +++ b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_WingIDE.bat @@ -38,8 +38,6 @@ set DCCSI_PY_DEFAULT=%DCCSI_PY_IDE%\python.exe set WINGHOME=%PROGRAMFILES(X86)%\Wing Pro %DCCSI_WING_VERSION_MAJOR%.%DCCSI_WING_VERSION_MINOR% IF "%WING_PROJ%"=="" (set WING_PROJ=%O3DE_PROJECT_PATH%\.solutions\.wing\o3de_color_grading_%DCCSI_WING_VERSION_MAJOR%x.wpr) -::SETLOCAL ENABLEDELAYEDEXPANSION - echo. echo _____________________________________________________________________ echo. @@ -55,8 +53,6 @@ echo WING_PROJ = %WING_PROJ% :: add to the PATH SET PATH=%WINGHOME%;%PATH% -::ENDLOCAL - :: Set flag so we don't initialize dccsi environment twice SET DCCSI_ENV_WINGIDE_INIT=1 GOTO END_OF_FILE diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Launch_WingIDE-7-1.bat b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Launch_WingIDE-7-1.bat index 93f5fb7fa6..15d31b2074 100644 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Launch_WingIDE-7-1.bat +++ b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Launch_WingIDE-7-1.bat @@ -73,9 +73,6 @@ echo DCCSI_PY_BASE = %DCCSI_PY_BASE% set DCCSI_PY_DEFAULT=%DCCSI_PY_BASE% echo DCCSI_PY_DEFAULT = %DCCSI_PY_DEFAULT% -:: if the user has set up a custom env call it -IF EXIST "%~dp0User_Dev.bat" CALL %~dp0User_Dev.bat - echo. :: Change to root dir diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/User_Env.bat.template b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/User_Env.bat.template index 558505f80f..81a53393cf 100644 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/User_Env.bat.template +++ b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/User_Env.bat.template @@ -19,17 +19,16 @@ IF "%O3DE_USER_ENV_INIT%"=="1" GOTO :END_OF_FILE cd %~dp0 PUSHD %~dp0 -SETLOCAL ENABLEDELAYEDEXPANSION - SET O3DE_DEV=C:\Depot\o3de-engine ::SET OCIO_APPS=C:\Depot\o3de-engine\Tools\ColorGrading\ocio\build\src\apps SET TAG_LY_BUILD_PATH=build SET DCCSI_GDEBUG=True SET DCCSI_DEV_MODE=True -SET WING_PROJ=%O3DE_PROJECT_PATH%\.solutions\.wing\o3de_color_grading_%DCCSI_WING_VERSION_MAJOR%x.wpr - -::ENDLOCAL +:: set the your user name here for windows path +SET TAG_USERNAME=< not set > +SET DCCSI_PY_REV=rev1 +SET DCCSI_PY_PLATFORM=windows :: Set flag so we don't initialize dccsi environment twice SET O3DE_USER_ENV_INIT=1