Как преобразовать необработанную яркость RGB с помощью OCIOC++

Программы на C++. Форум разработчиков
Ответить
Гость
 Как преобразовать необработанную яркость RGB с помощью OCIO

Сообщение Гость »

Сейчас я работаю над трассировщиком лучей на C++ и изо всех сил пытаюсь понять преобразования цветов/пространства. Я пытаюсь использовать AGX через OCIO, но не могу найти внятных объяснений того, как применить преобразование, начиная с яркости RGB. Я специально работаю с необработанным световым потоком моего трассировщика лучей. Каков именно процесс, которому мне нужно следовать? Соответствующий код ниже.
Инициализация:

Код: Выделить всё

OCIO::ConstConfigRcPtr config = OCIO::Config::CreateFromFile("C:\\...\\AgX-main\\config.ocio");
// The correct arguments for the next line are a mystery to me.
OCIO::ConstProcessorRcPtr processor = config->getProcessor(OCIO::ROLE_RENDERING, OCIO::ROLE_RENDERING);
auto compute = processor->getDefaultCPUProcessor();
Обработка цвета

Код: Выделить всё

XYZ post_process_pixel(XYZ lums) {            //lums is raw light data via RGB
float w_luminance = luminance(lums);      //get pixel overall luminence
float log_lum = pow(w_luminance,1.0/2.2); //curb it via gamma 2.2
lums = lums * log_lum / lums;             //apply curb to color

float pixel[3] = { lums[0],lums[1],lums[2] };
compute->applyRGB(pixel);

//scale to 24 bit rgb
return XYZ::clamp(XYZ(pixel[0],pixel[1],pixel[2]), 0, 1) * 255;
}
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/782 ... using-ocio
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»