Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты C++

Ответ
 
Опции темы
Старый 30.03.2009, 06:08   #586
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

ну да. за экран выходит. но и в блице тоже выходит за экран. т.е. в том примере если бы даже объект не было видно (например он справа за экраном) кусок текста все равно бы торчал.

но это работает только до тех пор, пока объект ПЕРЕД камерой - когда он ЗА камерой - результат не определен.
у меня скорее всего будет два варианта определения видимости объекта (аналог EntityInView)
1 - на основе фрустум куллинга (плоскости отсечения тоже считаются)
2 - на основе попиксельного запроса (т.е будет рисоваться объект, и считаться сколько пикселей прошли Z-тест, если больше 0 - объект видим).
естественно 1 намного быстрее 2.

Последний раз редактировалось HolyDel, 30.03.2009 в 06:13.
(Offline)
 
Ответить с цитированием
Старый 30.03.2009, 11:35   #587
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Sigel

Сообщение от MoKa Посмотреть сообщение
HolyDel, дык в блице функция возвращения видим/нет, отдельна ведь (EntityInView).
Хотя там ведь вроде если не в камере, тогда будут по нулям возвращаться?
А у тебя как понял будет за экран выходить? Если да - то это очень удобно!
В блитце также есть аппликата проекции, представляющая из себя булево состояние, описанное ХолиДелом.
Насколько я помню, EntityInView определяет видимость объекта в камере, т.е. в некоем конусе видимости, доступном камере (бокового зрения у неё нет). ProjectedZ() же свидетельствует о позиции объекта по локальной оси аппликат относительно камеры в разбросе 1;0.
Т.е. для двигающихся линией ботов каждый имеет истинную аппликату для каждого, но ложную сущность_во_взгляде.

/|\ /|\
/ \ / \
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
HolyDel (30.03.2009), moka (31.03.2009), SBJoker (30.03.2009)
Старый 30.03.2009, 14:55   #588
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

аналог EntityInView сделал.
пример:
if(megaboss->InView())
  terribly++;
else
  terribly = max(0,terribly-1);
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
h1dd3n (30.03.2009)
Старый 31.03.2009, 18:01   #589
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Ответ: Sigel

ммм... а InView чего? Кто его видит? У меня, к приимеру, это идёт как Entity::InView(Camera cam) и проверяет, видит ли эту ентитю указанная камера.
__________________
Я бы изменил мир, но Бог не даёт исходников...
(Offline)
 
Ответить с цитированием
Старый 31.03.2009, 18:08   #590
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

-=Jack=-, и то правда. я просто пока с многокамерами не возился. а так да, по идее надо задавать камеру.
(Offline)
 
Ответить с цитированием
Старый 01.04.2009, 15:19   #591
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

добавил 4 новых типа блендинга.

const int BM_DETAIL = 5;
const int BM_MAX = 6;
const int BM_MIN = 7;
const int BM_DECAL = 8;
BM_DETAIL аналог блицового 5-ого режима блендинга. т.е. двойное умножение. годится в первую очередь для detail карт, потому и константа так называется.

BM_MAX, BM_MIN я думаю из названия понятно. выбирается соотвесвенно максимальное и минимальное значение компоненты пикселя. того, который рисуем и того, на котором рисуем. аналог lighter color и darker color из фотошопа.

BM_DECAL - нужен для записи в текстуру с альфой. цвет пишется как с обычной полупрозрачностью. а альфа складывается.

Последний раз редактировалось HolyDel, 01.04.2009 в 20:48.
(Offline)
 
Ответить с цитированием
Старый 01.04.2009, 23:42   #592
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Sigel

DETAIL переименуй на OVERLAY, так более интуитивно понятно. Сужу по разным графическим редакторам и т.д. OVERLAY подрузумевается под перемножением.

FFP развиваешь? Я бы делал ставку на более непривязанные фичи чем к FFP, всёравно нынче FFP не используется практически вообще..
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (02.04.2009)
Старый 02.04.2009, 00:25   #593
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

ок. пусть будет BM_OVERLAY
это не только для FFP.
(Offline)
 
Ответить с цитированием
Старый 02.04.2009, 03:21   #594
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

сделал дополнительный набор текстурных координат.
создать набор можно так:

somesurface->AddTexCoordsLayer(index);
index может быть от 1 до 31. для максимальной производительности они должны идти по порядку.
т.е не так, что есть 2, 7 и 26 слой тк. а лучше 1,2,3. (хотя можно и 2,7 и 26).

	sfloor->MakeQuad(34.0f,8.0f);

	sfloor->Lock();

	sfloor->AddTexCoordsLayer(1);
	sfloor->VertexUV(1,0,0,0);
	sfloor->VertexUV(1,1,1,0);
	sfloor->VertexUV(1,2,0,1);
	sfloor->VertexUV(1,3,1,1);

	sfloor->UnLock();
в данном случае 34 -это размер квада. а 8 - множитель тк. т.е на этом кваде тексткура первого юнита будет повторяться 8 раз.

дальше добавляется второй текстурный юнит и задаются UV координаты для всех вершин.
(Offline)
 
Ответить с цитированием
Старый 02.04.2009, 04:37   #595
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Sigel

Как понял функция VertexUV(Layer%,Vertex%,U#,V#)? А где W позабыл? Часто в шейдерах юзается в виде индексов (я юзал для инстансинга). Плюс для 3D текстур нужен будет.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (02.04.2009)
Старый 02.04.2009, 04:48   #596
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

эээ. нету его. пока. спасибо за замечание.
скорее всего тогда будет не
sfloor->AddTexCoordsLayer(1);
а
sfloor->AddTexCoordsLayer(1,n);
где n число от 1 до 4 - число компонент на одну тк. для 3д тк - нужно указать 3.

второй параметр задает кол-во компонент у тк.

Последний раз редактировалось HolyDel, 02.04.2009 в 17:43.
(Offline)
 
Ответить с цитированием
Старый 02.04.2009, 06:08   #597
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

добавил возможность работы с 2д фигурами.

в аттаче пример.

в примере space - менять режим отрисовки.
динамический или статический.
в фигуре 128 трисов. 128*3 вершин.
за кадр рендерятся 100 таких фигур.
Миниатюры
Нажмите на изображение для увеличения
Название: ShapeTestScreen.jpg
Просмотров: 617
Размер:	256.8 Кб
ID:	5764  
Вложения
Тип файла: zip ShapesTest.zip (134.6 Кб, 385 просмотров)
(Offline)
 
Ответить с цитированием
Старый 03.04.2009, 02:04   #598
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Ответ: Sigel

фпс - 200/600
А как понять 2д фигуры? Рисование мешей в экранных координатах?
__________________
Я бы изменил мир, но Бог не даёт исходников...
(Offline)
 
Ответить с цитированием
Старый 03.04.2009, 02:34   #599
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

Рисование мешей в экранных координатах?
бинго! и без z координаты.
(Offline)
 
Ответить с цитированием
Старый 03.04.2009, 03:59   #600
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Sigel

Сообщение от HolyDel Посмотреть сообщение
эээ. нету его. пока. спасибо за замечание.
скорее всего тогда будет не
sfloor->AddTexCoordsLayer(1);
а
sfloor->AddTexCoordsLayer(1,n);
где n число от 1 до 4 - число компонент на одну тк. для 3д тк - нужно указать 3.

второй параметр задает кол-во компонент у тк.
Как понимаю это в целях экономии видео памяти?
А много будет экономии, к примеру хранить не float4 а float2 в модели с 2к вершин, это по 8 бит на значение (так?) - это 2000(float2 vars) = 24000bits(2000*2*8 ) = 31Kb - Правильно? Просто я хз по этому вопросу (образование нуна)..
Тоесть если в памяти примерно 4 миллиона вершин, по дефолту (float2 на uv), то это почти 60мб, чисто на UV! Ух.. Я уже не говорю о цвете вершин, их нормалей, позиций. Тоесть приблезительно на 1 миллион вершин, тратится инфы: float4 (position) + float3 (normal) + float4 (rgba color) + float2 (UV) = 13 float's; 13f*1000v*8b=100mb! Весьма не мало.

Вот интерестно, я в шейдерах заметил правило и использование W компонента расстояния, но так и не понимал какую инфу он несёт (что он содержит), и можно ли от него избавиться.
Цвет вершин, юзается, но редко (хотя тут раз на раз не приходится, зависит от стиля кодера графических техник). Вроди как щас уже можно отрубать?
UV - уже опционально, и слои, и колличество компонентов.

Вроди ничего не забыл..
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Sigel Tutorial 1. Свой Crimsoland. HolyDel C++ 21 02.04.2009 21:25
Sigel vs WarTech HolyDel Болтовня 31 09.04.2008 19:13
Sigel::EntityShaders HolyDel Болтовня 8 01.04.2008 17:52


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com