Сначала для Alex:
RiSpec 3.2
Пункт 12.3:
The shader computes the new color at the ray origin P-I
Меня всегда доставал вопрос какого собственно они считают
WOrigin = P-I (shadowedclouds.sl, hipertexture.sl) когда это по идее есть E
Вопрос исчез когда я увидел что в слимовском фоге эту фишку заменили на E.
Мы несколько уклонились от темы. Речь шла о Surface шейдере симулирующим волум (ну нужен мне дисплэйс) а не о volume шейдере.
Забудем бред про z deph. Кажеться я нашел способ куда проще.
К камере цепляем shadow генератор генерящий шэдов только для интересующего нас объекта. В шейдере как обычно начинаем маршировать
от внутренней P вдоль I назад к камере. Каждый раз передавая на проверку
текущую Pi в shadow функцию которая возвращает 1 если Pi в тени
(до внешней P мы еще не домаршировали) или 0 если мы вылезли наружу
(из типа тени) что прекращает процесс рэймарша.
На днях попробую.
Правда тут есть одно но. В случае сложного объекта (взять хотя бы торус с торца) мы будем маршировать и через дырку от бублика. Правда мне кажеться что эта проблема вообще нерешабельна. (Rayshere.h тоже неспасет)
RiSpec 3.2
Пункт 12.3:
The shader computes the new color at the ray origin P-I
Меня всегда доставал вопрос какого собственно они считают
WOrigin = P-I (shadowedclouds.sl, hipertexture.sl) когда это по идее есть E
Вопрос исчез когда я увидел что в слимовском фоге эту фишку заменили на E.
Мы несколько уклонились от темы. Речь шла о Surface шейдере симулирующим волум (ну нужен мне дисплэйс) а не о volume шейдере.
Забудем бред про z deph. Кажеться я нашел способ куда проще.
К камере цепляем shadow генератор генерящий шэдов только для интересующего нас объекта. В шейдере как обычно начинаем маршировать
от внутренней P вдоль I назад к камере. Каждый раз передавая на проверку
текущую Pi в shadow функцию которая возвращает 1 если Pi в тени
(до внешней P мы еще не домаршировали) или 0 если мы вылезли наружу
(из типа тени) что прекращает процесс рэймарша.
На днях попробую.
Правда тут есть одно но. В случае сложного объекта (взять хотя бы торус с торца) мы будем маршировать и через дырку от бублика. Правда мне кажеться что эта проблема вообще нерешабельна. (Rayshere.h тоже неспасет)