HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Как добавить полноцветные текстуры в Gold Source
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
avegamer
Житель форума

Дата регистрации: Aug 2010
Проживает: ___
Сообщений: 119
Возраст: 38

Рейтинг



Half-Life Как добавить полноцветные текстуры в Gold Source

Где можно найти тутор или другую информацию по добавлению 32-битных текстур в Gold Source

__________________
[XDaemon dev.]

Сообщить модератору | | IP: Записан
Сообщение: 122661

Старое сообщение 15-07-2013 10:59
- За что?
Qwertyus
Житель форума

Группа: Неопытный
Дата регистрации: Apr 2006
Проживает: На берегу очень дикой реки
Сообщений: 815

Рейтинг



Если для обычного ХЛ, то действующий пример можно увидеть здесь:
http://www.moddb.com/mods/half-life...ld-singleplayer

Текстуры в вадах делаются равномерно-серыми (чтобы не создавать эффект наложения), а заменяющие их HD-текстуры (в формате TGA) подставляются методом подстановки detail-текстур. Для каждой карты создаётся одноимённый _detail.txt, в котором прописывается размещение и параметры наложения текстур. Основная папка для размещения detail-текстур - gfx, но можно положить их в любую папку внутри gfx, указав это в _detail.txt. И текстуры подставляются 24-битные, обычный полноцвет, а не 32-битные (с альфаканалом).

В _detail.txt общим списком через табуляцию указываются имя исходной текстуры в ваде, путь и имя TGA-текстуры, масштаб текстуры по ширине и высоте.

Для включения детальных текстур в игре используется консольная команда r_detailtextures 1, доступна только в Steam-версии ХЛ.

В Ксаше автоматически подставляются текстуры, имеющие одинаковое имя с исходным именем текстуры, без дополнительных конфигурационных файлов. Текстуры кладутся в папку materials\common\ (для применения данных текстур к любым картам), или materials\имя_карты\ (для применения данных текстур к конкретной карте). Текстуры для декалей размещаются в папке materials\decals\. Текстуры для моделей - в папке materials\models\имя_модели\ (для каждой отдельной модели свой отдельный набор текстур). Текстуры должны быть в формате TGA. Для транспарентных текстур (имеющим прозрачность) следует использовать 32-битные TGA с альфа-каналом. Остальные текстуры - 24-битные.

Для включения HD-текстур в игре используется консольная команда host_allow_materials 1 (или просто зайти в меню видеоопций и поставить галочку на пункте "Allow materials"), после чего следует перезапустить игру.

Действующий пример использования HD-текстур под Ксашем - Quake Remake + пак текстур QRP:
http://www.moddb.com/games/quake-re...v10-sfx-archive
http://www.moddb.com/mods/quake-rem...hd-textures-v10

Сообщить модератору | | IP: Записан
Сообщение: 122675

Старое сообщение 15-07-2013 13:33
- За что?
avegamer
Житель форума

Дата регистрации: Aug 2010
Проживает: ___
Сообщений: 119
Возраст: 38

Рейтинг



TGA занимает много места, если бы формат PNG или DDS

__________________
[XDaemon dev.]

Сообщить модератору | | IP: Записан
Сообщение: 122677

Старое сообщение 15-07-2013 16:49
- За что?
PLut
Creator

Дата регистрации: Jun 2009
Проживает: Санкт-Петербург
Сообщений: 1220
Возраст: 29

Рейтинг



avegamer Юзай трините (Trinity Renderers), там dds.

__________________
Base Defense on Steam, ModDB

Сообщить модератору | | IP: Записан
Сообщение: 122679

Старое сообщение 15-07-2013 16:51
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12893
Возраст: 32

Рейтинг



Вот выкладываю загрузчик CrazyRussian, кидать в клиентку.
Формат TGA.

Вложение: gl_texloader.zip (2.3 кб)
Этот файл был скачан 288 раз.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Сообщить модератору | | IP: Записан
Сообщение: 122680

Старое сообщение 15-07-2013 17:03
- За что?
pein
Житель форума
Девойс

Дата регистрации: Dec 2012
Проживает: Iv*Team
Сообщений: 100
Возраст: 26

Рейтинг



PLut DDS бесполезен. Он не робит

Сообщить модератору | | IP: Записан
Сообщение: 122683

Старое сообщение 15-07-2013 17:46
- За что?
avegamer
Житель форума

Дата регистрации: Aug 2010
Проживает: ___
Сообщений: 119
Возраст: 38

Рейтинг



а что означает gEngfuncs.GetEntityByIndex(0) в сравнении с gEngfuncs.GetEntityByIndex(1)

__________________
[XDaemon dev.]

Сообщить модератору | | IP: Записан
Сообщение: 122687

Старое сообщение 15-07-2013 19:02
- За что?
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2088

Рейтинг



avegamer gEngfuncs.GetEntityByIndex(0) возвращает мир

__________________
-Brain is dead-

Сообщить модератору | | IP: Записан
Сообщение: 122688

Старое сообщение 15-07-2013 19:21
- За что?
avegamer
Житель форума

Дата регистрации: Aug 2010
Проживает: ___
Сообщений: 119
Возраст: 38

Рейтинг



То есть что-бы определить текстуры для мира нужно использовать

model_t *world = gEngfuncs.GetEntityByIndex(0)->model

а текстуры для модели --

cl_entity_s *view = gEngfuncs.GetViewModel() ???

__________________
[XDaemon dev.]

Сообщить модератору | | IP: Записан
Сообщение: 122691

Старое сообщение 15-07-2013 19:33
- За что?
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2088

Рейтинг



avegamer ViewModel это руки с пушкой

__________________
-Brain is dead-

Сообщить модератору | | IP: Записан
Сообщение: 122697

Старое сообщение 15-07-2013 20:44
- За что?
avegamer
Житель форума

Дата регистрации: Aug 2010
Проживает: ___
Сообщений: 119
Возраст: 38

Рейтинг



А каким образом определить текстуры энтити

__________________
[XDaemon dev.]

Сообщить модератору | | IP: Записан
Сообщение: 122700

Старое сообщение 15-07-2013 20:56
- За что?
pRoxxx
Житель форума

Дата регистрации: Jan 2011
Проживает: UA DP
Сообщений: 360
Возраст: 32

Рейтинг



Цитата:
avegamer писал:
А каким образом определить текстуры энтити

А у энтити как бэ и нету текстур, у энтити может быть браш модель, а у браш модели фейсы а вот у фейсов есть идекс в texinfo_t, а от туда в miptex_t если надо имя текстуры. Смерть Кащея в игле, игла в яйце, яйцо в утке, утка в зайце, заяц как бэ в шоке!

Сообщить модератору | | IP: Записан
Сообщение: 122702

Старое сообщение 15-07-2013 21:27
- За что?
avegamer
Житель форума

Дата регистрации: Aug 2010
Проживает: ___
Сообщений: 119
Возраст: 38

Рейтинг



Что-то получилось, но нужно проверить. Спасибо FiEctro
Пока что только tga и world-текстуры

Делал так:

новый файл gl_texloader.cpp

//**************************************
#include "hud.h"
#include "cl_util.h"
#include "com_model.h"

#include <windows.h>
#include <gl/gl.h>
#include <gl/glext.h>

#pragma warning(disable:4018)

#pragma pack(push,1)

void UploadWorldHDTextures(void);

typedef struct
{

byte identsize; // size of ID field that follows 18 byte header (0 usually)
byte colourmaptype; // type of colour map 0=none, 1=has palette
byte imagetype; // type of image 0=none,1=indexed,2=rgb,3=grey,+8=rle packed

short colourmapstart; // first colour map entry in palette
short colourmaplength; // number of colours in palette
byte colourmapbits; // number of bits per palette entry 15,16,24,32

short xstart; // image x origin
short ystart; // image y origin
short width; // image width in pixels
short height; // image height in pixels
byte bits; // image bits per pixel 8,16,24,32
byte descriptor; // image descriptor bits (vh flip bits)

} TGA_HEADER;
#pragma pack(pop)

int glLoadTga(char* name,int dest)
{
// Длина файла и буфер для него
int len;
byte*buff=gEngfuncs.COM_LoadFile(name,5,&len); // Грузим файл


int width,height; // Размеры картинки
TGA_HEADER hdr; // Заголовок файла

if (!buff) // Если буфер=0, то файл не найден
{
return 0;
}
// Копируем заголовок в отдельную переменную
memcpy(&hdr,&buff[0],18);

width=hdr.width;
height=hdr.height;

// Предполагаем, что у нас 24-битная картинка
int type=GL_RGB;
int bpp;
// Проверяем это
switch(hdr.bits)
{
case 24:
bpp=3;
break;
case 32:
type=GL_RGBA;
bpp=4;
break;
default:
gEngfuncs.Con_Printf("glLoadTga(): file %s has unsupported bpp num: %d !\n",hdr.bits);
return -1;
}
int imgsize=width*height*bpp;
byte temp;

// Преобразуем BGR в RGB
for(int i=18; i<int(imgsize); i+=bpp)
{
temp=buff[i];
buff[i]=buff[i+2];
buff[i+2] = temp;
}

byte*oldbuff=(byte*)malloc(imgsize);

memcpy(oldbuff,&buff[18],imgsize);

int dest_offset=18;

for(i=height-1;i>=0;i--)
{
byte*src_line=&oldbuff[width*bpp*i];

memcpy(&buff[dest_offset],src_line,width*bpp);
dest_offset+=width*bpp;
}

free(oldbuff);

static unsigned int iRet;


glBindTexture(GL_TEXTURE_2D, dest); // Делаем её текущей
// настраиваем тип маппинга
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glHint( GL_GENERATE_MIPMAP_HINT_SGIS, GL_NICEST );
glTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE );
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, type,width,height,0, type, GL_UNSIGNED_BYTE, &buff[18]);

gEngfuncs.COM_FreeFile(buff);

return dest;

}

void UploadWorldHDTextures()
{

model_t*world=gEngfuncs.GetEntityByIndex(0)->model;

char file_path[512];
memset(&file_path[0], 0, 512);

for(int i=0;i<world->numtextures;i++)
{
sprintf(file_path, "textures/%s.tga",world->textures[i]->name);

glLoadTga(file_path,world->textures[i]->gl_texturenum);
}

}
//***********************************************


В файле tri.cpp добавить

extern void UploadWorldHDTextures(void);

и в функции void DLLEXPORT HUD_DrawTransparentTriangles( void ) добавить

UploadWorldHDTextures();

__________________
[XDaemon dev.]

Отредактировано avegamer 16-07-2013 в 08:33

Сообщить модератору | | IP: Записан
Сообщение: 122712

Старое сообщение 16-07-2013 08:15
- За что?
pRoxxx
Житель форума

Дата регистрации: Jan 2011
Проживает: UA DP
Сообщений: 360
Возраст: 32

Рейтинг



Классно только что если TGA будет RLE? Или что если видеокарта не поддерживает GL_GENERATE_MIPMAP_SGIS?

Сообщить модератору | | IP: Записан
Сообщение: 122714

Старое сообщение 16-07-2013 08:24
- За что?
avegamer
Житель форума

Дата регистрации: Aug 2010
Проживает: ___
Сообщений: 119
Возраст: 38

Рейтинг



Небольшие изменения.
После extern void UploadWorldHDTextures(void); ещё нужно добавить

bool HDTexturesLoaded = false;

а в функции void DLLEXPORT HUD_DrawTransparentTriangles( void ) вместо
UploadWorldHDTextures(); вставить следующее

if ( !HDTexturesLoaded )
{
UploadWorldHDTextures();
HDTexturesLoaded = true;
}


Не знаю, но почему-то работает только в сингле

__________________
[XDaemon dev.]

Отредактировано avegamer 16-07-2013 в 08:48

Сообщить модератору | | IP: Записан
Сообщение: 122716

Старое сообщение 16-07-2013 08:42
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 22:00. Новая тема    Ответить
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Как добавить полноцветные текстуры в Gold Source
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024