![]() |
Ответ: Странное.
Цитата:
//кос угла между нормалью и вертикалью float degcos=dot(norm,float3(0.0f,1.0f,0.0f)); Чем ближе к 1 тем значит горизонтальней поверхность. Плюс разделение по высоте. Мока, сходи в лес, отойди от опушки вглубь метров на писят хотяб. И присмотрись внимательней к первой и последней картинкам якобы опровергающим мои слова. А третья это не лес. Лес это когда деревья сверху касаются ветвями. |
Ответ: Странное.
Цитата:
Также в Великобританских (Wales, Scotland, England) и Французских (Север и немного юг) лесах был. Цитата:
Это всё относиться к траве. И говоря про лесную траву, я имел именно землю с гниющей древесиной и и травой, а не такой как в поле или в парке. |
Ответ: Странное.
Ок, ты меня победил :) Но в лес сходи все же :D, только поглубже, там трава бывает только ранней весной, пока листва не отрастет.
|
Ответ: Странное.
Цитата:
Вот в деревне у меня, есть сосновая роща, так там ни травинки радиусом на 300 метров где-то. Т.к. сосны очень высокие, у них даже ниже серидины по высоте веток нету, т.к. там света тоже нет. Но такой лес - специфика. А если у тебя горная поверхность, то там будут и просветы, и полянки, и опушечки, и трава и земля, очень разнообразно будет. :) |
Ответ: Странное.
Цитата:
адрес близарда или бесезды не предлагать :) |
Ответ: Странное.
Цитата:
|
Ответ: Странное.
Цитата:
По поводу кода, что-то снова чувство что это дело можно было хорошенько сократить циклами. С нормалями что-то странное. Кстати, если правильно обработать, и определить по какой лучше диагонали сгибать два триангла в кваде, то можно правильно подобрать чтобы этих не красивостей с нормалями не было. |
Ответ: Странное.
Я не верю в голый энтузиазм.
Я почему то считаю, что один цикл и восемь выполняются разное время, и один выполнится быстрей. С нормалями можно наверно выбирать точку посередине диагонали и смотреть угол между векторами от этой точки к вершинам образующим другую диагональ и выбирать с максимальным. Это довольно легко можно у меня сделать. Или еще лучше, смотреть перепад высот между точками на диагоналях и пускать диагональ по максимальному перепаду. Кстати я пытался нормаль считать по всем точкам вокруг, но разницы от четырех не было, наверно нужно просто циклом сглаживать разницу между нормалями и все станет ок. |
Ответ: Странное.
А расскажите теорию такого шейдера, чтобы рисовать на поверхности. Как у dsd. Сам хочу написать
вот скачал я шейдер который написал dsd но нихера в нем не понял. можт есть че почитать на эту тему? |
Ответ: Странное.
А че там не понятного то? Смотри: Первое я сделал текстуру. В этой текстуре 4 ряда и четыре колонки. Ряды это текущая местность по высоте, а столбцы отображают деградацию текстуры от уклона, ведь чем больше уклон тем "хуже" выглядит поверхность. Теперь по самому шейдеру. 1. В вертексном дополнительно передается мировой игрек не умноженный ни на че, это тот же игрек что и в хорсе. 2. В пиксельном происходит первичный анализ этой высоты для выбора строки в текстуре. Далее выбранная строка передается в функцию которая анализируя отклонение вектора нормали поверхности от вертикали определяет столбец текстуры. Это если в кратце. Но так на границах слоев, как по нормалям так и по высотом наблюдаются очень четкие и уродские швы. То мой шейдер производит смешивание сначала слоев по нормалям, а затем и по высотам. Если все еще не понятно, то пость кусок моего шейдера, а я детально скажу, что в том куске происходит. |
Ответ: Странное.
с эти ясно.. как получается отобразить какойто кусок текстуры полностью вот не понятно... ведь если плоскость у которой высота например равна 1, то я хочу рисовать текстуру травы смешивая с текстурой земли... мне получается нужно еще както считать UVW координаты текстуры :4to:
|
Ответ: Странное.
Ну дополнительно нужно и меш в хорсе подготовить. Надо назначить всем точкам окрашиваемого меша текстурные координаты u=worldx v=worldz
В шейдере потом надо найти дробную часть от этих координат и поделить на четыре(по числу моих столбцов) получатся текстурные координаты в пределах лоскутка. |
Ответ: Странное.
![]() Встроенные тени в хорсе круты неимоверно. Я так понял это теневые объемы. Но блин это не под мое кол-во полигонов. :( Дайте шейдер под хорс который шадомапу строит. Даже точней разъясните мне как я могу в текстуру записать буфер глубины с позиции источника света. И потом как узнать в пиксельном шейдере какому пикселю рендера шадовмапы соответствует текущий пиксель обычного рендера. Это надо иметь две камеры? и просто в вершинном дополнительно передавать координаты мировые умноженные на матрицу проекции теневой камеры? И это типо будут координаты в текстуры шадомапы. Вот допустим для рендера с позиции света, я отрубаю нахрен все шейдеры и текстуры кроме тех, что с прозрачностью. Создаю xCreateDSS (1024,1024 ) ; Handle shadowmap=xCreateTexture(1024,1024,256) Потом делаю рендер. В DSS, я так понимаю, появляется мой буфер глубины с позиции света. Теперь что бы прописать его в текстуру я должен типа как постэффектом пройтись, где уже в текстуру буду писать значение глубины буфера ? Или наложить на все объекты шейдер который в цвет запишет расстояние от света до пикселей? А? |
Ответ: Странное.
нет. это не теневые объемы. чтобы в текстуру записать глубину с позиции источника света - надо рендерить мир с позиции источника света. текстура должна быть подходящей. 32F например. ну или можно как то хитро собирать в обычную. и распаковывать обратно.
Цитата:
|
Часовой пояс GMT +4, время: 22:32. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot