forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Наложение нескольких текстур на загружаемый Mesh (http://forum.boolean.name/showthread.php?t=19589)

MOrtAl44444 25.12.2014 23:31

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 1
Короч в опу шейдеры...пока что
Поделил весь террайн на 36 регионов, в 3ds max сделал текстуры для каждого и получилось вот что:
FPS 81 - временно без оптимизации

dsd 25.12.2014 23:42

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 1


Ты что то типа этого замутить пытался?

Код:

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;
}


Arton 25.12.2014 23:49

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от MOrtAl44444 (Сообщение 291069)
сделал текстуры для каждого

Тогда лучше тайлами.

MOrtAl44444 26.12.2014 00:11

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Ты что то типа этого замутить пытался?
Да, что-то типа)

Izunad 26.12.2014 00:42

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от MOrtAl44444 (Сообщение 291069)
Короч в опу шейдеры

Зря ты так про шейдеры :(

MOrtAl44444 26.12.2014 01:02

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от Izunad (Сообщение 291074)
Зря ты так про шейдеры :(

я ведь написал "пока что"
Следующая по плану вода - она с шейдером )

MOrtAl44444 30.12.2014 14:40

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 2
Мож кто знает более совершенную формулу расположения травы( и не только травы) по вертексам Меша ?

У меня так:
PHP код:

Function LoadGrass()
grass_terr xLoadMesh("grass.3ds")  
xEntityFX grass_terr16 Or 1
xScaleEntity grass_terr
500400500

surf_terr1 
xGetSurface(terr10)
For 
j=-10 To 10 Step 1
    
For i=-10 To 10 Step 1
    
    grass_brush_rnd 
Rnd(0,1)
    If 
grass_brush_rnd 
           xEntityColor grass_terr
9912939
    
Else
           
xEntityColor grass_terr12318038
    
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 Goto zz2

      xPositionEntity grasst1
\grass_t1grasst1\xxgrasst1\yygrasst1\zz
    Next
Next
End 
Function 

,где terr_x = 200, terr_y = 170, terr_z = 200 - scale значения меша(terr1) ( во-сколько раз увеличен )

Mr_F_ 30.12.2014 15:18

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
может лучше не по мешу а просто по карте высот? генеришь рандомную позицию в прямоугольнике, находишь её высоту и ставишь.

алсо пучки травы лучше по максимуму склеивать в единый меш, а то проц подавится.

MOrtAl44444 30.12.2014 15:24

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от Mr_F_ (Сообщение 291220)
может лучше не по мешу а просто по карте высот? генеришь рандомную позицию в прямоугольнике, находишь её высоту и ставишь.

алсо пучки травы лучше по максимуму склеивать в единый меш, а то проц подавится.

Хм, ща попробую....и не откажусь еще от идей))

MOrtAl44444 07.01.2015 00:08

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Протестируйте на FPS у себя пожалуйста )
В файле Settings.ini можно менять настройки.

1) Показатель FPS при ваших максимальных настройках
2) FPS при оптимальной настройке для вашего железа

Жду ваших советов по оптимизации...что следует исправить или добавить...баги

P.S. над гравитацией пока что особо не парился
http://dropmefiles.com/fHbSs

tirarex 07.01.2015 00:33

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Грузится долго , при стандартных настройках фпс 65-140.
Накрутил на максимум , 8-15 но трава прикольная.
Как я понял ты просто прячешь растения дальше небольшого радиуса ?

Вообще в примерах ксорса есть пример инстансинга , так же траву надо объединять в 1 меш.

Arton 07.01.2015 00:35

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от MOrtAl44444 (Сообщение 291385)
Протестируйте на 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, хз как там можно настроить мип-мап, проще текстуру схоронить.

MOrtAl44444 07.01.2015 00:44

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от tirarex (Сообщение 291388)
Как я понял ты просто прячешь растения дальше небольшого радиуса ?

Вообще в примерах ксорса есть пример инстансинга , так же траву надо объединять в 1 меш.

Да прячу
В 1 меш? а чтобы не нужные элементы меша скрывать - это нужно по чайлдам пробегать потом?

tirarex 07.01.2015 00:51

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от MOrtAl44444 (Сообщение 291390)
Да прячу
В 1 меш? а чтобы не нужные элементы меша скрывать - это нужно по чайлдам пробегать потом?

В общем , лучшее решение - как в Minecraft.
Там все чанками , допустим 5х5 метров.
Погугли BlitzGrass , там уже все за тебя сделали , и достаточно качественно.
https://www.dropbox.com/s/eqye7v9jda...52.09.png?dl=0

MOrtAl44444 08.01.2015 18:57

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 1
Добавил облака :)
Следующее создание норм текстуры для террайна

Цитата:

ну и елки поменять нужно


Часовой пояс GMT +4, время: 00:05.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot