|
Xors3D Графический движок с поддержкой DirectX9 |
25.12.2014, 23:31
|
#16
|
Нуждающийся
Регистрация: 28.12.2010
Сообщений: 55
Написано одно полезное сообщение
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Короч в опу шейдеры...пока что
Поделил весь террайн на 36 регионов, в 3ds max сделал текстуры для каждого и получилось вот что:
FPS 81 - временно без оптимизации
|
(Offline)
|
|
25.12.2014, 23:42
|
#17
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Ты что то типа этого замутить пытался?
uniform sampler2D texture0;
uniform sampler2D texture1;
uniform sampler2D texture2;
uniform sampler2D texture3;
in vec3 fragmentn;
in vec2 fragmentuv;
in vec3 lightvec;
out vec4 color;
void main(void) {
float diff = dot(fragmentn,normalize(lightvec));
//получаю отклонение нормали от вертикали
float v_diff = dot(fragmentn, vec3 (0.0f,1.0f,0.0f));
//...
float disp=0.0f;
vec4 diffuse;
vec4 diffuse1;
vec4 diffuse2;
if(v_diff>0.95){diffuse = texture(texture0,fragmentuv);}
if(v_diff>0.91 && v_diff<=0.95){
diffuse2 = texture(texture1,fragmentuv);
diffuse1 = texture(texture0,fragmentuv);
diffuse=mix(diffuse1,diffuse2,25*(0.95-v_diff));}
//если местность имеет небольшой уклон
if(v_diff>0.88 && v_diff<=0.91){diffuse = texture(texture1,fragmentuv);}
if(v_diff>0.84 && v_diff<=0.88){
diffuse2 = texture(texture2,fragmentuv);
diffuse1 = texture(texture1,fragmentuv);
diffuse=mix(diffuse1,diffuse2,25*(0.88-v_diff));}
//если местность имеет большой уклон
if(v_diff>0.79 && v_diff<=0.84){diffuse = texture(texture2,fragmentuv);}
if(v_diff>0.75 && v_diff<=0.79){
diffuse2 = texture(texture3,fragmentuv);
diffuse1 = texture(texture2,fragmentuv);
diffuse=mix(diffuse1,diffuse2,25*(0.79-v_diff));}
//если местность имеет пипец большой уклон
if(v_diff<=0.75){diffuse = texture(texture3,fragmentuv);}
color = diffuse*diff;
}
|
(Offline)
|
|
25.12.2014, 23:49
|
#18
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Сообщение от MOrtAl44444
сделал текстуры для каждого
|
Тогда лучше тайлами.
|
(Offline)
|
|
26.12.2014, 00:11
|
#19
|
Нуждающийся
Регистрация: 28.12.2010
Сообщений: 55
Написано одно полезное сообщение
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Ты что то типа этого замутить пытался?
|
Да, что-то типа)
|
(Offline)
|
|
26.12.2014, 00:42
|
#20
|
ПроЭктировщик
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений (для 91 пользователей)
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Сообщение от MOrtAl44444
Короч в опу шейдеры
|
Зря ты так про шейдеры
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
26.12.2014, 01:02
|
#21
|
Нуждающийся
Регистрация: 28.12.2010
Сообщений: 55
Написано одно полезное сообщение
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Сообщение от Izunad
Зря ты так про шейдеры
|
я ведь написал "пока что"
Следующая по плану вода - она с шейдером )
|
(Offline)
|
|
30.12.2014, 14:40
|
#22
|
Нуждающийся
Регистрация: 28.12.2010
Сообщений: 55
Написано одно полезное сообщение
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Мож кто знает более совершенную формулу расположения травы( и не только травы) по вертексам Меша ?
У меня так:
Function LoadGrass() grass_terr = xLoadMesh("grass.3ds") xEntityFX grass_terr, 16 Or 1 xScaleEntity grass_terr, 500, 400, 500
surf_terr1 = xGetSurface(terr1, 0) For j=-10 To 10 Step 1 For i=-10 To 10 Step 1 grass_brush_rnd = Rnd(0,1) If grass_brush_rnd = 1 xEntityColor grass_terr, 99, 129, 39 Else xEntityColor grass_terr, 123, 180, 38 EndIf
grasst1.grass_terr1 = New grass_terr1 grasst1\grass_t1 = xCopyEntity(grass_terr) .xx1 grasst1\xx = xVertexX(surf_terr1,Rnd(1,1682))*terr_x+xMeshWidth(terr1) .yy1 .yy2 grasst1\yy = xVertexY(surf_terr1,Rnd(1,1682))*terr_y+xMeshHeight(terr1) .zz1 .zz2 grasst1\zz = xVertexZ(surf_terr1,Rnd(1,1682))*terr_z+xMeshDepth(terr1) If grasst1\xx > -5000 Goto xx1 If grasst1\yy > 35000 Goto yy1 If grasst1\yy < 22000 Goto yy2 If grasst1\zz > 120000 Goto zz1 If grasst1\zz < 0 Goto zz2
xPositionEntity grasst1\grass_t1, grasst1\xx, grasst1\yy, grasst1\zz Next Next End Function
,где terr_x = 200, terr_y = 170, terr_z = 200 - scale значения меша(terr1) ( во-сколько раз увеличен )
|
(Offline)
|
|
30.12.2014, 15:18
|
#23
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
может лучше не по мешу а просто по карте высот? генеришь рандомную позицию в прямоугольнике, находишь её высоту и ставишь.
алсо пучки травы лучше по максимуму склеивать в единый меш, а то проц подавится.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.12.2014, 15:24
|
#24
|
Нуждающийся
Регистрация: 28.12.2010
Сообщений: 55
Написано одно полезное сообщение
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Сообщение от Mr_F_
может лучше не по мешу а просто по карте высот? генеришь рандомную позицию в прямоугольнике, находишь её высоту и ставишь.
алсо пучки травы лучше по максимуму склеивать в единый меш, а то проц подавится.
|
Хм, ща попробую....и не откажусь еще от идей))
|
(Offline)
|
|
07.01.2015, 00:08
|
#25
|
Нуждающийся
Регистрация: 28.12.2010
Сообщений: 55
Написано одно полезное сообщение
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Протестируйте на FPS у себя пожалуйста )
В файле Settings.ini можно менять настройки.
1) Показатель FPS при ваших максимальных настройках
2) FPS при оптимальной настройке для вашего железа
Жду ваших советов по оптимизации...что следует исправить или добавить...баги
P.S. над гравитацией пока что особо не парился
http://dropmefiles.com/fHbSs
|
(Offline)
|
|
07.01.2015, 00:33
|
#26
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Грузится долго , при стандартных настройках фпс 65-140.
Накрутил на максимум , 8-15 но трава прикольная.
Как я понял ты просто прячешь растения дальше небольшого радиуса ?
Вообще в примерах ксорса есть пример инстансинга , так же траву надо объединять в 1 меш.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.01.2015, 00:35
|
#27
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Сообщение от MOrtAl44444
Протестируйте на FPS у себя пожалуйста )
В файле Settings.ini можно менять настройки.
1) Показатель FPS при ваших максимальных настройках
2) FPS при оптимальной настройке для вашего железа
Жду ваших советов по оптимизации...что следует исправить или добавить...баги
P.S. над гравитацией пока что особо не парился
http://dropmefiles.com/fHbSs
|
1) ~15
2) Оптимальные? Это сколько? Для меня оптимальный ФПС 60 - 75 (частота моего монитора).
Поставил настройки: 2, 1, 3000, и фпс стал ~60, я думал нашёл оптимальное значение, но пока заходил в глубь карты фпс падал, 48, 40, 35. В одну сторону повернёшься — 50, в другую 30, очень нестабильно.
При минимуме (по умолчанию), фпс <300, и камера стала быстрой.
CPU — AMD FX 6100 3.30GHz 6 core
GPU — Palit GF 450 GTS 1Gb
RAM — 4Gb
OS — Windows 7 64 SP1
P. S. Используй маску вместо альфы, трава с деревьями сливается. У хорса проблемы с мип-мапом в режиме маски (альфы?), по этому советую dds с настроенным лодом.
P. P. S. Ты юзаешь шейдер и текстуры грузятся им? Юзай dds, хз как там можно настроить мип-мап, проще текстуру схоронить.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.01.2015, 00:44
|
#28
|
Нуждающийся
Регистрация: 28.12.2010
Сообщений: 55
Написано одно полезное сообщение
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Сообщение от tirarex
Как я понял ты просто прячешь растения дальше небольшого радиуса ?
Вообще в примерах ксорса есть пример инстансинга , так же траву надо объединять в 1 меш.
|
Да прячу
В 1 меш? а чтобы не нужные элементы меша скрывать - это нужно по чайлдам пробегать потом?
|
(Offline)
|
|
07.01.2015, 00:51
|
#29
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Сообщение от MOrtAl44444
Да прячу
В 1 меш? а чтобы не нужные элементы меша скрывать - это нужно по чайлдам пробегать потом?
|
В общем , лучшее решение - как в Minecraft.
Там все чанками , допустим 5х5 метров.
Погугли BlitzGrass , там уже все за тебя сделали , и достаточно качественно.
https://www.dropbox.com/s/eqye7v9jda...52.09.png?dl=0
|
(Offline)
|
|
08.01.2015, 18:57
|
#30
|
Нуждающийся
Регистрация: 28.12.2010
Сообщений: 55
Написано одно полезное сообщение
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Добавил облака
Следующее создание норм текстуры для террайна
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:04.
|