本文整理汇总了C++中ocio_namespace::ConstConfigRcPtr::getDefaultLumaCoefs方法的典型用法代码示例。如果您正苦于以下问题:C++ ConstConfigRcPtr::getDefaultLumaCoefs方法的具体用法?C++ ConstConfigRcPtr::getDefaultLumaCoefs怎么用?C++ ConstConfigRcPtr::getDefaultLumaCoefs使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ocio_namespace::ConstConfigRcPtr
的用法示例。
在下文中一共展示了ConstConfigRcPtr::getDefaultLumaCoefs方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateOCIOGLState
void UpdateOCIOGLState()
{
// Step 0: Get the processor using any of the pipelines mentioned above.
OCIO::ConstConfigRcPtr config = OCIO::GetCurrentConfig();
OCIO::DisplayTransformRcPtr transform = OCIO::DisplayTransform::Create();
transform->setInputColorSpaceName( g_inputColorSpace.c_str() );
transform->setDisplay( g_display.c_str() );
transform->setView( g_transformName.c_str() );
// Add optional transforms to create a full-featured, "canonical" display pipeline
// Fstop exposure control (in SCENE_LINEAR)
{
float gain = powf(2.0f, g_exposure_fstop);
const float slope4f[] = { gain, gain, gain, gain };
float m44[16];
float offset4[4];
OCIO::MatrixTransform::Scale(m44, offset4, slope4f);
OCIO::MatrixTransformRcPtr mtx = OCIO::MatrixTransform::Create();
mtx->setValue(m44, offset4);
transform->setLinearCC(mtx);
}
// Channel swizzling
{
float lumacoef[3];
config->getDefaultLumaCoefs(lumacoef);
float m44[16];
float offset[4];
OCIO::MatrixTransform::View(m44, offset, g_channelHot, lumacoef);
OCIO::MatrixTransformRcPtr swizzle = OCIO::MatrixTransform::Create();
swizzle->setValue(m44, offset);
transform->setChannelView(swizzle);
}
// Post-display transform gamma
{
float exponent = 1.0f/std::max(1e-6f, static_cast<float>(g_display_gamma));
const float exponent4f[] = { exponent, exponent, exponent, exponent };
OCIO::ExponentTransformRcPtr expTransform = OCIO::ExponentTransform::Create();
expTransform->setValue(exponent4f);
transform->setDisplayCC(expTransform);
}
OCIO::ConstProcessorRcPtr processor;
try
{
processor = config->getProcessor(transform);
}
catch(OCIO::Exception & e)
{
std::cerr << e.what() << std::endl;
return;
}
catch(...)
{
return;
}
// Step 1: Create a GPU Shader Description
OCIO::GpuShaderDesc shaderDesc;
shaderDesc.setLanguage(OCIO::GPU_LANGUAGE_GLSL_1_0);
shaderDesc.setFunctionName("OCIODisplay");
shaderDesc.setLut3DEdgeLen(LUT3D_EDGE_SIZE);
// Step 2: Compute the 3D LUT
std::string lut3dCacheID = processor->getGpuLut3DCacheID(shaderDesc);
if(lut3dCacheID != g_lut3dcacheid)
{
//std::cerr << "Computing 3DLut " << g_lut3dcacheid << std::endl;
g_lut3dcacheid = lut3dCacheID;
processor->getGpuLut3D(&g_lut3d[0], shaderDesc);
glBindTexture(GL_TEXTURE_3D, g_lut3dTexID);
glTexSubImage3D(GL_TEXTURE_3D, 0,
0, 0, 0,
LUT3D_EDGE_SIZE, LUT3D_EDGE_SIZE, LUT3D_EDGE_SIZE,
GL_RGB,GL_FLOAT, &g_lut3d[0]);
}
// Step 3: Compute the Shader
std::string shaderCacheID = processor->getGpuShaderTextCacheID(shaderDesc);
if(g_program == 0 || shaderCacheID != g_shadercacheid)
{
//std::cerr << "Computing Shader " << g_shadercacheid << std::endl;
g_shadercacheid = shaderCacheID;
std::ostringstream os;
os << processor->getGpuShaderText(shaderDesc) << "\n";
os << g_fragShaderText;
//std::cerr << os.str() << std::endl;
if(g_fragShader) glDeleteShader(g_fragShader);
g_fragShader = CompileShaderText(GL_FRAGMENT_SHADER, os.str().c_str());
if(g_program) glDeleteProgram(g_program);
g_program = LinkShaders(g_fragShader);
}
//.........这里部分代码省略.........
示例2: UpdateOCIOGLState
void UpdateOCIOGLState()
{
// Step 0: Get the processor using any of the pipelines mentioned above.
OCIO::ConstConfigRcPtr config = OCIO::GetCurrentConfig();
OCIO::DisplayTransformRcPtr transform = OCIO::DisplayTransform::Create();
transform->setInputColorSpaceName( g_inputColorSpace.c_str() );
transform->setDisplay( g_display.c_str() );
transform->setView( g_transformName.c_str() );
transform->setLooksOverride( g_look.c_str() );
if(g_verbose)
{
std::cout << std::endl;
std::cout << "Color transformation composed of:" << std::endl;
std::cout << " Image ColorSpace is:\t" << g_inputColorSpace << std::endl;
std::cout << " Transform is:\t\t" << g_transformName << std::endl;
std::cout << " Device is:\t\t" << g_display << std::endl;
std::cout << " Looks Override is:\t'" << g_look << "'" << std::endl;
std::cout << " with:" << std::endl;
std::cout << " exposure_fstop = " << g_exposure_fstop << std::endl;
std::cout << " display_gamma = " << g_display_gamma << std::endl;
std::cout << " channels = "
<< (g_channelHot[0] ? "R" : "")
<< (g_channelHot[1] ? "G" : "")
<< (g_channelHot[2] ? "B" : "")
<< (g_channelHot[3] ? "A" : "") << std::endl;
}
// Add optional transforms to create a full-featured, "canonical" display pipeline
// Fstop exposure control (in SCENE_LINEAR)
{
float gain = powf(2.0f, g_exposure_fstop);
const float slope4f[] = { gain, gain, gain, gain };
float m44[16];
float offset4[4];
OCIO::MatrixTransform::Scale(m44, offset4, slope4f);
OCIO::MatrixTransformRcPtr mtx = OCIO::MatrixTransform::Create();
mtx->setValue(m44, offset4);
transform->setLinearCC(mtx);
}
// Channel swizzling
{
float lumacoef[3];
config->getDefaultLumaCoefs(lumacoef);
float m44[16];
float offset[4];
OCIO::MatrixTransform::View(m44, offset, g_channelHot, lumacoef);
OCIO::MatrixTransformRcPtr swizzle = OCIO::MatrixTransform::Create();
swizzle->setValue(m44, offset);
transform->setChannelView(swizzle);
}
// Post-display transform gamma
{
float exponent = 1.0f/std::max(1e-6f, static_cast<float>(g_display_gamma));
const float exponent4f[] = { exponent, exponent, exponent, exponent };
OCIO::ExponentTransformRcPtr expTransform = OCIO::ExponentTransform::Create();
expTransform->setValue(exponent4f);
transform->setDisplayCC(expTransform);
}
OCIO::ConstProcessorRcPtr processor;
try
{
processor = config->getProcessor(transform);
}
catch(OCIO::Exception & e)
{
std::cerr << e.what() << std::endl;
return;
}
catch(...)
{
return;
}
// Step 1: Create the appropriate GPU shader description
OCIO::GpuShaderDescRcPtr shaderDesc
= g_gpulegacy ? OCIO::GpuShaderDesc::CreateLegacyShaderDesc(LUT3D_EDGE_SIZE)
: OCIO::GpuShaderDesc::CreateShaderDesc();
shaderDesc->setLanguage(OCIO::GPU_LANGUAGE_GLSL_1_0);
shaderDesc->setFunctionName("OCIODisplay");
shaderDesc->setResourcePrefix("ocio_");
// Step 2: Collect the shader program information for a specific processor
processor->extractGpuShaderInfo(shaderDesc);
// Step 3: Use the helper OpenGL builder
g_oglBuilder = OpenGLBuilder::Create(shaderDesc);
g_oglBuilder->setVerbose(g_gpuinfo);
// Step 4: Allocate & upload all the LUTs
//
// NB: The start index for the texture indices is 1 as one texture
// was already created for the input image.
//
g_oglBuilder->allocateAllTextures(1);
//.........这里部分代码省略.........