Render.ru

Не работает шейдер.

Trofimm

Знаток
Рейтинг
27
#1
Всем привет.
Компилю шейдер для нормалмапа по книжке. Решил добавить гамма-коррекцию. Но на рендере шейдер белый, рулька "Programm_gamma" не влияет на результат. Если в коде, вместо "gamma" ставлю своё число - работает.

Почему не передаётся значение от сюда?:
gamma = *mi_eval_scalar (&params->Programm_gamma);

_________________________________________________________________________

#include "shader.h"
#include "math.h"


struct Normals_as_color
{
miColor color;
miScalar Programm_gamma;
};


extern "C"
{
DLLEXPORT int TM_Normals_as_color_version(void)
{
return (1);
}

DLLEXPORT miBoolean TM_Normals_as_color (
miColor *result, miState *state, struct Normals_as_color *params )
{
miScalar gamma, current_gamma_r, current_gamma_g, current_gamma_b;
miVector normal;
mi_vector_to_object (state, &normal, &state->normal);
mi_vector_normalize (&normal);

gamma = *mi_eval_scalar (&params->Programm_gamma);

current_gamma_r = normal.x / 2.0 + 0.5;
current_gamma_g = normal.y / 2.0 + 0.5;
current_gamma_b = normal.z / 2.0 + 0.5;

result->r = pow (current_gamma_r, gamma);
result->g = pow (current_gamma_g, gamma);
result->b = pow (current_gamma_b, gamma);

result->a = 1.0;

return miTRUE;
}
}
 
Сверху