|
Xors3D Графический движок с поддержкой DirectX9 |
26.11.2011, 21:27
|
#271
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Странное.
Это анализ нормали.
float deg=dot(input.viewVec,input.normal);
if(deg>0.9 {diffuse=float4(1,1,0,1);}
Причем как управлять позицией мне не ясно
Это анализ расстояния от пикселя в центре солнца
float3 sunpos=50*float3(0,1,0);
float3 pixpos=input.pos2.xyz;
float3 vecpixsun=sunpos-pixpos;
float dist=length(vecpixsun);
if(dist<4){diffuse=float4(1,1,0,1)}
И, да простит меня Мока, управление позицией элементарно, диаметр тоже легко изменить, ну и контур менее зависим от геометрии небосклона.
|
(Offline)
|
|
26.11.2011, 23:44
|
#272
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Странное.
А еще эти облачка плавно меняются
Последний раз редактировалось dsd, 13.12.2011 в 22:59.
|
(Offline)
|
|
27.11.2011, 03:05
|
#273
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Странное.
Погляди на оф.форуме. Там товарищ ascii1457 уже делал шейдеры неба с солнцем. Может наведет на какие-то мысли.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.11.2011, 03:37
|
#274
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Странное.
Да и я в RUST'е делал, с изменением размера динамично исходя из положеня, ведь в зените будет маленькое..
Вот вырезки из шейдера, за стиль приношу извенения, раньше опыта и дисциплины не хватало:
VecSky.xyz = normalize(PosCam-IN.pWorld);
DotSun = pow(max(dot(VecSun,VecSky.xyz),0.0f),SizeSun);
Color.rgb += DotSun;
VecSky.xyz - это тупо вектор от центра камеры к обрабатываемому пикселю.
VecSun - это вектор (переменная), которую ты посылаешь с кода. Вектор от камеры, где солнце находится, например { 0,1,0 } - это вертикально сверху.
SizeSun нада большим числом, попробуй сперва 10f например, потом поэксперементируй, я не помню уже.
Собственно и всё. На деле всё ОЧЕНЬ просто, и можно без проблем регулировать и положение и размер, и цвет да что угодно. Не мудри с нормалями - они не стабильны, используй как предложил вектор между камерой и позицией пикселя.
Глянь RUST, я когда-то делал небо там, правда сейчас бы сделал лучше, но там неплохо закат был имхо.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.11.2011, 03:53
|
#275
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Странное.
Мока, я сделал по другому. Семантикой получаю направление света. Умножаю его на -1. Умножаю на масштаб вывернутой наизнанку сферы прикидывающейся небосводом. Це позиция светила на небесной сфере. Потом вычитая из позиции центра солнца позициею пикселя имею вектор. Длину которого узнать изноупроблем. Если длина меньше радиуса светила, то цвет подменяется на цвет солнца в этой точке.
Профит. Автоматически управляемое хорсом солнце одинакового диаметра независимо от позиции. И да, я не использую нормали, я просто рисую на сфере. Надо бы вкуриться в то как расписывают купола, но это будет уже не нормально
Просто снижение яркости картинки при взгляде на солнце это HDR? По моему это должно быть более сложным анализом картинки, основанном на 3-4 кадрах хотя бы за секунду, что ли.
|
(Offline)
|
|
27.11.2011, 04:00
|
#276
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Странное.
Сообщение от dsd
Мока, я сделал по другому. Семантикой получаю направление света. Умножаю его на -1. Умножаю на масштаб вывернутой наизнанку сферы прикидывающейся небосводом. Це позиция светила на небесной сфере. Потом вычитая из позиции центра солнца позициею пикселя имею вектор. Длину которого узнать изноупроблем. Если длина меньше радиуса светила, то цвет подменяется на цвет солнца в этой точке.
Профит. Автоматически управляемое хорсом солнце одинакового диаметра независимо от позиции. И да, я не использую нормали, я просто рисую на сфере. Надо бы вкуриться в то как расписывают купола, но это будет уже не нормально
|
Получается что тебе надо обязательно ставить сферу на положение в шейдере как и размер сферы неба? А что с триангуляцией неба? Или например заюзать хочешь кубмапу? Мой вариант имхо, более независимый от тонкостей, и выдаёт не резкий результат (края не пиксильные).
Делай не расстояние пикселя к сфере солнца, а по векторам, как предлагаю, будет то же самое что у тебя, только без пикселизации на гранях, и абсолютной не зависимости от геометрии неба (куб, сфера, да хоть плэйн перед камерой, и т.п.).
Вектор солнца - также из семантики можно без проблем вычислить - это тупо нормализированная позиция солца - позиция камеры.
UPD:
Вот сделал скрины, далёкий 2008ой..
|
(Offline)
|
|
27.11.2011, 04:08
|
#277
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Странное.
Мока, наши деревья в этом вопросе сильно разные
Говоря про пикселезацию это ты намекаешь на то, что я края у солнца не смазал? Я там собирался какой-нить сложный градиент сочинить. Я скачал твой раст, завтра буду потрошить
|
(Offline)
|
|
27.11.2011, 04:16
|
#278
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Странное.
Сообщение от dsd
Мока, наши деревья в этом вопросе сильно разные
Говоря про пикселезацию это ты намекаешь на то, что я края у солнца не смазал? Я там собирался какой-нить сложный градиент сочинить. Я скачал твой раст, завтра буду потрошить
|
Ну глянь скрины выше.
Да и это скорее я не как "лучше я думаю", а скорее с точки зрения кривости самой реализации. Если рассматривать реализацию чего-либо, алгоритма, механизма, шаблона, интерфейса, да чего угодно, то она должна как можно меньше зависеть от "потайных" правил. Например у тебя есть они - длина вектора ДОЛЖНА быть радиусом сферодомы неба. Сферодома - должна иметь достаточную триангуляцию, иначе будут артефакты.
Все эти "или", "если", и т.п. - плохой тон в любой сфере программирования. Старайся их избегать, либо реюзабельность идей и даже исходника - сомнительна и специфична, тем более другими людьми.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.11.2011, 02:55
|
#279
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Странное.
Мока, а можно машиной из Раста воспользоваться в примерах Хорса?
__________________
|
(Offline)
|
|
28.11.2011, 03:13
|
#280
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Странное.
Сообщение от .Squid
Мока, а можно машиной из Раста воспользоваться в примерах Хорса?
|
Надо у m_512 (Михаил) спросить..
|
(Offline)
|
|
28.11.2011, 09:17
|
#281
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Странное.
а вас не стремает писать сложный шейдер для фона? не проще солнышко по старинке нарисовать поверх неба? или лучше небо поверх солнца?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.11.2011, 10:01
|
#282
|
ПроЭктировщик
Регистрация: 24.07.2009
Сообщений: 142
Написано 52 полезных сообщений (для 103 пользователей)
|
Ответ: Странное.
Крутые пацаны не ищут легких путей! )
__________________
|
(Offline)
|
|
28.11.2011, 15:31
|
#283
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Странное.
Я походу придумал как можно сжульничать и обойтись текстурами без расчетов.
|
(Offline)
|
|
28.11.2011, 16:40
|
#284
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Странное.
Сообщение от HolyDel
а вас не стремает писать сложный шейдер для фона? не проще солнышко по старинке нарисовать поверх неба? или лучше небо поверх солнца?
|
Для неба, это вовсе не сложно, намного тяжелее вода, или тени, во много раз.
Можно сделать и текстурой уху, но никакой динамики толком не сделаешь, тем более зачем тебе текстура, если это тупо окружность? Тем более если хочешь использовать полноценный HDR, то использование цвета который ярче чем 1.0f, то именно процедурно это намного лучше реализовывать. Изменение размера тоже. Да и шустрее, чем выборки делать постоянные.
Вот например использовать текстуру для проекции спутников в небе - уже другой вариант, но и тут снова, если нужна реально красота и реалестичная атмосфера, тогда вообще нужно это дело делать используя атмосферный скаттеринг (подобие Volumetric Fog), чтобы атмосфера также влияла и на всё окружение (туман), и солнце уже можно делать тупо сферой в космосе, как и спутники.
В общем dsd - не занимайся извратами, серьёзно.. Это тебе пользы не принесёт.
|
(Offline)
|
|
28.11.2011, 17:10
|
#285
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Странное.
Книга Притчи > Глава 21 > Стих 29:
Человек нечестивый дерзок лицом своим, а праведный держит прямо путь свой.
Книга Притчи > Глава 28 > Стих 10:
Совращающий праведных на путь зла сам упадет в свою яму, а непорочные наследуют добро.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:07.
|