color grading workflow (#3152)
* 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> Co-authored-by: Jonny Gallowy <~gallowj@amazon.com>
This commit is contained in:
+32780
File diff suppressed because it is too large
Load Diff
+32780
File diff suppressed because it is too large
Load Diff
+4922
File diff suppressed because it is too large
Load Diff
+32777
File diff suppressed because it is too large
Load Diff
+32777
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
.tmp
|
||||
@@ -0,0 +1,258 @@
|
||||
# coding:utf-8
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
#
|
||||
#
|
||||
"""O3DE/Atom Color Grading Python Package"""
|
||||
# -------------------------------------------------------------------------
|
||||
import sys
|
||||
import os
|
||||
import site
|
||||
import inspect
|
||||
import logging as _logging
|
||||
import pathlib
|
||||
from pathlib import Path
|
||||
import math
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
__copyright__ = "Copyright 2021, Amazon"
|
||||
__credits__ = ["Jonny Galloway", "Ben Black"]
|
||||
__license__ = "EULA"
|
||||
__version__ = "0.0.1"
|
||||
__status__ = "Prototype"
|
||||
|
||||
__all__ = ['from_3dl_to_azasset',
|
||||
'capture_displaymapperpassthrough',
|
||||
'exr_to_3dl_azasset',
|
||||
'initialize',
|
||||
'lut_compositor',
|
||||
'lut_helper',
|
||||
'env_bool',
|
||||
'makedirs',
|
||||
'initialize_logger'
|
||||
'inv_shaper_transform',
|
||||
'shaper_transform',
|
||||
'get_uv_coord',
|
||||
'clamp',
|
||||
'log2',
|
||||
'is_power_of_two']
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
_MODULE_PATH = Path(os.path.abspath(__file__))
|
||||
site.addsitedir(_MODULE_PATH.parent.absolute())
|
||||
|
||||
_PACKAGENAME = 'ColorGrading'
|
||||
_MODULEENAME = 'ColorGrading.init'
|
||||
|
||||
# project cache log dir path
|
||||
DCCSI_LOG_PATH = Path(_MODULE_PATH.parent.absolute(), '.tmp', 'logs')
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -- envar util ----------------------------------------------------------
|
||||
def env_bool(envar, default=False):
|
||||
"""cast a env bool to a python bool"""
|
||||
envar_test = os.getenv(envar, default)
|
||||
# check 'False', 'false', and '0' since all are non-empty
|
||||
# env comes back as string and normally coerced to True.
|
||||
if envar_test in ('True', 'true', '1'):
|
||||
return True
|
||||
elif envar_test in ('False', 'false', '0'):
|
||||
return False
|
||||
else:
|
||||
return envar_test
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# 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))
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
FRMT_LOG_LONG = "[%(name)s][%(levelname)s] >> %(message)s (%(asctime)s; %(filename)s:%(lineno)d)"
|
||||
|
||||
def initialize_logger(name,
|
||||
log_to_file=False,
|
||||
default_log_level=_logging.NOTSET):
|
||||
"""Start a azpy logger"""
|
||||
_logger = _logging.getLogger(name)
|
||||
_logger.propagate = False
|
||||
if not _logger.handlers:
|
||||
|
||||
# default log level
|
||||
_log_level = int(os.getenv('DCCSI_LOGLEVEL', default_log_level))
|
||||
|
||||
if DCCSI_GDEBUG:
|
||||
_log_level = int(10) # force when debugging
|
||||
|
||||
if _log_level:
|
||||
ch = _logging.StreamHandler(sys.stdout)
|
||||
ch.setLevel(_log_level)
|
||||
formatter = _logging.Formatter(FRMT_LOG_LONG)
|
||||
ch.setFormatter(formatter)
|
||||
_logger.addHandler(ch)
|
||||
_logger.setLevel(_log_level)
|
||||
else:
|
||||
_logger.addHandler(_logging.NullHandler())
|
||||
|
||||
_logger.debug('_log_level: {}'.format(_log_level))
|
||||
|
||||
# optionally add the log file handler (off by default)
|
||||
if log_to_file:
|
||||
_logger.info('DCCSI_LOG_PATH: {}'.format(DCCSI_LOG_PATH))
|
||||
try:
|
||||
# exist_ok, isn't available in py2.7 pathlib
|
||||
# because it doesn't exist for os.makedirs
|
||||
# pathlib2 backport used instead (see above)
|
||||
if sys.version_info.major >= 3:
|
||||
DCCSI_LOG_PATH.mkdir(parents=True, exist_ok=True)
|
||||
else:
|
||||
makedirs(str(DCCSI_LOG_PATH.resolve())) # py2.7
|
||||
except FileExistsError:
|
||||
# except FileExistsError: doesn't exist in py2.7
|
||||
_logger.debug("Folder is already there")
|
||||
else:
|
||||
_logger.debug("Folder was created")
|
||||
|
||||
_log_filepath = Path(DCCSI_LOG_PATH, '{}.log'.format(name))
|
||||
try:
|
||||
_log_filepath.touch(mode=0o666, exist_ok=True)
|
||||
except FileExistsError:
|
||||
_logger.debug("Log file is already there: {}".format(_log_filepath))
|
||||
else:
|
||||
_logger.debug("Log file was created: {}".format(_log_filepath))
|
||||
|
||||
if _log_filepath.exists():
|
||||
file_formatter = _logging.Formatter(FRMT_LOG_LONG)
|
||||
file_handler = _logging.FileHandler(str(_log_filepath))
|
||||
file_handler.setLevel(_logging.DEBUG)
|
||||
file_handler.setFormatter(file_formatter)
|
||||
_logger.addHandler(file_handler)
|
||||
|
||||
return _logger
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# _ROOT_LOGGER = _logging.getLogger() # only use this if debugging
|
||||
# https://stackoverflow.com/questions/56733085/how-to-know-the-current-file-path-after-being-frozen-into-an-executable-using-cx/56748839
|
||||
#os.chdir(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))))
|
||||
# -------------------------------------------------------------------------
|
||||
if DCCSI_GDEBUG:
|
||||
DCCSI_LOGLEVEL = int(10)
|
||||
|
||||
# set up logger with both console and file _logging
|
||||
if DCCSI_GDEBUG:
|
||||
_LOGGER = initialize_logger(_MODULEENAME, log_to_file=True)
|
||||
else:
|
||||
_LOGGER = initialize_logger(_MODULEENAME, log_to_file=False)
|
||||
|
||||
_LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME}))
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
def makedirs(folder, *args, **kwargs):
|
||||
"""a makedirs for py2.7 support"""
|
||||
try:
|
||||
return os.makedirs(folder, exist_ok=True, *args, **kwargs)
|
||||
except TypeError:
|
||||
# Unexpected arguments encountered
|
||||
pass
|
||||
try:
|
||||
# Should work is TypeError was caused by exist_ok, eg., Py2
|
||||
return os.makedirs(folder, *args, **kwargs)
|
||||
except OSError as e:
|
||||
if e.errno != errno.EEXIST:
|
||||
raise
|
||||
|
||||
if os.path.isfile(folder):
|
||||
# folder is a file, raise OSError just like os.makedirs() in Py3
|
||||
raise
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
class FileExistsError(Exception):
|
||||
"""Implements a stand-in Exception for py2.7"""
|
||||
def __init__(self, message, errors):
|
||||
|
||||
# Call the base class constructor with the parameters it needs
|
||||
super(FileExistsError, self).__init__(message)
|
||||
|
||||
# Now for your custom code...
|
||||
self.errors = errors
|
||||
|
||||
if sys.version_info.major < 3:
|
||||
FileExistsError = FileExistsError
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
# commonly reused utilities
|
||||
AZASSET_LUT = """\
|
||||
{
|
||||
"Type": "JsonSerialization",
|
||||
"Version": 1,
|
||||
"ClassName": "LookupTableAsset",
|
||||
"ClassData": {
|
||||
"Name": "LookupTable",
|
||||
"Intervals": [%s],
|
||||
"Values": [%s]
|
||||
}
|
||||
}"""
|
||||
|
||||
FLOAT_EPSILON = sys.float_info.epsilon
|
||||
|
||||
# pow(f, e) won't work if f is negative, or may cause inf / NAN.
|
||||
def no_nan_pow(base, power):
|
||||
return pow(max(abs(base), (FLOAT_EPSILON, FLOAT_EPSILON, FLOAT_EPSILON)), power)
|
||||
|
||||
# Transform from high dynamic range to normalized
|
||||
def inv_shaper_transform(bias, scale, v):
|
||||
return pow(2.0, (v - bias) / scale)
|
||||
|
||||
# Transform from normalized range to high dynamic range
|
||||
def shaper_transform(bias, scale, v, clip_threshold=FLOAT_EPSILON):
|
||||
if v > 0.0:
|
||||
return math.log(v, 2.0) * scale + bias
|
||||
|
||||
# this is probably not correct, clamps, avoids a math domain error
|
||||
elif v <= 0.0:
|
||||
_LOGGER.debug(f'Clipping a value: bias={bias}, scale={scale}, v={v}')
|
||||
return math.log(clip_threshold, 2.0) * scale + bias
|
||||
|
||||
def get_uv_coord(size, r, g, b):
|
||||
u = g * size + r
|
||||
v = b
|
||||
return (u, v)
|
||||
|
||||
def clamp(v):
|
||||
return max(0.0, min(1.0, v))
|
||||
|
||||
def log2(x):
|
||||
return (math.log10(x) /
|
||||
math.log10(2))
|
||||
|
||||
def is_power_of_two(n):
|
||||
return (math.ceil(log2(n)) == math.floor(log2(n)))
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Main Code Block, runs this script as main (testing)
|
||||
# -------------------------------------------------------------------------
|
||||
if __name__ == '__main__':
|
||||
|
||||
del _LOGGER
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
# coding:utf-8
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
#
|
||||
#
|
||||
"""Frame capture of the Displaymapper Passthrough (outputs .dds image)"""
|
||||
# ------------------------------------------------------------------------
|
||||
import logging as _logging
|
||||
from env_bool import env_bool
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
_MODULENAME = 'ColorGrading.capture_displaymapperpassthrough'
|
||||
|
||||
import ColorGrading.initialize
|
||||
ColorGrading.initialize.start()
|
||||
|
||||
_LOGGER = _logging.getLogger(_MODULENAME)
|
||||
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
import azlmbr.bus
|
||||
import azlmbr.atom
|
||||
|
||||
default_passtree = ["Root",
|
||||
"MainPipeline_0",
|
||||
"MainPipeline",
|
||||
"PostProcessPass",
|
||||
"LightAdaptation",
|
||||
"DisplayMapperPass",
|
||||
"DisplayMapperPassthrough"]
|
||||
|
||||
default_path = "FrameCapture\DisplayMapperPassthrough.dds"
|
||||
|
||||
# To Do: we should try to set display mapper to passthrough,
|
||||
# then back after capture?
|
||||
|
||||
# To Do: we can wrap this, to call from a PySide2 GUI
|
||||
|
||||
def capture(command="CapturePassAttachment",
|
||||
passtree=default_passtree,
|
||||
pass_type="Output",
|
||||
output_path=default_path):
|
||||
azlmbr.atom.FrameCaptureRequestBus(azlmbr.bus.Broadcast,
|
||||
command,
|
||||
passtree,
|
||||
pass_type,
|
||||
output_path, 1)
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Main Code Block, runs this script as main
|
||||
# -------------------------------------------------------------------------
|
||||
if __name__ == '__main__':
|
||||
capture()
|
||||
@@ -0,0 +1,120 @@
|
||||
# coding:utf-8
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
#
|
||||
#
|
||||
"""
|
||||
input: a shaped .exr representing a LUT (for instance coming out of photoshop)
|
||||
output: a inverse shaped LUT as .exr
|
||||
^ as a .3DL (normalized lut file type)
|
||||
^ as a .azasset (for o3de engine)
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import argparse
|
||||
import math
|
||||
import site
|
||||
import pathlib
|
||||
from pathlib import Path
|
||||
import logging as _logging
|
||||
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)
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
from ColorGrading.from_3dl_to_azasset import write_azasset
|
||||
|
||||
from ColorGrading import get_uv_coord
|
||||
|
||||
def generate_lut_values(image_spec, image_buffer):
|
||||
lut_size = image_spec.height
|
||||
|
||||
lut_intervals = []
|
||||
lut_values = []
|
||||
|
||||
# First line contains the vertex intervals
|
||||
dv = 1023.0 / float(lut_size-1)
|
||||
for i in range(lut_size):
|
||||
lut_intervals.append(np.uint16(dv * i))
|
||||
# Texels are in R G B per line with indices increasing first with blue, then green, and then red.
|
||||
for r in range(lut_size):
|
||||
for g in range(lut_size):
|
||||
for b in range(lut_size):
|
||||
uv = get_uv_coord(lut_size, r, g, b)
|
||||
px = np.array(image_buffer.getpixel(uv[0], uv[1]), dtype='f')
|
||||
px = np.clip(px, 0.0, 1.0)
|
||||
px = np.uint16(px * 4095)
|
||||
lut_values.append(px)
|
||||
|
||||
return lut_intervals, lut_values
|
||||
|
||||
# To Do: add some input file validation
|
||||
# If the input file doesn't exist, you'll get a LUT with res of 0 x 0 and result in a math error
|
||||
#Resolution is 0 x 0
|
||||
#writing C:\Depot\o3de-engine\Gems\AtomLyIntegration\CommonFeatures\Tools\ColorGrading\TestData\Nuke\HDR\Nuke_Post_grade_LUT.3dl...
|
||||
#Traceback (most recent call last):
|
||||
#File "..\..\Editor\Scripts\ColorGrading\exr_to_3dl_azasset.py", line 103, in <module>
|
||||
#dv = 1023.0 / float(lutSize)
|
||||
# ZeroDivisionError: float division by zero
|
||||
|
||||
def write_3DL(file_path, lut_size, lut_intervals, lut_values):
|
||||
lut_file_path = f'{file_path}.3dl'
|
||||
_LOGGER.info(f"Writing {lut_file_path}...")
|
||||
lut_file = open(lut_file_path, 'w')
|
||||
for i in range(lut_size):
|
||||
lut_file.write(f"{lut_intervals[i]} ")
|
||||
lut_file.write("\n")
|
||||
for px in lut_values:
|
||||
lut_file.write(f"{px[0]} {px[1]} {px[2]}\n")
|
||||
lut_file.close()
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Main Code Block, runs this script as main (testing)
|
||||
# -------------------------------------------------------------------------
|
||||
if __name__ == '__main__':
|
||||
"""Run this file as main"""
|
||||
|
||||
parser=argparse.ArgumentParser()
|
||||
parser.add_argument('--i', type=str, required=True, help='input file')
|
||||
parser.add_argument('--o', type=str, required=True, help='output file')
|
||||
args=parser.parse_args()
|
||||
|
||||
# Read input image
|
||||
# image_buffer = oiio.ImageBuf("linear_lut.exr")
|
||||
image_buffer=oiio.ImageBuf(args.i)
|
||||
image_spec=image_buffer.spec()
|
||||
_LOGGER.info(f"Resolution is, x: {image_buffer.spec().width} and y: {image_buffer.spec().height}")
|
||||
|
||||
if image_spec.width != image_spec.height * image_spec.height:
|
||||
_LOGGER.info(f"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)
|
||||
|
||||
lut_intervals, lut_values = generate_lut_values(image_spec, image_buffer)
|
||||
|
||||
write_3DL(args.o, image_spec.height, lut_intervals, lut_values)
|
||||
write_azasset(args.o, image_spec.height, lut_intervals, lut_values)
|
||||
|
||||
# example from command line
|
||||
# python % DCCSI_COLORGRADING_SCRIPTS %\lut_helper.py - -i C: \Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_32_LUT.exr - -op pre - grading - -shaper Log2 - 48nits - -o C: \Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-48nits_32_LUT.exr
|
||||
@@ -0,0 +1,114 @@
|
||||
# coding:utf-8
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
#
|
||||
#
|
||||
"""Takes a 3dl file and encodes it into a .azasset file that can be read by the AssetProcessor"""
|
||||
# ------------------------------------------------------------------------
|
||||
import json
|
||||
import sys, getopt
|
||||
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)
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
from ColorGrading import AZASSET_LUT
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
def find_first_line(alist):
|
||||
for lno, line in enumerate(alist):
|
||||
if line[0].isdigit(): # skip non-number metadata
|
||||
return lno
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
def write_azasset(file_path, lut_intervals, lut_values, azasset_json=AZASSET_LUT):
|
||||
values_str = ''
|
||||
for idx, px in enumerate(lut_values):
|
||||
values_str += f"{px[0]}, {px[1]}, {px[2]}"
|
||||
if idx < (len(lut_values) - 1):
|
||||
values_str += ",\n"
|
||||
|
||||
intervals_str = ', '.join(map(str, lut_intervals))
|
||||
|
||||
azasset_json = azasset_json % (intervals_str, values_str)
|
||||
|
||||
asset_file_path = f"{file_path}.azasset"
|
||||
_LOGGER.info(f"Writting {asset_file_path}...")
|
||||
asset_file = open(asset_file_path, 'w')
|
||||
asset_file.write(azasset_json)
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
def convert_3dl_to_azasset(input_file, output_file):
|
||||
lut_intervals = []
|
||||
lut_values = []
|
||||
with open(input_file) as lut_file:
|
||||
alist = [line.rstrip().lstrip() for line in lut_file]
|
||||
intervals_idx = find_first_line(alist)
|
||||
|
||||
lut_intervals = alist[intervals_idx].split(" ")
|
||||
|
||||
lut_values_range = range(intervals_idx + 1, len(alist))
|
||||
for ln in lut_values_range:
|
||||
values = alist[ln].split(" ")
|
||||
if values is None or len(values) < 3:
|
||||
continue
|
||||
lut_values.append(values)
|
||||
|
||||
write_azasset(output_file, lut_intervals, lut_values)
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Main Code Block, runs this script as main (testing)
|
||||
# -------------------------------------------------------------------------
|
||||
if __name__ == '__main__':
|
||||
"""Run this file as main"""
|
||||
input_file = ''
|
||||
output_file = ''
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:],"hi:o:",["ifile=","ofile="])
|
||||
except getopt.GetoptError:
|
||||
_LOGGER.info('test.py -i <input_file> -o <output_file>')
|
||||
sys.exit(2)
|
||||
for opt, arg in opts:
|
||||
_LOGGER.info(f"opt {opt} arg {arg}")
|
||||
if opt == '-h':
|
||||
_LOGGER.info('test.py -i <input_file> -o <output_file>')
|
||||
sys.exit()
|
||||
elif opt in ("-i", "--ifile"):
|
||||
input_file = arg
|
||||
elif opt in ("-o", "--ofile"):
|
||||
output_file = arg
|
||||
_LOGGER.info(f'Input file is "{input_file}"')
|
||||
_LOGGER.info(f'Output file is "{output_file}"')
|
||||
if input_file == '' or output_file == '':
|
||||
_LOGGER.info('test.py -i <input_file> -o <output_file>')
|
||||
else:
|
||||
convert_3dl_to_azasset(input_file, output_file)
|
||||
@@ -0,0 +1,123 @@
|
||||
# coding:utf-8
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
#
|
||||
#
|
||||
|
||||
# standard imports
|
||||
import sys
|
||||
import os
|
||||
import pathlib
|
||||
import site
|
||||
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']
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
_PACKAGENAME = 'ColorGrading'
|
||||
_MODULENAME = 'ColorGrading.initialize'
|
||||
|
||||
if DCCSI_GDEBUG:
|
||||
DCCSI_LOGLEVEL = int(10)
|
||||
|
||||
# set up logger with both console and file _logging
|
||||
if DCCSI_GDEBUG:
|
||||
_LOGGER = initialize_logger(_PACKAGENAME, log_to_file=True, default_log_level=DCCSI_LOGLEVEL)
|
||||
else:
|
||||
_LOGGER = initialize_logger(_PACKAGENAME, log_to_file=False, default_log_level=DCCSI_LOGLEVEL)
|
||||
|
||||
_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?)')
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
def start():
|
||||
"""set up access to OpenImageIO, within o3de or without"""
|
||||
# ------------------------------------------------------------------------
|
||||
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)
|
||||
|
||||
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
|
||||
|
||||
try:
|
||||
_O3DE_DEV = Path(os.getenv('O3DE_DEV'))
|
||||
_O3DE_DEV = _O3DE_DEV.resolve()
|
||||
os.environ['O3DE_DEV'] = pathlib.PureWindowsPath(_O3DE_DEV).as_posix()
|
||||
_LOGGER.debug(f'O3DE_DEV is: {_O3DE_DEV}')
|
||||
except EnvironmentError as e:
|
||||
_LOGGER.error('O3DE engineroot not set or found')
|
||||
raise e
|
||||
|
||||
try:
|
||||
_TAG_LY_BUILD_PATH = os.getenv('TAG_LY_BUILD_PATH', 'build')
|
||||
_DEFAULT_BIN_PATH = Path(str(_O3DE_DEV), _TAG_LY_BUILD_PATH, 'bin', 'profile')
|
||||
_O3DE_BIN_PATH = Path(os.getenv('O3DE_BIN_PATH', _DEFAULT_BIN_PATH))
|
||||
_O3DE_BIN_PATH = _O3DE_BIN_PATH.resolve()
|
||||
os.environ['O3DE_BIN_PATH'] = pathlib.PureWindowsPath(_O3DE_BIN_PATH).as_posix()
|
||||
_LOGGER.debug(f'O3DE_BIN_PATH is: {_O3DE_BIN_PATH}')
|
||||
site.addsitedir(pathlib.PureWindowsPath(_O3DE_BIN_PATH).as_posix())
|
||||
except EnvironmentError as e:
|
||||
_LOGGER.error('O3DE bin folder not set or found')
|
||||
raise e
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
try:
|
||||
import OpenImageIO as OpenImageIO
|
||||
except ImportError as e:
|
||||
_LOGGER.error(f"invalid import: {e}")
|
||||
sys.exit(1)
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Main Code Block, runs this script as main (testing)
|
||||
# -------------------------------------------------------------------------
|
||||
if __name__ == '__main__':
|
||||
"""Run this file as main"""
|
||||
|
||||
start()
|
||||
@@ -0,0 +1,110 @@
|
||||
# coding:utf-8
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
#
|
||||
#
|
||||
# lut_compositor.py
|
||||
|
||||
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)
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
operations = {"composite": 0, "extract": 1}
|
||||
invalidOp = -1
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--i', type=str, required=True, help='input file')
|
||||
parser.add_argument('--l', type=str, required=False, help='LUT to composite with screenshot in \'composite\' mode')
|
||||
parser.add_argument('--op', type=str, required=True, help='operation. Should be \'composite\' or \'extract\'')
|
||||
parser.add_argument('--s', type=int, required=True, help='size of the LUT (i.e. 16)')
|
||||
parser.add_argument('--o', type=str, required=True, help='output file')
|
||||
args = parser.parse_args()
|
||||
|
||||
op = operations.get(args.op, invalidOp)
|
||||
if op == invalidOp:
|
||||
print("invalid operation")
|
||||
sys.exit(1)
|
||||
elif op == 0:
|
||||
if args.l is None:
|
||||
print("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)
|
||||
|
||||
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")
|
||||
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)
|
||||
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)
|
||||
@@ -0,0 +1,186 @@
|
||||
# coding:utf-8
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
#
|
||||
#
|
||||
# lut_helper.py
|
||||
|
||||
import sys
|
||||
import os
|
||||
import argparse
|
||||
import math
|
||||
import site
|
||||
import pathlib
|
||||
from pathlib import Path
|
||||
import logging as _logging
|
||||
import numpy as np
|
||||
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)
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
# Transform from high dynamic range to normalized
|
||||
from ColorGrading import inv_shaper_transform
|
||||
|
||||
# Transform from normalized range to high dynamic range
|
||||
from ColorGrading import shaper_transform
|
||||
|
||||
# utils
|
||||
from ColorGrading import get_uv_coord
|
||||
from ColorGrading import log2
|
||||
from ColorGrading import is_power_of_two
|
||||
|
||||
shaper_presets = {"Log2-48nits": (-6.5, 6.5),
|
||||
"Log2-1000nits": (-12.0, 10.0),
|
||||
"Log2-2000nits": (-12.0, 11.0),
|
||||
"Log2-4000nits": (-12.0, 12.0)}
|
||||
|
||||
def transform_exr(image_buffer, out_image_buffer, op, out_path, write_exr):
|
||||
# Set the destination image pixels by applying the shaperfunction
|
||||
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)
|
||||
# _LOGGER.debug(f'src_pixel is: {src_pixel}')
|
||||
if op == 0:
|
||||
dst_pixel = (inv_shaper_transform(bias, scale, src_pixel[0]),
|
||||
inv_shaper_transform(bias, scale, src_pixel[1]),
|
||||
inv_shaper_transform(bias, scale, src_pixel[2]))
|
||||
out_image_buffer.setpixel(x, y, dst_pixel)
|
||||
elif op == 1:
|
||||
dst_pixel = (shaper_transform(bias, scale, src_pixel[0]),
|
||||
shaper_transform(bias, scale, src_pixel[1]),
|
||||
shaper_transform(bias, scale, src_pixel[2]))
|
||||
out_image_buffer.setpixel(x, y, dst_pixel)
|
||||
else:
|
||||
# Unspecified operation. Just write zeroes
|
||||
out_image_buffer.setpixel(x, y, 0.0, 0.0, 0.0)
|
||||
|
||||
if write_exr:
|
||||
_LOGGER.info(f"writing {out_path}.exr ...")
|
||||
out_image_buffer.write(out_path + '.exr', "float")
|
||||
|
||||
return out_image_buffer
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Main Code Block, runs this script as main (testing)
|
||||
# -------------------------------------------------------------------------
|
||||
if __name__ == '__main__':
|
||||
"""Run this file as main"""
|
||||
|
||||
operations = {"pre-grading": 0, "post-grading": 1}
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--i', type=str, required=True, help='input file')
|
||||
parser.add_argument('--shaper', type=str, required=True,
|
||||
help='shaper preset. Should be one of \'Log2-48nits\', \'Log2-1000nits\', \'Log2-2000nits\', \'Log2-4000nits\'')
|
||||
parser.add_argument('--op', type=str, required=True, help='operation. Should be \'pre-grading\' or \'post-grading\'')
|
||||
parser.add_argument('--o', type=str, required=True, help='output file')
|
||||
parser.add_argument('-e', dest='writeExr', action='store_true', help='output lut as exr file (float)')
|
||||
parser.add_argument('-l', dest='write3dl', action='store_true', help='output lut as .3dl file')
|
||||
parser.add_argument('-a', dest='writeAsset', action='store_true', help='write out lut as O3dE .azasset file')
|
||||
args = parser.parse_args()
|
||||
|
||||
# Check for valid shaper type
|
||||
invalid_shaper = (0, 0)
|
||||
invalid_op = -1
|
||||
|
||||
shaper_limits = shaper_presets.get(args.shaper, invalid_shaper)
|
||||
if shaper_limits == invalid_shaper:
|
||||
_LOGGER.error("invalid shaper")
|
||||
sys.exit(1)
|
||||
op = operations.get(args.op, invalid_op)
|
||||
if op == invalid_op:
|
||||
_LOGGER.error("invalid operation")
|
||||
sys.exit(1)
|
||||
|
||||
# input validation
|
||||
input_file = Path(args.i)
|
||||
if input_file.is_file():
|
||||
# file exists
|
||||
pass
|
||||
else:
|
||||
FILE_ERROR_MSG = f'File does not exist: {input_file}'
|
||||
_LOGGER.error(FILE_ERROR_MSG)
|
||||
#raise FileNotFoundError(FILE_ERROR_MSG)
|
||||
sys.exit(1)
|
||||
|
||||
# Read input image
|
||||
#buf = oiio.ImageBuf("linear_lut.exr")
|
||||
image_buffer = oiio.ImageBuf(args.i)
|
||||
image_spec = image_buffer.spec()
|
||||
|
||||
_LOGGER.info(f"Resolution is x:{image_spec.height}, y:{image_spec.width}")
|
||||
|
||||
if image_spec.height < 16:
|
||||
_LOGGER.info(f"invalid input file dimensions: x is {image_spec.height}. Expected LUT with height dimension >= 16 pixels")
|
||||
sys.exit(1)
|
||||
|
||||
if not is_power_of_two(image_buffer.spec().height):
|
||||
_LOGGER.info(f"invalid input file dimensions: {buf.spec().height}. Expected LUT dimensions power of 2: 16, 32, or 64 height")
|
||||
sys.exit(1)
|
||||
|
||||
elif image_spec.width != image_spec.height * image_spec.height:
|
||||
_LOGGER.info("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)
|
||||
|
||||
lut_size = image_spec.height
|
||||
|
||||
middle_grey = 0.18
|
||||
lower_stops = shaper_limits[0]
|
||||
upper_stops = shaper_limits[1]
|
||||
|
||||
middle_grey = math.log(middle_grey, 2.0)
|
||||
log_min = middle_grey + lower_stops
|
||||
log_max = middle_grey + upper_stops
|
||||
|
||||
scale = 1.0 / (log_max - log_min)
|
||||
bias = -scale * log_min
|
||||
|
||||
_LOGGER.info("Shaper: range in stops %.1f -> %.1f (linear: %.3f -> %.3f) logMin %.3f logMax %.3f scale %.3f bias %.3f\n" %
|
||||
(lower_stops, upper_stops, middle_grey * math.pow(2.0, lower_stops), middle_grey * math.pow(2.0, upper_stops),
|
||||
log_min, log_max, scale, bias))
|
||||
|
||||
buffer_name = Path(args.o).name
|
||||
|
||||
# Create a writing image
|
||||
out_image_spec = oiio.ImageSpec(image_buffer.spec().width, image_buffer.spec().height, 3, "float")
|
||||
out_image_buffer = oiio.ImageBuf(out_image_spec)
|
||||
|
||||
# write out the modified exr file
|
||||
write_exr = False
|
||||
if args.writeExr:
|
||||
write_exr = True
|
||||
out_image_buffer = transform_exr(image_buffer, out_image_buffer, op, args.o, write_exr)
|
||||
|
||||
from ColorGrading.exr_to_3dl_azasset import generate_lut_values
|
||||
lut_intervals, lut_values = generate_lut_values(image_spec, out_image_buffer)
|
||||
|
||||
if args.write3dl:
|
||||
from ColorGrading.exr_to_3dl_azasset import write_3DL
|
||||
write_3DL(args.o, lut_size, lut_intervals, lut_values)
|
||||
|
||||
if args.writeAsset:
|
||||
from ColorGrading import AZASSET_LUT
|
||||
from ColorGrading.from_3dl_to_azasset import write_azasset
|
||||
write_azasset(args.o, lut_intervals, lut_values, AZASSET_LUT)
|
||||
@@ -0,0 +1,60 @@
|
||||
# coding:utf-8
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
#
|
||||
#
|
||||
"""
|
||||
Boostraps O3DE editor access to the python scripts within Atom.Feature.Commmon
|
||||
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.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()
|
||||
# ------------------------------------------------------------------------
|
||||
@@ -0,0 +1 @@
|
||||
.solutions
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6c9f3506348d675c15d65e6f4a5cf1b773144cf5c8a2227c1f985806e6afe4b1
|
||||
size 1042
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a269460a16993fce1d1973bccf53bc7f88a66ba1bad7b444b258bcd7b26527f8
|
||||
size 3326
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:767ebd1863954ac04c16a68ec90c31c1ed15dfda26239dd0f0159fa279100661
|
||||
size 18642
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:05e1fb5ea519499012cfe11b4fa245396e6ae49e476fe7a5951b20bf28a367b1
|
||||
size 1063
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:52386c8753b282e5ff428819e79a5ad1675ad86cdf75c8402ea1ab41e630ac98
|
||||
size 3328
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b6d7bc8a85561d37aaf3f5ed6547ce939759cd00db96874bc9e6107c3ee12e23
|
||||
size 18421
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:937b4d3388f27947886f49cd935663142806bce38768b83c89b8765c03bbd67b
|
||||
size 1047
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0ce932c419c11ed2366cd94e27547f65d11abcd604e5262583a36e661d4ad41b
|
||||
size 3329
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8786dc9bcf1afe914fafaac63659e3d0fcdefa453c5bee153fa915094c0df132
|
||||
size 18604
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:155b3ba516d77fcfc9a77a7e96acbf450759d87ee7f042730d1d75b0f2628902
|
||||
size 1038
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ea718b119139cc8a55b944555ab0b0ad9d012a676c5e4c63bd338f26e8290a01
|
||||
size 3309
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:75340a9238177b5bd3b8f8a3d4864fc75a613ec29222ecf7c90bc5e3b4bc8416
|
||||
size 18349
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6305b5c0cedc945824906aa207bb8f182c811aee12a2f8ffd2ed870b2a60aa7b
|
||||
size 2758
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:85c037b1b8118c85ecf288c6ecd2e870b5c1595c486029cc9e7c3348fcd777d1
|
||||
size 3228
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e0612c6a43bec9d310da1dbfcba55f8e254e02af9fafca9201573e54dd24fa7f
|
||||
size 18289
|
||||
+230
@@ -0,0 +1,230 @@
|
||||
#! 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.2">
|
||||
<page id="Viewer.1"/>
|
||||
<page id="Viewer.2"/>
|
||||
</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 Nb1e9800 [stack 0]
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer1
|
||||
xpos -847
|
||||
ypos 135
|
||||
}
|
||||
push $Nb1e9800
|
||||
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 Nb1e9000 [stack 0]
|
||||
Transform {
|
||||
center {1024 778}
|
||||
name Transform_Position_LUT
|
||||
xpos -579
|
||||
ypos 3
|
||||
}
|
||||
set Nb1e8c00 [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 Nb18fc00 [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 Nb18f800 [stack 0]
|
||||
OCIOCDLTransform {
|
||||
saturation 1.23
|
||||
working_space scene_linear
|
||||
name INV_Log2_48_nits_Shaper_to_linear
|
||||
xpos -86
|
||||
ypos -83
|
||||
}
|
||||
set Nb18f400 [stack 0]
|
||||
Crop {
|
||||
box {0 0 1024 32}
|
||||
reformat true
|
||||
crop false
|
||||
name Crop1
|
||||
xpos -86
|
||||
ypos 32
|
||||
}
|
||||
set Nb18f000 [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
|
||||
in_colorspace scene_linear
|
||||
out_colorspace scene_linear
|
||||
name Write_RAW_LUT
|
||||
xpos 242
|
||||
ypos 20
|
||||
}
|
||||
Viewer {
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer7
|
||||
xpos 242
|
||||
ypos 135
|
||||
}
|
||||
push $Nb18f400
|
||||
Write {
|
||||
file C:/Depot/o3de/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Extreme_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 9
|
||||
name Write_Shot_Grade_Comp
|
||||
selected true
|
||||
xpos 353
|
||||
ypos -95
|
||||
}
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer8
|
||||
xpos 357
|
||||
ypos 135
|
||||
}
|
||||
push $Nb1e9000
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer2
|
||||
xpos -710
|
||||
ypos 137
|
||||
}
|
||||
push $Nb1e8c00
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer3
|
||||
xpos -579
|
||||
ypos 135
|
||||
}
|
||||
push $Nb18fc00
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer4
|
||||
xpos -413
|
||||
ypos 133
|
||||
}
|
||||
push $Nb18f800
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer5
|
||||
xpos -254
|
||||
ypos 133
|
||||
}
|
||||
push $Nb18f000
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer6
|
||||
xpos -86
|
||||
ypos 134
|
||||
}
|
||||
+232
@@ -0,0 +1,232 @@
|
||||
#! 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
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7ea4288b55725bfa89d7add69ea45b0ac9315cfffd6acfba66082f4d21c1ac1a
|
||||
size 31227624
|
||||
+32769
File diff suppressed because it is too large
Load Diff
+32780
File diff suppressed because it is too large
Load Diff
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ad9a024034bfc356f7c6fd4c19d617a7321306c68b7f824fb44b73ad57613244
|
||||
size 197689
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9ff499c054a259a3cd389b613382066f258287215f61da56115b3e958733dbe6
|
||||
size 31227639
|
||||
+225
@@ -0,0 +1,225 @@
|
||||
#! 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.7">
|
||||
<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_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 N16319800 [stack 0]
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer1
|
||||
xpos -846
|
||||
ypos 135
|
||||
}
|
||||
push $N16319800
|
||||
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 N16319000 [stack 0]
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer2
|
||||
xpos -710
|
||||
ypos 137
|
||||
}
|
||||
push $N16319000
|
||||
Transform {
|
||||
center {1024 778}
|
||||
name Transform_Position_LUT
|
||||
xpos -579
|
||||
ypos 3
|
||||
}
|
||||
set N16318c00 [stack 0]
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer3
|
||||
xpos -579
|
||||
ypos 135
|
||||
}
|
||||
push $N16318c00
|
||||
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 N16297c00 [stack 0]
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer4
|
||||
xpos -413
|
||||
ypos 128
|
||||
}
|
||||
push $N16297c00
|
||||
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 N16297800 [stack 0]
|
||||
Crop {
|
||||
box {0 0 1024 32}
|
||||
reformat true
|
||||
crop false
|
||||
name Crop1
|
||||
xpos -86
|
||||
ypos 32
|
||||
}
|
||||
set N16297400 [stack 0]
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer6
|
||||
xpos -86
|
||||
ypos 134
|
||||
}
|
||||
push $N16297800
|
||||
Write {
|
||||
file C:/Depot/o3de/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/Shot_post_test-grade.exr
|
||||
colorspace compositing_linear
|
||||
file_type exr
|
||||
write_ACES_compliant_EXR true
|
||||
datatype "32 bit float"
|
||||
first_part rgba
|
||||
version 11
|
||||
name Write_Shot_Grade_Comp
|
||||
xpos 353
|
||||
ypos -95
|
||||
}
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer8
|
||||
xpos 353
|
||||
ypos 135
|
||||
}
|
||||
push $N16297400
|
||||
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 11
|
||||
name Write_RAW_LUT
|
||||
xpos 242
|
||||
ypos 20
|
||||
}
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer7
|
||||
xpos 242
|
||||
ypos 135
|
||||
}
|
||||
push $N16297800
|
||||
Viewer {
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer5
|
||||
xpos -256
|
||||
ypos 130
|
||||
}
|
||||
+227
@@ -0,0 +1,227 @@
|
||||
#! 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
|
||||
}
|
||||
+32769
File diff suppressed because it is too large
Load Diff
+32780
File diff suppressed because it is too large
Load Diff
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c11862c33eb828f32df7dd1a7dd8843f7553379334553551aae0aaadb2100a01
|
||||
size 276701
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:20355376cea9da29e36086debf3d84a6453dcbd8c1616c3c57e5a6c0df0a9e0e
|
||||
size 15105796
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:da5a5fcf9eff8064f27f7f146db353fde7207fc36b10cfde95dc6b45941663bf
|
||||
size 5046039
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
#! 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="1864" h="1047" screen="0">
|
||||
<splitter orientation="1">
|
||||
<split size="40"/>
|
||||
<dock id="" hideTitles="1" activePageId="Toolbar.1">
|
||||
<page id="Toolbar.1"/>
|
||||
</dock>
|
||||
<split size="1201" stretch="1"/>
|
||||
<splitter orientation="2">
|
||||
<split size="590"/>
|
||||
<dock id="" activePageId="Viewer.1">
|
||||
<page id="Viewer.1"/>
|
||||
</dock>
|
||||
<split size="415"/>
|
||||
<dock id="" activePageId="DAG.1">
|
||||
<page id="DAG.1"/>
|
||||
<page id="Curve Editor.1"/>
|
||||
<page id="DopeSheet.1"/>
|
||||
</dock>
|
||||
</splitter>
|
||||
<split size="615"/>
|
||||
<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-engine/Gems/AtomLyIntegration/CommonFeatures/Tools/ColorGrading/TestData/Nuke/O3DE_HDR_Nuke_Color_Grading
|
||||
project_directory "\[python \{nuke.script_directory()\}]"
|
||||
label "This is a Nuke project template used to validate HDR / ACES color grading workflow in Nuke to generate 'Look Modification' (LMT) Luts for Oopen 3D Engine."
|
||||
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 Nuke
|
||||
workingSpaceLUT linear
|
||||
monitorLut sRGB
|
||||
monitorOutLUT rec709
|
||||
int8Lut sRGB
|
||||
int16Lut sRGB
|
||||
logLut Cineon
|
||||
floatLut linear
|
||||
}
|
||||
Viewer {
|
||||
inputs 0
|
||||
frame 1
|
||||
frame_range 1-100
|
||||
name Viewer1
|
||||
xpos -40
|
||||
ypos -9
|
||||
}
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
#! 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="107" y="-8" w="3732" h="2136" maximized="1" screen="0">
|
||||
<splitter orientation="1">
|
||||
<split size="40"/>
|
||||
<dock id="" hideTitles="1" activePageId="Toolbar.1">
|
||||
<page id="Toolbar.1"/>
|
||||
</dock>
|
||||
<split size="3069" stretch="1"/>
|
||||
<splitter orientation="2">
|
||||
<split size="1229"/>
|
||||
<dock id="" activePageId="Viewer.2">
|
||||
<page id="Viewer.2"/>
|
||||
<page id="Viewer.3"/>
|
||||
<page id="Viewer.1"/>
|
||||
</dock>
|
||||
<split size="865"/>
|
||||
<dock id="" activePageId="DAG.1">
|
||||
<page id="DAG.1"/>
|
||||
<page id="Curve Editor.1"/>
|
||||
<page id="DopeSheet.1"/>
|
||||
</dock>
|
||||
</splitter>
|
||||
<split size="615"/>
|
||||
<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-engine/Gems/AtomLyIntegration/CommonFeatures/Tools/ColorGrading/TestData/Nuke/O3DE_HDR_Nuke_Color_Grading
|
||||
project_directory C:/Depot/o3de-engine/Gems/AtomLyIntegration/CommonFeatures/Tools/ColorGrading/TestData/Nuke
|
||||
label "This is a Nuke project template used to validate HDR / ACES color grading workflow in Nuke to generate 'Look Modification' (LMT) Luts for Oopen 3D Engine."
|
||||
frame 16
|
||||
first_frame 16
|
||||
last_frame 32
|
||||
lock_range true
|
||||
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
|
||||
OCIOGPUSupport true
|
||||
OCIO_config aces_1.0.3
|
||||
defaultViewerLUT "OCIO LUTs"
|
||||
workingSpaceLUT scene_linear
|
||||
monitorLut ACES/sRGB
|
||||
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-engine/Gems/AtomLyIntegration/CommonFeatures/Tools/ColorGrading/LUTs/linear_lut_32.exr
|
||||
format "1024 32 0 0 1024 32 1 "
|
||||
origset true
|
||||
colorspace scene_linear
|
||||
name Read3
|
||||
xpos -1727
|
||||
ypos -81
|
||||
}
|
||||
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 OCIOFileTransform1
|
||||
xpos -1587
|
||||
ypos -45
|
||||
}
|
||||
Viewer {
|
||||
frame_range 16-32
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer3
|
||||
xpos -1586
|
||||
ypos 10
|
||||
}
|
||||
Read {
|
||||
inputs 0
|
||||
file_type exr
|
||||
file C:/Depot/o3de-engine/Gems/AtomLyIntegration/CommonFeatures/Tools/ColorGrading/TestData/Nuke/HDR/displaymapperpassthrough.exr
|
||||
format "1167 1618 0 0 1167 1618 1 "
|
||||
origset true
|
||||
colorspace scene_linear
|
||||
name Read1
|
||||
xpos -1719
|
||||
ypos -421
|
||||
}
|
||||
Read {
|
||||
inputs 0
|
||||
file_type exr
|
||||
file C:/Depot/o3de-engine/Gems/AtomLyIntegration/CommonFeatures/Tools/ColorGrading/LUTs/linear_lut_32.exr
|
||||
format "1024 32 0 0 1024 32 1 "
|
||||
origset true
|
||||
colorspace "Utility - Log2 48 nits Shaper - AP1"
|
||||
name Read2
|
||||
xpos -1720
|
||||
ypos -311
|
||||
}
|
||||
Merge2 {
|
||||
inputs 2
|
||||
Achannels {rgba.red rgba.green rgba.blue -rgba.alpha}
|
||||
Bchannels {rgba.red rgba.green rgba.blue -rgba.alpha}
|
||||
output {rgba.red rgba.green rgba.blue -rgba.alpha}
|
||||
also_merge all
|
||||
mix 0
|
||||
name Merge1
|
||||
selected true
|
||||
xpos -1495
|
||||
ypos -340
|
||||
}
|
||||
Viewer {
|
||||
frame 16
|
||||
frame_range 16-32
|
||||
viewerProcess "sRGB (ACES)"
|
||||
name Viewer2
|
||||
xpos -1495
|
||||
ypos -272
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c0276e1d329cda3514f46a55fd1d3ce90fce617814198ab69d234f2c58c15882
|
||||
size 98742272
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ce91088eaa54afab608bfcea6ab4009cbb3027cb83c76710a46470144e7d799d
|
||||
size 98638424
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:facad074b84df87a0ab4baaf2bd95552e6eca3fed79a56875c9815f32d885b8a
|
||||
size 11949493
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cfdfefb553fffd1a799a62e205fe13ebd88f3327d97d20cb900af6465ecc2dae
|
||||
size 61384
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:dfced5571e7d681cc565a9be07fa199ecfee0d70ad4104ccb47c75a525737445
|
||||
size 96548
|
||||
+4922
File diff suppressed because it is too large
Load Diff
+32769
File diff suppressed because it is too large
Load Diff
+32777
File diff suppressed because it is too large
Load Diff
+32769
File diff suppressed because it is too large
Load Diff
+32777
File diff suppressed because it is too large
Load Diff
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bd3fe7e7f016c1a3b2c3e8db5fbd23efbc8d8717c01fac4cf39b1ae7b3ae9325
|
||||
size 41559412
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:facad074b84df87a0ab4baaf2bd95552e6eca3fed79a56875c9815f32d885b8a
|
||||
size 11949493
|
||||
@@ -0,0 +1 @@
|
||||
User_Env.bat
|
||||
@@ -0,0 +1,52 @@
|
||||
@echo off
|
||||
|
||||
REM
|
||||
REM Copyright (c) Contributors to the Open 3D Engine Project
|
||||
REM
|
||||
REM SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
REM For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
REM
|
||||
REM
|
||||
|
||||
:: Set up and run O3DE Python CMD prompt
|
||||
:: Sets up the DccScriptingInterface_Env,
|
||||
:: Puts you in the CMD within the dev environment
|
||||
|
||||
:: Set up window
|
||||
TITLE O3DE Color Grading CMD
|
||||
:: Use obvious color to prevent confusion (Grey with Yellow Text)
|
||||
COLOR 8E
|
||||
|
||||
%~d0
|
||||
cd %~dp0
|
||||
PUSHD %~dp0
|
||||
|
||||
SETLOCAL ENABLEDELAYEDEXPANSION
|
||||
|
||||
:: if the user has set up a custom env call it
|
||||
IF EXIST "%~dp0User_env.bat" CALL %~dp0User_env.bat
|
||||
|
||||
:: Initialize env
|
||||
CALL %~dp0\Env_Core.bat
|
||||
CALL %~dp0\Env_Python.bat
|
||||
CALL %~dp0\Env_Tools.bat
|
||||
|
||||
echo.
|
||||
echo _____________________________________________________________________
|
||||
echo.
|
||||
echo ~ O3DE Color Grading Python CMD ...
|
||||
echo _____________________________________________________________________
|
||||
echo.
|
||||
|
||||
:: Change to root dir
|
||||
CD /D ..
|
||||
|
||||
:: Create command prompt with environment
|
||||
CALL %windir%\system32\cmd.exe
|
||||
|
||||
ENDLOCAL
|
||||
|
||||
:: Return to starting directory
|
||||
POPD
|
||||
|
||||
:END_OF_FILE
|
||||
@@ -0,0 +1,129 @@
|
||||
@echo off
|
||||
|
||||
REM
|
||||
REM Copyright (c) Contributors to the Open 3D Engine Project
|
||||
REM
|
||||
REM SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
REM For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
REM
|
||||
REM
|
||||
|
||||
:: Sets up environment for O3DE DCC tools and code access
|
||||
|
||||
:: Set up window
|
||||
TITLE O3DE Color Grading Env Core
|
||||
:: Use obvious color to prevent confusion (Grey with Yellow Text)
|
||||
COLOR 8E
|
||||
|
||||
:: Skip initialization if already completed
|
||||
IF "%O3DE_ENV_INIT%"=="1" GOTO :END_OF_FILE
|
||||
|
||||
:: Store current dir
|
||||
%~d0
|
||||
cd %~dp0
|
||||
PUSHD %~dp0
|
||||
|
||||
::SETLOCAL ENABLEDELAYEDEXPANSION
|
||||
|
||||
echo.
|
||||
echo _____________________________________________________________________
|
||||
echo.
|
||||
echo ~ O3DE Color Grading Core Env ...
|
||||
echo _____________________________________________________________________
|
||||
echo.
|
||||
|
||||
IF "%CMD_LAUNCHERS%"=="" (set CMD_LAUNCHERS=%~dp0)
|
||||
echo CMD_LAUNCHERS = %CMD_LAUNCHERS%
|
||||
|
||||
:: add to the PATH
|
||||
SET PATH=%CMD_LAUNCHERS%;%PATH%
|
||||
|
||||
:: Constant Vars (Global)
|
||||
:: global debug flag (propogates)
|
||||
:: The intent here is to set and globally enter a debug mode
|
||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=false)
|
||||
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
||||
:: initiates earliest debugger connection
|
||||
:: we support attaching to WingIDE... PyCharm and VScode in the future
|
||||
IF "%DCCSI_DEV_MODE%"=="" (set DCCSI_DEV_MODE=false)
|
||||
echo DCCSI_DEV_MODE = %DCCSI_DEV_MODE%
|
||||
:: sets debugger, options: WING, PYCHARM
|
||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
||||
echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
||||
:: Default level logger will handle
|
||||
:: Override this to control the setting
|
||||
:: CRITICAL:50
|
||||
:: ERROR:40
|
||||
:: WARNING:30
|
||||
:: INFO:20
|
||||
:: DEBUG:10
|
||||
:: NOTSET:0
|
||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=20)
|
||||
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
||||
|
||||
:: This maps up to the \Dev folder
|
||||
IF "%DEV_REL_PATH%"=="" (set DEV_REL_PATH=..\..\..\..\..\..)
|
||||
echo DEV_REL_PATH = %DEV_REL_PATH%
|
||||
|
||||
:: You can define the project name
|
||||
IF "%O3DE_PROJECT_NAME%"=="" (
|
||||
for %%a in (%CD%..\..) do set O3DE_PROJECT_NAME=%%~na
|
||||
)
|
||||
echo O3DE_PROJECT_NAME = %O3DE_PROJECT_NAME%
|
||||
|
||||
CD /D ..\
|
||||
IF "%O3DE_PROJECT_PATH%"=="" (set O3DE_PROJECT_PATH=%CD%)
|
||||
echo O3DE_PROJECT_PATH = %O3DE_PROJECT_PATH%
|
||||
|
||||
IF "%ABS_PATH%"=="" (set ABS_PATH=%CD%)
|
||||
echo ABS_PATH = %ABS_PATH%
|
||||
|
||||
:: Save current directory and change to target directory
|
||||
pushd %ABS_PATH%
|
||||
|
||||
:: Change to root Lumberyard dev dir
|
||||
CD /d %DEV_REL_PATH%
|
||||
IF "%O3DE_DEV%"=="" (set O3DE_DEV=%CD%)
|
||||
echo O3DE_DEV = %O3DE_DEV%
|
||||
:: Restore original directory
|
||||
popd
|
||||
|
||||
:: dcc scripting interface gem path
|
||||
:: currently know relative path to this gem
|
||||
set DCCSIG_PATH=%O3DE_DEV%\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface
|
||||
echo DCCSIG_PATH = %DCCSIG_PATH%
|
||||
|
||||
:: Change to DCCsi root dir
|
||||
CD /D %DCCSIG_PATH%
|
||||
|
||||
:: per-dcc sdk path
|
||||
set DCCSI_SDK_PATH=%DCCSIG_PATH%\SDK
|
||||
echo DCCSI_SDK_PATH = %DCCSI_SDK_PATH%
|
||||
|
||||
:: temp log location specific to this gem
|
||||
set DCCSI_LOG_PATH=%DCCSIG_PATH%\.temp\logs
|
||||
echo DCCSI_LOG_PATH = %DCCSI_LOG_PATH%
|
||||
|
||||
:: O3DE build path
|
||||
IF "%TAG_O3DE_BUILD_PATH%"=="" (set TAG_O3DE_BUILD_PATH=build)
|
||||
echo TAG_O3DE_BUILD_PATH = %TAG_O3DE_BUILD_PATH%
|
||||
|
||||
IF "%O3DE_BUILD_PATH%"=="" (set O3DE_BUILD_PATH=%O3DE_DEV%\%TAG_O3DE_BUILD_PATH%)
|
||||
echo O3DE_BUILD_PATH = %O3DE_BUILD_PATH%
|
||||
|
||||
IF "%O3DE_BIN_PATH%"=="" (set O3DE_BIN_PATH=%O3DE_BUILD_PATH%\bin\profile)
|
||||
echo O3DE_BIN_PATH = %O3DE_BIN_PATH%
|
||||
|
||||
:: add to the PATH
|
||||
SET PATH=%O3DE_BUILD_PATH%;%DCCSIG_PATH%;%DCCSI_AZPY_PATH%;%PATH%
|
||||
|
||||
::ENDLOCAL
|
||||
|
||||
:: Set flag so we don't initialize dccsi environment twice
|
||||
SET O3DE_ENV_INIT=1
|
||||
GOTO END_OF_FILE
|
||||
|
||||
:: Return to starting directory
|
||||
POPD
|
||||
|
||||
:END_OF_FILE
|
||||
@@ -0,0 +1,102 @@
|
||||
@echo off
|
||||
|
||||
REM
|
||||
REM Copyright (c) Contributors to the Open 3D Engine Project
|
||||
REM
|
||||
REM SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
REM For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
REM
|
||||
REM
|
||||
|
||||
:: Sets up extended environment for O3DE and DCCsi python
|
||||
|
||||
:: Skip initialization if already completed
|
||||
IF "%O3DE_ENV_PY_INIT%"=="1" GOTO :END_OF_FILE
|
||||
|
||||
:: Store current dir
|
||||
%~d0
|
||||
cd %~dp0
|
||||
PUSHD %~dp0
|
||||
|
||||
CALL %~dp0\Env_Core.bat
|
||||
|
||||
::SETLOCAL ENABLEDELAYEDEXPANSION
|
||||
|
||||
echo.
|
||||
echo _____________________________________________________________________
|
||||
echo.
|
||||
echo ~ O3DE Color Grading Python Env ...
|
||||
echo _____________________________________________________________________
|
||||
echo.
|
||||
|
||||
:: Python Version
|
||||
:: Ideally these are set to match the O3DE python distribution
|
||||
:: <O3DE>\python\runtime
|
||||
IF "%DCCSI_PY_VERSION_MAJOR%"=="" (set DCCSI_PY_VERSION_MAJOR=3)
|
||||
echo DCCSI_PY_VERSION_MAJOR = %DCCSI_PY_VERSION_MAJOR%
|
||||
|
||||
:: PY version Major
|
||||
IF "%DCCSI_PY_VERSION_MINOR%"=="" (set DCCSI_PY_VERSION_MINOR=7)
|
||||
echo DCCSI_PY_VERSION_MINOR = %DCCSI_PY_VERSION_MINOR%
|
||||
|
||||
IF "%DCCSI_PY_VERSION_RELEASE%"=="" (set DCCSI_PY_VERSION_RELEASE=10)
|
||||
echo DCCSI_PY_VERSION_RELEASE = %DCCSI_PY_VERSION_RELEASE%
|
||||
|
||||
:: shared location for 64bit python 3.7 DEV location
|
||||
:: this defines a DCCsi sandbox for lib site-packages by version
|
||||
:: <O3DE>\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface\3rdParty\Python\Lib
|
||||
set DCCSI_PYTHON_PATH=%DCCSIG_PATH%\3rdParty\Python
|
||||
echo DCCSI_PYTHON_PATH = %DCCSI_PYTHON_PATH%
|
||||
|
||||
:: add access to a Lib location that matches the py version (example: 3.7.x)
|
||||
:: switch this for other python versions like maya (2.7.x)
|
||||
IF "%DCCSI_PYTHON_LIB_PATH%"=="" (set DCCSI_PYTHON_LIB_PATH=%DCCSI_PYTHON_PATH%\Lib\%DCCSI_PY_VERSION_MAJOR%.x\%DCCSI_PY_VERSION_MAJOR%.%DCCSI_PY_VERSION_MINOR%.x\site-packages)
|
||||
echo DCCSI_PYTHON_LIB_PATH = %DCCSI_PYTHON_LIB_PATH%
|
||||
|
||||
:: add to the PATH
|
||||
SET PATH=%DCCSI_PYTHON_LIB_PATH%;%PATH%
|
||||
|
||||
:: shared location for default O3DE python location
|
||||
set DCCSI_PYTHON_INSTALL=%O3DE_DEV%\Python
|
||||
echo DCCSI_PYTHON_INSTALL = %DCCSI_PYTHON_INSTALL%
|
||||
|
||||
:: location for O3DE python 3.7 location
|
||||
set DCCSI_PY_BASE=%DCCSI_PYTHON_INSTALL%\python.cmd
|
||||
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
|
||||
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
|
||||
echo DCCSI_PY_EXE = %DCCSI_PY_EXE%
|
||||
|
||||
set DCCSI_PY_IDE_PACKAGES=%DCCSI_PY_IDE%\Lib\site-packages
|
||||
echo DCCSI_PY_IDE_PACKAGES = %DCCSI_PY_IDE_PACKAGES%
|
||||
|
||||
set DCCSI_FEATURECOMMON_SCRIPTS=%O3DE_DEV%\Gems\Atom\Feature\Common\Editor\Scripts
|
||||
echo DCCSI_FEATURECOMMON_SCRIPTS = %DCCSI_FEATURECOMMON_SCRIPTS%
|
||||
|
||||
set DCCSI_COLORGRADING_SCRIPTS=%DCCSI_FEATURECOMMON_SCRIPTS%\ColorGrading
|
||||
echo DCCSI_COLORGRADING_SCRIPTS = %DCCSI_COLORGRADING_SCRIPTS%
|
||||
|
||||
:: add to the PATH
|
||||
SET PATH=%DCCSI_PYTHON_INSTALL%;%DCCSI_PY_IDE%;%DCCSI_PY_IDE_PACKAGES%;%DCCSI_PY_EXE%;%DCCSI_COLORGRADING_SCRIPTS%;%PATH%
|
||||
|
||||
:: add all python related paths to PYTHONPATH for package imports
|
||||
set PYTHONPATH=%DCCSIG_PATH%;%DCCSI_PYTHON_LIB_PATH%;%O3DE_BIN_PATH%;%DCCSI_COLORGRADING_SCRIPTS%;%DCCSI_FEATURECOMMON_SCRIPTS%;%PYTHONPATH%
|
||||
echo PYTHONPATH = %PYTHONPATH%
|
||||
|
||||
::ENDLOCAL
|
||||
|
||||
:: Set flag so we don't initialize dccsi environment twice
|
||||
SET O3DE_ENV_PY_INIT=1
|
||||
GOTO END_OF_FILE
|
||||
|
||||
:: Return to starting directory
|
||||
POPD
|
||||
|
||||
:END_OF_FILE
|
||||
@@ -0,0 +1,88 @@
|
||||
@echo off
|
||||
|
||||
REM
|
||||
REM Copyright (c) Contributors to the Open 3D Engine Project
|
||||
REM
|
||||
REM SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
REM For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
REM
|
||||
REM
|
||||
|
||||
|
||||
:: Sets ocio and oiio tools for O3DE Color Grading
|
||||
|
||||
:: Skip initialization if already completed
|
||||
IF "%O3DE_ENV_TOOLS_INIT%"=="1" GOTO :END_OF_FILE
|
||||
|
||||
:: Store current dir
|
||||
%~d0
|
||||
cd %~dp0
|
||||
PUSHD %~dp0
|
||||
|
||||
:: Initialize env
|
||||
CALL %~dp0\Env_Core.bat
|
||||
CALL %~dp0\Env_Python.bat
|
||||
|
||||
::SETLOCAL ENABLEDELAYEDEXPANSION
|
||||
|
||||
echo.
|
||||
echo _____________________________________________________________________
|
||||
echo.
|
||||
echo ~ O3DE Color Grading Tools Env ...
|
||||
echo _____________________________________________________________________
|
||||
echo.
|
||||
|
||||
::SET oiio_bin=%O3DE_PROJECT_PATH%\Tools\oiio\build\bin\Release
|
||||
::SET oiiotool=%oiio_bin%\oiiotool.exe
|
||||
|
||||
:: Libs that ocio uses
|
||||
SET vcpkg_bin=%O3DE_DEV%\Tools\ColorGrading\vcpkg\installed\x64-windows\bin
|
||||
:: add to path
|
||||
SET PATH=%PATH%;%vcpkg_bin%
|
||||
|
||||
SET ocio_bin=%O3DE_DEV%\Tools\ColorGrading\ocio\build\src\OpenColorIO\Release
|
||||
echo ocio_bin = %ocio_bin%
|
||||
:: add to the PATH
|
||||
SET PATH=%PATH%;%ocio_bin%
|
||||
|
||||
IF "%OCIO_APPS%"=="" (set OCIO_APPS=%O3DE_DEV%\Tools\ColorGrading\ocio\build\src\apps)
|
||||
echo OCIO_APPS = %OCIO_APPS%
|
||||
|
||||
SET ociobakelut=%OCIO_APPS%\ociobakelut\Release
|
||||
echo ociobakelut = %ociobakelut%
|
||||
SET PATH=%PATH%;%ociobakelut%
|
||||
|
||||
SET ociocheck=%OCIO_APPS%\ociocheck\Release
|
||||
SET PATH=%PATH%;%ociocheck%
|
||||
|
||||
SET ociochecklut=%OCIO_APPS%\ociochecklut\Release
|
||||
SET PATH=%PATH%;%ociochecklut%
|
||||
|
||||
SET ocioconvert=%OCIO_APPS%\ocioconvert\Release
|
||||
SET PATH=%PATH%;%ocioconvert%
|
||||
|
||||
SET ociodisplay=%OCIO_APPS%\ociodisplay\Release
|
||||
SET PATH=%PATH%;%ociodisplay%
|
||||
|
||||
SET ociolutimage=%OCIO_APPS%\ociolutimage\Release
|
||||
SET PATH=%PATH%;%ociolutimage%
|
||||
|
||||
SET ociomakeclf=%OCIO_APPS%\ociomakeclf\Release
|
||||
SET PATH=%PATH%;%ociomakeclf%
|
||||
|
||||
SET ocioperf=%OCIO_APPS%\ocioperf\Release
|
||||
SET PATH=%PATH%;%ocioperf%
|
||||
|
||||
SET ociowrite=%OCIO_APPS%\ociowrite\Release
|
||||
SET PATH=%PATH%;%ociowrite%
|
||||
|
||||
::ENDLOCAL
|
||||
|
||||
:: Set flag so we don't initialize this environment twice
|
||||
SET O3DE_ENV_TOOLS_INIT=1
|
||||
GOTO END_OF_FILE
|
||||
|
||||
:: Return to starting directory
|
||||
POPD
|
||||
|
||||
:END_OF_FILE
|
||||
@@ -0,0 +1,67 @@
|
||||
@echo off
|
||||
|
||||
REM
|
||||
REM Copyright (c) Contributors to the Open 3D Engine Project
|
||||
REM
|
||||
REM SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
REM For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
REM
|
||||
REM
|
||||
|
||||
:: Sets up environment for Lumberyard DCC tools and code access
|
||||
|
||||
:: Skip initialization if already completed
|
||||
IF "%DCCSI_ENV_WINGIDE_INIT%"=="1" GOTO :END_OF_FILE
|
||||
|
||||
:: Store current dir
|
||||
%~d0
|
||||
cd %~dp0
|
||||
PUSHD %~dp0
|
||||
|
||||
:: WingIDE version Major
|
||||
IF "%DCCSI_WING_VERSION_MAJOR%"=="" (set DCCSI_WING_VERSION_MAJOR=7)
|
||||
:: WingIDE version Major
|
||||
IF "%DCCSI_WING_VERSION_MINOR%"=="" (set DCCSI_WING_VERSION_MINOR=1)
|
||||
|
||||
:: Initialize env
|
||||
CALL %~dp0\Env_Core.bat
|
||||
CALL %~dp0\Env_Python.bat
|
||||
|
||||
:: Wing and other IDEs probably prefer access directly to the python.exe
|
||||
set DCCSI_PY_IDE = %DCCSI_PYTHON_INSTALL%\runtime\python-3.7.10-rev1-windows\python
|
||||
echo DCCSI_PY_IDE = %DCCSI_PY_IDE%
|
||||
|
||||
:: ide and debugger plug
|
||||
set DCCSI_PY_DEFAULT=%DCCSI_PY_IDE%\python.exe
|
||||
|
||||
:: put project env variables/paths here
|
||||
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.
|
||||
echo ~ O3DE Color Grading Environment ...
|
||||
echo _____________________________________________________________________
|
||||
echo.
|
||||
|
||||
echo DCCSI_WING_VERSION_MAJOR = %DCCSI_WING_VERSION_MAJOR%
|
||||
echo DCCSI_WING_VERSION_MINOR = %DCCSI_WING_VERSION_MINOR%
|
||||
echo WINGHOME = %WINGHOME%
|
||||
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
|
||||
|
||||
:: Return to starting directory
|
||||
POPD
|
||||
|
||||
:END_OF_FILE
|
||||
@@ -0,0 +1,99 @@
|
||||
@echo off
|
||||
|
||||
REM
|
||||
REM Copyright (c) Contributors to the Open 3D Engine Project
|
||||
REM
|
||||
REM SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
REM For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
REM
|
||||
REM
|
||||
|
||||
:: Launches Wing IDE and the O3de Color Grading project files
|
||||
|
||||
:: Set up window
|
||||
TITLE O3DE Color Grading Launch WingIDE 7x
|
||||
:: Use obvious color to prevent confusion (Grey with Yellow Text)
|
||||
COLOR 8E
|
||||
|
||||
:: Store current dir
|
||||
%~d0
|
||||
cd %~dp0
|
||||
PUSHD %~dp0
|
||||
|
||||
:: if the user has set up a custom env call it
|
||||
IF EXIST "%~dp0User_env.bat" CALL %~dp0User_env.bat
|
||||
|
||||
:: Constant Vars (Global)
|
||||
:: global debug (propogates)
|
||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=True)
|
||||
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
||||
:: initiates debugger connection
|
||||
IF "%DCCSI_DEV_MODE%"=="" (set DCCSI_DEV_MODE=True)
|
||||
echo DCCSI_DEV_MODE = %DCCSI_DEV_MODE%
|
||||
:: sets debugger, options: WING, PYCHARM
|
||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
||||
echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
||||
:: Default level logger will handle
|
||||
:: CRITICAL:50
|
||||
:: ERROR:40
|
||||
:: WARNING:30
|
||||
:: INFO:20
|
||||
:: DEBUG:10
|
||||
:: NOTSET:0
|
||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=10)
|
||||
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
||||
|
||||
:: Initialize env
|
||||
CALL %~dp0\Env_Core.bat
|
||||
CALL %~dp0\Env_Python.bat
|
||||
CALL %~dp0\Env_WingIDE.bat
|
||||
echo.
|
||||
echo _____________________________________________________________________
|
||||
echo.
|
||||
echo ~ WingIDE Version %DCCSI_WING_VERSION_MAJOR%.%DCCSI_WING_VERSION_MINOR%
|
||||
echo ~ Launching O3DE %LY_PROJECT% project in WingIDE %DCCSI_WING_VERSION_MAJOR%.%DCCSI_WING_VERSION_MINOR% ...
|
||||
echo _____________________________________________________________________
|
||||
echo.
|
||||
|
||||
echo LY_DEV = %LY_DEV%
|
||||
|
||||
:: shared location for default O3DE python location
|
||||
set DCCSI_PYTHON_INSTALL=%LY_DEV%\Python
|
||||
echo DCCSI_PYTHON_INSTALL = %DCCSI_PYTHON_INSTALL%
|
||||
|
||||
:: Wing and other IDEs probably prefer access directly to the python.exe
|
||||
set DCCSI_PY_IDE = %DCCSI_PYTHON_INSTALL%\runtime\python-3.7.10-rev1-windows\python
|
||||
echo DCCSI_PY_IDE = %DCCSI_PY_IDE%
|
||||
|
||||
:: ide and debugger plug
|
||||
set DCCSI_PY_BASE=%DCCSI_PY_IDE%\python.exe
|
||||
echo DCCSI_PY_BASE = %DCCSI_PY_BASE%
|
||||
|
||||
:: ide and debugger plug
|
||||
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
|
||||
CD /D %O3DE_PROJECT_PATH%
|
||||
|
||||
IF EXIST "%WINGHOME%\bin\wing.exe" (
|
||||
start "" "%WINGHOME%\bin\wing.exe" "%WING_PROJ%"
|
||||
) ELSE (
|
||||
Where wing.exe 2> NUL
|
||||
IF ERRORLEVEL 1 (
|
||||
echo wing.exe could not be found
|
||||
pause
|
||||
) ELSE (
|
||||
start "" wing.exe "%WING_PROJ%"
|
||||
)
|
||||
)
|
||||
|
||||
:: Return to starting directory
|
||||
POPD
|
||||
|
||||
:END_OF_FILE
|
||||
@@ -0,0 +1,26 @@
|
||||
#
|
||||
#
|
||||
# Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
#
|
||||
#
|
||||
|
||||
These are commandline tools for color grading workflow and authoring LUTs externally.
|
||||
Note: may require OpenColorIO (ocio) and/or OpenImageIO (oiio) to be set up properly.
|
||||
|
||||
CMD_ColorGradingTools.bat :: opens a configured window env context in CMD
|
||||
Env_Core.bat :: core O3DE env hooks (any envars DCCSI_ shares some overlay with DccScriptingInterface Gem)
|
||||
Env_Python.bat :: sets up access and configures env for O3DE python (to run externally)
|
||||
Env_Tools.bat :: hooks for ocio and oiio
|
||||
:: note: currently you must build coio tools/apps yourself (we used vcpkg and cmake gui)
|
||||
:: note: oiio, it's .pyd and oiiotool should build in O3DE (if you have troubel issue a ticket to investigate)
|
||||
Env_WingIDE.bat :: hooks for WingIDE (a python IDE and debugger)
|
||||
:: note: feel free to configure a different IDE, user choice.
|
||||
Launch_WingIDE-7-1.bat :: this will launch WingIDE with envar hooks and access to O3DE python (for authroing, debugging)
|
||||
:: note: you will need to make sure wingstub.py is configured correctly
|
||||
:: note: you will need to create the wing project file/path (see Env_WingIDE.bat)
|
||||
User_Env.bat.template :: this is an example of overriding or extending the envar hooks (set local engine root, or branch path, etc.)
|
||||
:: note: to use, copy and rename to User_Env.bat
|
||||
:: bote: we use this to primarily enable the debugging related envar hooks
|
||||
@@ -0,0 +1,41 @@
|
||||
@echo off
|
||||
|
||||
REM
|
||||
REM Copyright (c) Contributors to the Open 3D Engine Project
|
||||
REM
|
||||
REM SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
REM For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
REM
|
||||
REM
|
||||
|
||||
:: copy this file, rename to User_Env.bat (remove .template)
|
||||
:: use this file to override any local properties that differ from base
|
||||
|
||||
:: Skip initialization if already completed
|
||||
IF "%O3DE_USER_ENV_INIT%"=="1" GOTO :END_OF_FILE
|
||||
|
||||
:: Store current dir
|
||||
%~d0
|
||||
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 flag so we don't initialize dccsi environment twice
|
||||
SET O3DE_USER_ENV_INIT=1
|
||||
GOTO END_OF_FILE
|
||||
|
||||
:: Return to starting directory
|
||||
POPD
|
||||
|
||||
:END_OF_FILE
|
||||
@@ -0,0 +1,98 @@
|
||||
################################
|
||||
# create identity LUT
|
||||
ociolutimage --generate --cubesize 16 --output C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_16_LUT.exr
|
||||
|
||||
NOTE: ociolutimage is a OpenColorIO (ocio) app. O3DE does NOT currently build these, however you can build them yourself.
|
||||
for example, we used vcpkg and cmake gui to build them locally.
|
||||
we intend to add a fully built integration of ocio in the future.
|
||||
for now, we have provided all of the LUTs below so that most users will not need the ocio tools.
|
||||
|
||||
################################
|
||||
# create base 16x16x16 LUT shaped for grading in 48-nits (LDR), in 1000-nits (HDR), 2000nits, 4000-nits
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_16_LUT.exr --op pre-grading --shaper Log2-48nits --o C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-48nits_16_LUT.exr
|
||||
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_16_LUT.exr --op pre-grading --shaper Log2-1000nits --o C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-1000nits_16_LUT.exr
|
||||
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_16_LUT.exr --op pre-grading --shaper Log2-2000nits --o C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-2000nits_16_LUT.exr
|
||||
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_16_LUT.exr --op pre-grading --shaper Log2-4000nits --o C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-4000nits_16_LUT.exr
|
||||
|
||||
|
||||
################################
|
||||
# create base 32x32x32 LUT shaped for grading in 48-nits (LDR), in 1000-nits (HDR), 2000nits, 4000-nits
|
||||
ociolutimage --generate --cubesize 32 --output C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_32_LUT.exr
|
||||
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_32_LUT.exr --op pre-grading --shaper Log2-48nits --o C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-48nits_32_LUT.exr
|
||||
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_32_LUT.exr --op pre-grading --shaper Log2-1000nits --o C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-1000nits_32_LUT.exr
|
||||
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_32_LUT.exr --op pre-grading --shaper Log2-2000nits --o C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-2000nits_32_LUT.exr
|
||||
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_32_LUT.exr --op pre-grading --shaper Log2-4000nits --o C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-4000nits_32_LUT.exr
|
||||
|
||||
|
||||
################################
|
||||
# create base 64x64x64 LUT shaped for grading in 48-nits (LDR), in 1000-nits (HDR), 2000nits, 4000-nits
|
||||
# LUT size 64 broken output without --maxwidth 4096!!!
|
||||
ociolutimage --generate --cubesize 64 --maxwidth 4096 --output C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_64_LUT.exr
|
||||
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_64_LUT.exr --op pre-grading --shaper Log2-48nits --o C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-48nits_64_LUT.exr
|
||||
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_64_LUT.exr --op pre-grading --shaper Log2-1000nits --o C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-1000nits_64_LUT.exr
|
||||
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_64_LUT.exr --op pre-grading --shaper Log2-2000nits --o C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-2000nits_64_LUT.exr
|
||||
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_64_LUT.exr --op pre-grading --shaper Log2-4000nits --o C:\Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-4000nits_64_LUT.exr
|
||||
|
||||
|
||||
################################
|
||||
# Photoshop, Basics
|
||||
Examples: C:\Depot\o3de-engine\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\TestData\Photoshop\
|
||||
HDR_in_LDR_Log2-48nits\LUT_PreShaped_Composite\*
|
||||
|
||||
1. This must be installed (righ-click) before launching photoshop:
|
||||
Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\from_ACEScg_to_sRGB.icc
|
||||
^ this is to be used as 'custom color proof' (ACES view transform)
|
||||
|
||||
2. This is the O3DE 'displaymapper passthrough' capture, re-saved as a .exr:
|
||||
"ColorGrading\Resources\TestData\Photoshop\Log2-48nits\framebuffer_ACEScg_to_sRGB_icc.exr"
|
||||
^ open in photoshop, color proof with the above .icc
|
||||
the image should proof such that it looks the same as camera in O3DE viewport
|
||||
with the Displaymapper set to ACES
|
||||
|
||||
3. Composite this base LUT in a layer on top:
|
||||
"Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-48nits_32_LUT.exr"
|
||||
^ this is a pre-shaped 32x32x32 LUT we generated above
|
||||
|
||||
4. Color Grade using adjustment layers (and hope for the best, some photoshop grades may cause values to clip)
|
||||
|
||||
5. Select/crop just the LUT, 'Copy Merged' into a new document, save into a folder such as:
|
||||
"ColorGrading\Resources\TestData\Photoshop\Log2-48nits\i_shaped\test_hue-sat_32_LUT.exr"
|
||||
^ this lut is post-grade BUT still shaped (need to inv shape back to normailzed 0-1 values)
|
||||
|
||||
6. Use the provided cmd/python tools, we need to inverse shape:
|
||||
|
||||
Run: "Gems\Atom\Feature\Common\Tools\ColorGrading\cmdline\CMD_ColorGradingTools.bat"
|
||||
|
||||
C:\Depot\o3de-engine\Gems\Atom\Feature\Common\Tools\ColorGrading>>
|
||||
|
||||
python %DCCSI_COLORGRADING_SCRIPTS%\lut_helper.py --i "Resources\TestData\TestData\Photoshop\Log2-48nits\i_shaped\test_hue-sat_32_LUT.exr" --op post-grading --shaper Log2-48nits --o Resources\TestData\Photoshop\Log2-48nits\o_invShaped\test_hue-sat_32_LUT -l -a
|
||||
|
||||
^ this will inv-shaped LUT (3DL's are normalized in 0-1 space, values may clip!!!)
|
||||
^ -e generates LUT as .exr
|
||||
^ -l generates a .3DL version
|
||||
^ -a generates a .azasset version <-- this copies/moves to an asset folder
|
||||
|
||||
Using LUTs In-engine:
|
||||
Only the <LUT NAME>.azasset needs to be copied to a O3DE project assets folder to use in engine, example:
|
||||
"C:\Depot\o3de-engine\Gems\Atom\Feature\Common\Assets\ColorGrading\TestData\Photoshop\inv-Log2-48nits\test_hue-sat_32_LUT.azasset"
|
||||
^ this is just an example path within the engine folder
|
||||
|
||||
The <LUT NAME>.azasset can be loaded into a 'Look Modification Component'
|
||||
|
||||
If there are multiple properly configured 'Look Modification Components' you can blend LUTs/Looks (in world space, in a cinematic, etc.)
|
||||
|
||||
By default LUTs utilize linear sampling, but you can use the following CVAR to improve quality for 'any difficult lut':
|
||||
r_lutSampleQuality=0, linear
|
||||
r_lutSampleQuality=1, b-spline 7 taps
|
||||
r_lutSampleQuality=2, b-spline 19 taps (highest quality)
|
||||
Reference in New Issue
Block a user