Я упоминал, но видимо слишком туманно :) Берем длины волн, для которых будем всё считать, и интенсивности излучения источника света на этих же длинах волн. Выйдет примерно так в цикле:
float[iLambda] result = getLightIntensity(iLambda)*calculateSomethingLikeCDreflectionAtWawelength(iLambda);
В статье всего три длины волны, и для сложного спектра понятно что этого слишком мало. result потом подставляется в InterpolateLambdaNm из моего предыдущего комментария. getLightIntensity() — возвращает значение спектрограммы источника света для данной длины волны. У автора там просто значения интенсивностей для rgb, что маловато для сложного спектра. tldr: нужно считать всё для большого количества длин волн, особенно если спектр источника сложный, но так как это дорого, то обычно считают для трёх длин волн примерно соответствующих rgb значениям, что "прокатывает" для равномерного спектра.
В общем случае нужно считать отдельно для как можно большего количества длин волн в видимом диапазоне, и после рассчётов переводить в XYZ численным интегрированием с учётом спектра источника. XYZ потом переводится в линейный sRGB умножением на матрицу. Подынтегральное выражение — чувствительность глаза (таблица значений CIE1931, которые полстатьи пытались аппроксимировать, cvrl.ioo.ucl.ac.uk/cmfs.htm), умноженное на спектр, получившийся после вычислений, которые в свою очередь зависят от спектра источника света (нет цвета в спектре источника — вычисления умножаются на ноль). Второй множитель дорого считать в шейдере для большого количества длин волн, и обычно обходятся тремя длинами волн, которые потом нужно интерполировать при интегрировании. У меня в шейдере выглядит как-то так:
float3 xyz = 0;
for (float j = 0; j < 64; j += 1) {
float intensity = InterpolateLambdaNm(5.0*j+390, /*массив значений после рассчётов для нескольких длин волн*/);
xyz += intensity * cie_colour_match_2012_2deg_390_705_5[j];
}
finalColor = mul(xyz_to_linear_srgb, xyz*5.0);
Пишу в свободное время такой шейдер. Пока сделал одиночное рассеяние Релея и Ми, отображение солнца с учётом затемнения краёв, учёт отраженного от планеты света, свободное движение камеры от поверхности планеты до космоса, правильное преобразование моделируемого спектра в цвет. Интересно наблюдать изменения при смене параметров, у меня всё сделано без предрасчётов, и менять можно всё — от эффективной температуры солнца до толщины и молекулярной массы атмосферы. Поэтому тень от планеты получилась автоматически. Для реалтайма пришлось придумывать полуаналитический способ рассчёта оптической толщины, что позволило избавиться от вложенного цикла. В результате придумал как заменить эту функцию с неберущимся интегралом на другую, ведущую себя практически так же на нужных масштабах, но с берущимся интегралом. В планах рассеяние второго порядка и облака, но пока не представляю реалтайм-модель, слишком много считать.
Можно сделать fallback до стерео, или аппаратно/программно рассчитать звук, выданный неподдерживаемой игрой в каждом динамике даже с учётом поворотов головы. Но качество будет низким из-за потери данных при обработке готового звукового потока, выданного игрой, думающей, что это обычные наушники или например 4.0 система. Практически придётся заниматься интерполяцией, и слушателю максим будет казаться, что он слушает четырёхканальную систему в безэховой камере. Повернул голову — положение колонок сместилось. На уровне игры можно получить положения всех восьми динамиков в пространстве и правильно рассчитать расстояния/направления на каждый игровой источник звука. Вот если бы звуковые API по умолчанию поддерживали любое количество каналов с возможностью изменения их положения вокруг слушателя в реальном времени, не пришлось бы огород городить :)
Четыре маленьких динамика вместо одного большого это обычно плохие новости. А поддержку 3D звука, судя по статье, придётся внедрять в каждую игру отдельно, тоесть будет какое-то ограниченное количество совместимых игр. Если повезёт.
А я на 38" 21:9 засматриваюсь. Но пока у нас появятся, наверное успеют аналогичные OLED выйти. http://www.lg.com/us/monitors/lg-38UC99-W-ultrawide-monitor
Я года три назад накупил себе таких китайских (отличаются только цоколем):
http://www.limitlessled.com/shop/e14-dual-white-led-light-bulb/
http://www.limitlessled.com/shop/warm-white-e26-b22-e27-led-light-bulb/
Можно настраивать температуру, а CRI обещают аж до 85.9 для холодного белого света. Понятно, что дороже пяти долларов, но за такие деньги не очень разумно надеяться на что-то приличное. Так вот, очень интересно, что у них с параметрами на самом деле. Я бы даже сам скинулся на образец, поскольку пару тысяч долларов на аппаратик для тестов жалко отдавать :)
И парадокс близнецов, или разное течение времени, насколько я помню, обьясняют именно этим, — моложе путешественник, так как изменяет свою систему отсчёта (ускоряется).
Кстати ускорение корабля же тоже относительно Земли считается, и можно сказать, что это Земля ускоряется в обратную сторону, а корабль неподвижен или двигается с постоянной скоростью ;)
Кстати, масса тела не влияет на ускорение сближения только если пренебречь этой самой массой тела. Тело то тоже планету притягивает, пусть и пренебрежимо мало. g = Gm/r^2, для сферического тела радиусом 1м и массой 100кг выходит около 7E-9 / расстояние от центра планеты. Маловато по сравнению с 9.81 Земли, но строго говоря, зависимость есть.
Имхо зависит от конкретной вещи. Если умный браслет долго живёт на одной зарядке, не мешает, не обращает на себя внимание, когда не нужно, не боится воды, не сбоит, и при этом хоть в чём-то помогает — будь то дополнительный виброзвонок, умный будильник, или что-то ещё — то это стоящая вещь. К сожалению, удовлетворить всем этим требованиям трудно и далеко не у всех получается. Ми бэнд всем хорош например, но через полтора года работы стала сбоить синхронизация, и иногда с адейтами отваливается виброзвонок. Несмотря на это ношу, так как часто не чувствую вибратор телефона в кармане. А за пропавшее чувство «фантомного звонка» можно многое простить. Аналогично с автопилотом, «сел и заснул в дороге» пока нет ни у кого. Разве что у такси :) Вкратце — мне нужны умные вещи, стабильно и удобно делающие то, что от них нужно, и не требующие к себе особого внимания. Вот только их исчезающе мало.
Да, но обычно способ, что я написал, помогает. Диспетчер задач сразу пропадает после вызова, но если кликнуть по превью, а потом держать на превью курсор, то фокус остаётся на окне, и шоткаты работают. Панель задач остаётся видной поверх повисшей игры, если после ctrl+alt+del стараться не переводить на игру фокус. Клик не туда — и видна только повисшая игра. В целом получается неочедно, игра постоянно перехватывает фокус своим чёрным экраном, но способ работает. Не раз спасал от перезагрузки. Если совсем подробно, то:
— ctrl+alt+del, Task Manager. Игра покрывает всё чёрным фоном.
— курсор вниз, возможно ещё раз ctrl+alt+del, появляется панель задач
— не кликая, навести курсор на кнопку диспетчера. Появляется превью окна
— перевести курсор на превью и кликнуть
— игра опять всё закрывает, повторить магию появления панели задач, опять навести курсор на превью, не кликая, стрелками выбрать процесс и нажать del
Я упоминал, но видимо слишком туманно :) Берем длины волн, для которых будем всё считать, и интенсивности излучения источника света на этих же длинах волн. Выйдет примерно так в цикле:
float[iLambda] result = getLightIntensity(iLambda)*calculateSomethingLikeCDreflectionAtWawelength(iLambda);
В статье всего три длины волны, и для сложного спектра понятно что этого слишком мало. result потом подставляется в InterpolateLambdaNm из моего предыдущего комментария. getLightIntensity() — возвращает значение спектрограммы источника света для данной длины волны. У автора там просто значения интенсивностей для rgb, что маловато для сложного спектра. tldr: нужно считать всё для большого количества длин волн, особенно если спектр источника сложный, но так как это дорого, то обычно считают для трёх длин волн примерно соответствующих rgb значениям, что "прокатывает" для равномерного спектра.
Вот рассвет например:

Приспособил старый планшет в качестве дисплея.
http://www.limitlessled.com/shop/e14-dual-white-led-light-bulb/
http://www.limitlessled.com/shop/warm-white-e26-b22-e27-led-light-bulb/
Можно настраивать температуру, а CRI обещают аж до 85.9 для холодного белого света. Понятно, что дороже пяти долларов, но за такие деньги не очень разумно надеяться на что-то приличное. Так вот, очень интересно, что у них с параметрами на самом деле. Я бы даже сам скинулся на образец, поскольку пару тысяч долларов на аппаратик для тестов жалко отдавать :)
— ctrl+alt+del, Task Manager. Игра покрывает всё чёрным фоном.
— курсор вниз, возможно ещё раз ctrl+alt+del, появляется панель задач
— не кликая, навести курсор на кнопку диспетчера. Появляется превью окна
— перевести курсор на превью и кликнуть
— игра опять всё закрывает, повторить магию появления панели задач, опять навести курсор на превью, не кликая, стрелками выбрать процесс и нажать del