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>
monroegm-disable-blank-issue-2
Jonny Galloway 4 years ago committed by GitHub
parent 39cf45e544
commit 37e5ef29bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -76,6 +76,7 @@ DCCSI_GDEBUG = env_bool('DCCSI_GDEBUG', False)
DCCSI_DEV_MODE = env_bool('DCCSI_DEV_MODE', False) DCCSI_DEV_MODE = env_bool('DCCSI_DEV_MODE', False)
DCCSI_GDEBUGGER = env_bool('DCCSI_GDEBUGGER', False) DCCSI_GDEBUGGER = env_bool('DCCSI_GDEBUGGER', False)
DCCSI_LOGLEVEL = env_bool('DCCSI_LOGLEVEL', int(20)) 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/<USER>/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): def makedirs(folder, *args, **kwargs):
"""a makedirs for py2.7 support""" """a makedirs for py2.7 support"""

@ -27,18 +27,17 @@ import numpy as np
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
_MODULENAME = 'ColorGrading.exr_to_3dl_azasset' _MODULENAME = 'ColorGrading.exr_to_3dl_azasset'
import ColorGrading.initialize
ColorGrading.initialize.start()
_LOGGER = _logging.getLogger(_MODULENAME) _LOGGER = _logging.getLogger(_MODULENAME)
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME})) _LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
try: import ColorGrading.initialize
import OpenImageIO as oiio if ColorGrading.initialize.start():
pass try:
except ImportError as e: import OpenImageIO as oiio
_LOGGER.error(f"invalid import: {e}") pass
sys.exit(1) except ImportError as e:
_LOGGER.error(f"invalid import: {e}")
sys.exit(1)
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------

@ -18,18 +18,17 @@ import logging as _logging
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
_MODULENAME = 'ColorGrading.from_3dl_to_azasset' _MODULENAME = 'ColorGrading.from_3dl_to_azasset'
import ColorGrading.initialize
ColorGrading.initialize.start()
_LOGGER = _logging.getLogger(_MODULENAME) _LOGGER = _logging.getLogger(_MODULENAME)
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME})) _LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
try: import ColorGrading.initialize
import OpenImageIO as oiio if ColorGrading.initialize.start():
pass try:
except ImportError as e: import OpenImageIO as oiio
_LOGGER.error(f"invalid import: {e}") pass
sys.exit(1) except ImportError as e:
_LOGGER.error(f"invalid import: {e}")
sys.exit(1)
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------

@ -17,13 +17,10 @@ from pathlib import Path
import logging as _logging import logging as _logging
# local imports # local imports
from ColorGrading import env_bool
from ColorGrading import initialize_logger from ColorGrading import initialize_logger
from ColorGrading import DCCSI_GDEBUG from ColorGrading import DCCSI_GDEBUG
from ColorGrading import DCCSI_DEV_MODE from ColorGrading import DCCSI_DEV_MODE
from ColorGrading import DCCSI_GDEBUGGER
from ColorGrading import DCCSI_LOGLEVEL from ColorGrading import DCCSI_LOGLEVEL
from ColorGrading import FRMT_LOG_LONG
__all__ = ['start'] __all__ = ['start']
@ -44,15 +41,21 @@ _LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
# connect to the debugger # connect to the debugger
if DCCSI_DEV_MODE: if DCCSI_DEV_MODE:
APP_DATA_WING = Path('C:/Users/gallowj/AppData/Roaming/Wing Pro 7') from ColorGrading import DCCSI_WING_VERSION_MAJOR
APP_DATA_WING.resolve() from ColorGrading import get_datadir
site.addsitedir(pathlib.PureWindowsPath(APP_DATA_WING).as_posix()) APPDATA = get_datadir() # os APPDATA
import wingdbstub as debugger APPDATA_WING = Path(APPDATA, f"Wing Pro {DCCSI_WING_VERSION_MAJOR}").resolve()
try: if APPDATA_WING.exists():
debugger.Ensure() site.addsitedir(pathlib.PureWindowsPath(APPDATA_WING).as_posix())
_LOGGER.info("Wing debugger attached") import wingdbstub as debugger
except Exception as e: try:
_LOGGER.debug('Can not attach Wing debugger (running in IDE already?)') 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(): def start():
"""set up access to OpenImageIO, within o3de or without""" """set up access to OpenImageIO, within o3de or without"""
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
running_editor = None
try: try:
# running in o3de # running in o3de
import azlmbr import azlmbr
running_editor = True
_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)
except Exception as e: except Exception as e:
# running external, start this module from: # running external, start this module from:
# "C:\Depot\o3de-engine\Gems\Atom\Feature\Common\Tools\ColorGrading\cmdline\CMD_ColorGradinTools.bat" # "C:\Depot\o3de-engine\Gems\Atom\Feature\Common\Tools\ColorGrading\cmdline\CMD_ColorGradingTools.bat"
pass
try: try:
_O3DE_DEV = Path(os.getenv('O3DE_DEV')) _O3DE_DEV = Path(os.getenv('O3DE_DEV'))
_O3DE_DEV = _O3DE_DEV.resolve() _O3DE_DEV = _O3DE_DEV.resolve()
@ -102,15 +93,32 @@ def start():
except EnvironmentError as e: except EnvironmentError as e:
_LOGGER.error('O3DE bin folder not set or found') _LOGGER.error('O3DE bin folder not set or found')
raise e 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)
# ------------------------------------------------------------------------ # test access to oiio
try: if os.name == 'nt':
import OpenImageIO as OpenImageIO try:
except ImportError as e: import OpenImageIO as oiio
_LOGGER.error(f"invalid import: {e}") return True
sys.exit(1) 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__': if __name__ == '__main__':
"""Run this file as main""" """Run this file as main"""
start() oiio_exists = start()
_LOGGER.debug(f"Import OpenImageIO performed: {oiio_exists}")

@ -11,42 +11,23 @@
import sys import sys
import os import os
import site
import argparse import argparse
import math
import pathlib
from pathlib import Path
import logging as _logging import logging as _logging
from env_bool import env_bool
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
_MODULENAME = 'ColorGrading.lut_compositor' _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 = _logging.getLogger(_MODULENAME)
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME})) _LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
import ColorGrading.initialize import ColorGrading.initialize
ColorGrading.initialize.start() if ColorGrading.initialize.start():
try:
try: import OpenImageIO as oiio
import OpenImageIO as oiio pass
pass except ImportError as e:
except ImportError as e: _LOGGER.error(f"invalid import: {e}")
_LOGGER.error(f"invalid import: {e}") sys.exit(1)
sys.exit(1)
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
operations = {"composite": 0, "extract": 1} operations = {"composite": 0, "extract": 1}
@ -62,49 +43,49 @@ args = parser.parse_args()
op = operations.get(args.op, invalidOp) op = operations.get(args.op, invalidOp)
if op == invalidOp: if op == invalidOp:
print("invalid operation") _LOGGER.warning("invalid operation")
sys.exit(1) sys.exit(1)
elif op == 0: elif op == 0:
if args.l is None: if args.l is None:
print("no LUT file specified") _LOGGER.warning("no LUT file specified")
sys.exit() sys.exit()
# read in the input image # read in the input image
inBuf = oiio.ImageBuf(args.i) image_buffer = oiio.ImageBuf(args.i)
inSpec = inBuf.spec() image_spec = image_buffer.spec()
print("Input resolution is ", inBuf.spec().width, " x ", inBuf.spec().height) _LOGGER.info("Input resolution is ", image_buffer.spec().width, " x ", image_buffer.spec().height)
if op == 0: if op == 0:
outFileName = args.o out_file_name = args.o
print("writing %s..." % (outFileName)) _LOGGER.info("writing %s..." % (out_file_name))
lutBuf = oiio.ImageBuf(args.l) lut_buffer = oiio.ImageBuf(args.l)
lutSpec = lutBuf.spec() lut_spec = lut_buffer.spec()
print("Resolution is ", lutBuf.spec().width, " x ", lutBuf.spec().height) _LOGGER.info("Resolution is ", lut_buffer.spec().width, " x ", lut_buffer.spec().height)
if lutSpec.width != lutSpec.height*lutSpec.height: if lut_spec.width != lut_spec.height*lut_spec.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") _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) sys.exit(1)
lutSize = lutSpec.height lut_size = lut_spec.height
outSpec = oiio.ImageSpec(inSpec.width, inSpec.height, 3, oiio.TypeFloat) out_image_spec = oiio.ImageSpec(image_spec.width, image_spec.height, 3, oiio.TypeFloat)
outBuf = oiio.ImageBuf(outSpec) out_image_buffer = oiio.ImageBuf(out_image_spec)
outBuf.write(outFileName) out_image_buffer.write(out_file_name)
for y in range(outBuf.ybegin, outBuf.yend): for y in range(out_image_buffer.ybegin, out_image_buffer.yend):
for x in range(outBuf.xbegin, outBuf.xend): for x in range(out_image_buffer.xbegin, out_image_buffer.xend):
srcPx = inBuf.getpixel(x, y) src_pixel = image_buffer.getpixel(x, y)
dstPx = (srcPx[0], srcPx[1], srcPx[2]) dst_pixel = (src_pixel[0], src_pixel[1], src_pixel[2])
if y < lutSpec.height and x < lutSpec.width: if y < lut_spec.height and x < lut_spec.width:
lutPx = lutBuf.getpixel(x, y) lut_pixel = lut_buffer.getpixel(x, y)
dstPx = (lutPx[0], lutPx[1], lutPx[2]) dst_pixel = (lut_pixel[0], lut_pixel[1], lut_pixel[2])
outBuf.setpixel(x, y, dstPx) out_image_buffer.setpixel(x, y, dst_pixel)
outBuf.write(outFileName) out_image_buffer.write(out_file_name)
elif op == 1: elif op == 1:
outFileName = args.o out_file_name = args.o
print("writing %s..." % (outFileName)) _LOGGER.info("writing %s..." % (out_file_name))
lutSize = args.s lut_size = args.s
lutSpec = oiio.ImageSpec(lutSize*lutSize, lutSize, 3, oiio.TypeFloat) lut_spec = oiio.ImageSpec(lut_size*lut_size, lut_size, 3, oiio.TypeFloat)
lutBuf = oiio.ImageBuf(lutSpec) lut_buffer = oiio.ImageBuf(lut_spec)
for y in range(lutBuf.ybegin, lutBuf.yend): for y in range(lut_buffer.ybegin, lut_buffer.yend):
for x in range(lutBuf.xbegin, lutBuf.xend): for x in range(lut_buffer.xbegin, lut_buffer.xend):
srcPx = inBuf.getpixel(x, y) src_pixel = image_buffer.getpixel(x, y)
dstPx = (srcPx[0], srcPx[1], srcPx[2]) dst_pixel = (src_pixel[0], src_pixel[1], src_pixel[2])
lutBuf.setpixel(x, y, dstPx) lut_buffer.setpixel(x, y, dst_pixel)
lutBuf.write(outFileName) lut_buffer.write(out_file_name)

@ -23,18 +23,17 @@ from pathlib import Path
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
_MODULENAME = 'ColorGrading.lut_helper' _MODULENAME = 'ColorGrading.lut_helper'
import ColorGrading.initialize
ColorGrading.initialize.start()
_LOGGER = _logging.getLogger(_MODULENAME) _LOGGER = _logging.getLogger(_MODULENAME)
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME})) _LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
try: import ColorGrading.initialize
import OpenImageIO as oiio if ColorGrading.initialize.start():
pass try:
except ImportError as e: import OpenImageIO as oiio
_LOGGER.error(f"invalid import: {e}") pass
sys.exit(1) except ImportError as e:
_LOGGER.error(f"invalid import: {e}")
sys.exit(1)
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------

@ -13,48 +13,19 @@ Example: color grading related scripts
""" """
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
# standard imports # standard imports
import sys
import os import os
import inspect import inspect
import pathlib
import site import site
from pathlib import Path from pathlib import Path
import logging as _logging
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
_MODULENAME = 'Gems.Atom.Feature.Common.bootstrap' _MODULENAME = 'Gems.Atom.Feature.Common.bootstrap'
# print (inspect.getfile(inspect.currentframe()) # script filename (usually with path)
# script directory # script directory
_MODULE_PATH = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) _MODULE_PATH = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
_MODULE_PATH = Path(_MODULE_PATH) _MODULE_PATH = Path(_MODULE_PATH)
site.addsitedir(_MODULE_PATH.resolve()) site.addsitedir(_MODULE_PATH.resolve())
from ColorGrading import env_bool
from ColorGrading import initialize_logger from ColorGrading import initialize_logger
from ColorGrading import DCCSI_GDEBUG _LOGGER = initialize_logger(_MODULENAME, log_to_file=False)
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.info(f'site.addsitedir({_MODULE_PATH.resolve()})') _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()
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------

@ -1,232 +0,0 @@
#! C:/Program Files/Nuke13.0v3/nuke-13.0.3.dll -nx
version 13.0 v3
define_window_layout_xml {<?xml version="1.0" encoding="UTF-8"?>
<layout version="1.0">
<window x="108" y="0" w="3729" h="2127" screen="0">
<splitter orientation="1">
<split size="40"/>
<dock id="" hideTitles="1" activePageId="Toolbar.1">
<page id="Toolbar.1"/>
</dock>
<split size="3066" stretch="1"/>
<splitter orientation="2">
<split size="1224"/>
<dock id="" activePageId="Viewer.6">
<page id="Viewer.1"/>
<page id="Viewer.2"/>
<page id="Viewer.3"/>
<page id="Viewer.4"/>
<page id="Viewer.5"/>
<page id="Viewer.6"/>
<page id="Viewer.7"/>
</dock>
<split size="861"/>
<dock id="" activePageId="DAG.1" focus="true">
<page id="DAG.1"/>
<page id="Curve Editor.1"/>
<page id="DopeSheet.1"/>
</dock>
</splitter>
<split size="615"/>
<dock id="" activePageId="Properties.1">
<page id="Properties.1"/>
<page id="uk.co.thefoundry.backgroundrenderview.1"/>
</dock>
</splitter>
</window>
</layout>
}
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
}

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7ea4288b55725bfa89d7add69ea45b0ac9315cfffd6acfba66082f4d21c1ac1a
size 31227624

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9ff499c054a259a3cd389b613382066f258287215f61da56115b3e958733dbe6
size 31227639

@ -1,227 +0,0 @@
#! C:/Program Files/Nuke13.0v3/nuke-13.0.3.dll -nx
version 13.0 v3
define_window_layout_xml {<?xml version="1.0" encoding="UTF-8"?>
<layout version="1.0">
<window x="108" y="0" w="3729" h="2127" screen="0">
<splitter orientation="1">
<split size="40"/>
<dock id="" hideTitles="1" activePageId="Toolbar.1">
<page id="Toolbar.1"/>
</dock>
<split size="2883" stretch="1"/>
<splitter orientation="2">
<split size="1224"/>
<dock id="" activePageId="Viewer.1">
<page id="Viewer.1"/>
<page id="Viewer.2"/>
<page id="Viewer.3"/>
<page id="Viewer.4"/>
<page id="Viewer.5"/>
<page id="Viewer.6"/>
<page id="Viewer.7"/>
<page id="Viewer.8"/>
</dock>
<split size="861"/>
<dock id="" activePageId="DAG.1">
<page id="DAG.1"/>
<page id="Curve Editor.1"/>
<page id="DopeSheet.1"/>
</dock>
</splitter>
<split size="798"/>
<dock id="" activePageId="Properties.1" focus="true">
<page id="Properties.1"/>
<page id="uk.co.thefoundry.backgroundrenderview.1"/>
</dock>
</splitter>
</window>
</layout>
}
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
}

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c0276e1d329cda3514f46a55fd1d3ce90fce617814198ab69d234f2c58c15882
size 98742272

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ce91088eaa54afab608bfcea6ab4009cbb3027cb83c76710a46470144e7d799d
size 98638424

@ -24,7 +24,7 @@ PUSHD %~dp0
SETLOCAL ENABLEDELAYEDEXPANSION SETLOCAL ENABLEDELAYEDEXPANSION
:: if the user has set up a custom env call it :: 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 :: Initialize env
CALL %~dp0\Env_Core.bat CALL %~dp0\Env_Core.bat

@ -20,8 +20,6 @@ PUSHD %~dp0
CALL %~dp0\Env_Core.bat CALL %~dp0\Env_Core.bat
::SETLOCAL ENABLEDELAYEDEXPANSION
echo. echo.
echo _____________________________________________________________________ echo _____________________________________________________________________
echo. echo.
@ -67,11 +65,14 @@ echo DCCSI_PY_BASE = %DCCSI_PY_BASE%
:: ide and debugger plug :: ide and debugger plug
set DCCSI_PY_DEFAULT=%DCCSI_PY_BASE% 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% echo DCCSI_PY_IDE = %DCCSI_PY_IDE%
:: Wing and other IDEs probably prefer access directly to the python.exe :: 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% echo DCCSI_PY_EXE = %DCCSI_PY_EXE%
set DCCSI_PY_IDE_PACKAGES=%DCCSI_PY_IDE%\Lib\site-packages 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% set PYTHONPATH=%DCCSIG_PATH%;%DCCSI_PYTHON_LIB_PATH%;%O3DE_BIN_PATH%;%DCCSI_COLORGRADING_SCRIPTS%;%DCCSI_FEATURECOMMON_SCRIPTS%;%PYTHONPATH%
echo PYTHONPATH = %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 flag so we don't initialize dccsi environment twice
SET O3DE_ENV_PY_INIT=1 SET O3DE_ENV_PY_INIT=1

@ -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% 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) 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 _____________________________________________________________________ echo _____________________________________________________________________
echo. echo.
@ -55,8 +53,6 @@ echo WING_PROJ = %WING_PROJ%
:: add to the PATH :: add to the PATH
SET PATH=%WINGHOME%;%PATH% SET PATH=%WINGHOME%;%PATH%
::ENDLOCAL
:: Set flag so we don't initialize dccsi environment twice :: Set flag so we don't initialize dccsi environment twice
SET DCCSI_ENV_WINGIDE_INIT=1 SET DCCSI_ENV_WINGIDE_INIT=1
GOTO END_OF_FILE GOTO END_OF_FILE

@ -73,9 +73,6 @@ echo DCCSI_PY_BASE = %DCCSI_PY_BASE%
set DCCSI_PY_DEFAULT=%DCCSI_PY_BASE% set DCCSI_PY_DEFAULT=%DCCSI_PY_BASE%
echo DCCSI_PY_DEFAULT = %DCCSI_PY_DEFAULT% 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. echo.
:: Change to root dir :: Change to root dir

@ -19,17 +19,16 @@ IF "%O3DE_USER_ENV_INIT%"=="1" GOTO :END_OF_FILE
cd %~dp0 cd %~dp0
PUSHD %~dp0 PUSHD %~dp0
SETLOCAL ENABLEDELAYEDEXPANSION
SET O3DE_DEV=C:\Depot\o3de-engine SET O3DE_DEV=C:\Depot\o3de-engine
::SET OCIO_APPS=C:\Depot\o3de-engine\Tools\ColorGrading\ocio\build\src\apps ::SET OCIO_APPS=C:\Depot\o3de-engine\Tools\ColorGrading\ocio\build\src\apps
SET TAG_LY_BUILD_PATH=build SET TAG_LY_BUILD_PATH=build
SET DCCSI_GDEBUG=True SET DCCSI_GDEBUG=True
SET DCCSI_DEV_MODE=True SET DCCSI_DEV_MODE=True
SET WING_PROJ=%O3DE_PROJECT_PATH%\.solutions\.wing\o3de_color_grading_%DCCSI_WING_VERSION_MAJOR%x.wpr :: set the your user name here for windows path
SET TAG_USERNAME=< not set >
::ENDLOCAL SET DCCSI_PY_REV=rev1
SET DCCSI_PY_PLATFORM=windows
:: Set flag so we don't initialize dccsi environment twice :: Set flag so we don't initialize dccsi environment twice
SET O3DE_USER_ENV_INIT=1 SET O3DE_USER_ENV_INIT=1

Loading…
Cancel
Save