Render.ru

менталовские фукции

#1
Только начал разбиратся с менталом...поэтому сори
за серию возможно тупых вопросов.
Некоторые функции жестко повязаны на state структуру
(такие как фреснел итп)
Что если мне нужно посчитать фреснел меж двумя
произвольными векторами?
Забэкапить state, тупо вмешаться перезаписав state->dir, state->normal
а потом восстановить старые значения???
Или может есть какие более цивилизованые методы?
Рэйтрейсовы функции например в рендермене имеют
такую рульку как bias во избежании selfintersection...
А как и где подобная фишка рулится в менталовских шейдерах?
Можно ли в ментале попросить рэйтрейсовы функции
игнорить все объекты кроме того с которого стрельнули
рэйпробу?
 

Puppet

Активный участник
Рейтинг
19
#2
Первое, думаю на этом форуме тебе никто ничего не подскажет.
Вообще я удивлен появлению такого вопроса здесь :)

Второе,
Что значит: "посчитать фреснел меж двумя произвольными векторами"?
И что значит: "Забэкапить state, тупо вмешаться перезаписав state->dir, state->normal а потом восстановить старые значения"?
Не совсем понятно.

Когда трейсится луч можно обратится с самому объекту
state->...
обратится к объекту, который был пересечен лучем, то
state->child->...

Биас в рейтрейсинге это нонсанс, маразм... такое встречал только в рендермане. В ментале разумеется ничего подобного нету.

Извеняюсь, а зачем тогда рейпроб если все объекты игнорировать?

Напиши подробнее что ты хочешь получить.

P.S. фреснель считается так:
miVector dir, nrm;
mi_point_to_camera(state, &dir, &state->point);
mi_vector_normalize(&dir);
mi_vector_to_camera(state, &nrm, &state->normal);
mi_vector_normalize(&nrm);
float r = mi_vector_dot(&dir, &nrm);
r = -r;
if (r < 0)
r = 0;
соответственно можно подставить все что душе угодно.

Удачи.
 
#3
Ок. Встречный вопрос...есть ли где рускоязычный форум
где могут ответить на подобные вопросы?
По теме:
Для неких фэйковых целей мне нужно посчитать
фреснел коефициент относительно нормали и вектора
исходящщего из текущщей точки в камеру (прощще говоря (-dir))
Но библиотечная фукция mi_fresnel_reflection
жестко повязана на нормаль и дир.
Поэтому пришлось сделать примерно так:

miVector OldDir;
miVector NewDir;
niScalar Kr;

OldDir = NewDir = state->dir;
mi_vector_neg(&NewDir);
mi_vector_normalize(&NewDir); /* не уверен...а надо ли...но на всякий случай*/
state->dir = NewDir;
Kr = mi_fresnel_reflection(state,1,ior);
state->dir = OldDir;

Это впринципе работает.

Что хочу...пытаюсь реализовать single scattering фичу
по Henrik Wann Jensenсовским докам.
В процессе рэймарша по рефрактовому вектору из произвольной точки
находящейся на этом рефрактовом векторе
стрелять рэйпробами в направлении текущщего источника света
с целью выщщимить координаты точки выхода из объекта и нормаль в точке выхода
ну и естественно пройденую дистанцию.
Тоесть меня интересует столкновение рэйпробы с внутренней стенкой самого объекта
а все посторонние объекты мне нужно игнорить (ну малоли там чего залетело
внутрь...или дырка в объекте и проба ушла гулять по сцене)
На гудиньском VEX это выглядит примерно так
string MyName = getobjectname();
float HitDist = rayhittest(Pin,Lin,&Phit,&Nhit,bias,"scope",MyName);

Просто как бы еще не совсем въехал в идеологию ментала
и продожаю мыслить категориями более дружественных языков шадерайтества
и некоторые менталовские фичи как бы совершенно в диковинку:)
 

Puppet

Активный участник
Рейтинг
19
#4
По поводу русскоязычных форумов это на вряд ли...
Дельно могут подсказать на форуме mentalimages
http://www.mentalimages.com/2_1_5_forum/index.html
разумеется только на английском языке.

К сожалению не знаком с данной докой, поэтому не совсем понятно как и чего.

Стрелять рейпробами из произвольной точки вектора на вряд ли получится, потому что это уже относится к Volume шейдеру.

Не знаю, функция miBoolean mi_trace_light() не подайдет?

К сожаления я сам слабо знаком с шейдерописанием.

P.S. А существующий шейдер скаттеринга чем не подходит или это просто спортивный интерес?
 
Рейтинг
40
#6
привет всем , кто может дать почитать чего по менталу
а то просто рендерю , а с шейдерами проблем, и вобще помогите кто чем может
 
#7
увы и ах...чтива по менталу мало.
Те 2 книжки об которых так много говорили большевики представляют собой:
1 том - описалово менталовского движка в общих чертах...полезная книженция но не более.
2 том - фактически распечатаный вариант менталовского мануала...
того который идет вместе с менталом...
 
Рейтинг
40
#8
привет всем , кто может дать почитать чего по менталу
а то просто рендерю , а с шейдерами проблем, и вобще помогите кто чем может
 
Сверху