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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Xors3D

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 26.10.2011, 13:50   #16
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Нубошоу по шейдерам.

Сообщение от Crayzi Посмотреть сообщение

Ото матерится по учёному)
Full Tex Size Quad - это мат оО??
(Offline)
 
Ответить с цитированием
Старый 26.10.2011, 16:29   #17
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Нубошоу по шейдерам.


фуллтекссайзквад
хорошее название для группы
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
Mr_F_ (26.10.2011), Randomize (26.10.2011), Reizel (14.11.2011)
Старый 02.11.2011, 01:42   #18
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нубошоу по шейдерам.

xCreateTextureFromData ( void * pixelsData,
int width,
int height,
int flags = 9,
int frames = 1
)
" void * pixelsData," вот это что и как его создать?


Handle tex3d=xCreateTexture(64,64,1024,64); Таким образом получится 3д текстура. И фреймы будут подразумевать третье измерение, а доступ к слоям xTextureBuffer(tex3d, layervar); Так?
(Offline)
 
Ответить с цитированием
Старый 02.11.2011, 01:44   #19
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Нубошоу по шейдерам.

вот это что и как его создать?
создаёт текстуру из указателя на пиксели (типа как при открытии RAW в фотошопе)
(Offline)
 
Ответить с цитированием
Старый 02.11.2011, 01:49   #20
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нубошоу по шейдерам.

Сообщение от Mr_F_ Посмотреть сообщение
создаёт текстуру из указателя на пиксели (типа как при открытии RAW в фотошопе)
Элегантный посыл нахер. Это значит что своими ручками я в памяти не смогу организовать подобное из цыфирек? Мне интересен сам процесс генерации подобных данных.
(Offline)
 
Ответить с цитированием
Старый 02.11.2011, 01:55   #21
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Нубошоу по шейдерам.

насколько я помню, просто линейно расположенные RGBA (по байту на канал) готовишь
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (02.11.2011)
Старый 12.11.2011, 19:59   #22
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нубошоу по шейдерам.


Сделал я в пайнте вот такую текстуру только больше, И возникла у меня следующая проблема у текстур граничащих с краем наблюдается вот такой эффект:


Пропадающий при вот этих настройках:
texture main;
sampler mainSampler = sampler_state{
Texture = <main>;
AddressU = CLAMP;
AddressV = CLAMP;
AddressW = CLAMP;
MinFilter = NONE;
MagFilter = ANISOTROPIC;
MipFilter = ANISOTROPIC;
MaxAnisotropy=5;
Но появляется "шевеление" текстуры, это как-то лечится магическим флагом или надо просто не использовать какую-то часть по контуру?
(Offline)
 
Ответить с цитированием
Старый 12.11.2011, 20:37   #23
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Нубошоу по шейдерам.

типичная проблема атласов.
как это можно решать:
1) хранишь не кратные степени двойки тайлы, вокруг каждого ободок в 4 пикселя в виде "продолжения" этого тайла. в шейдере уменьшаешь текскоорды, чтобы взять только нужный квадрат, остальные 4 юзаются для фильтрации.
2) вместо обычной tex2d юзаешь
float2 TexCoords = текстурные координаты, какие были бы если б ты ими 1 тайл тайлили.
float2 dx = ddx(TexCoords);
float2 dy = ddy(TexCoords);
float4 tex = tex2Dgrad(mytex,TexCoords,dx,dy);

зачем это нужно - когда видюха семплит текстуру, она выбирает правильный мип, если у тебя там резкий перепад текстурных координат (например у одного пикселя 0, у следующего 1), то выбирается лоуресный мип (потому что типа если маленькое расстояние между пикселями на триангле, значит текстура сплющена там, значит ей не нужен хайрес там - думает видюха), и выходит что если ты тайлишь атлас каким-нибудь fmodoм, на стыках тайлов швы.
tex2Dgrad позволяет делать выборку с заранее посчитанными данными, по которым выберется мип.
но он помедленнее будет обычного tex2D.
на самом деле ваще не рекомендую нифига юзать такие атласы на терейн, хотя как знаешь.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
dsd (12.11.2011), HolyDel (14.11.2011), Nex (12.11.2011)
Старый 14.11.2011, 01:40   #24
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нубошоу по шейдерам.

Чет я никак не вкурю что последние два значения делают.

tex2Dgrad(s, t, ddx, ddy) - делает градиентную выборку точки из 2D текстуры s по координатам t Недоступно в шейдерной модели 1.х
На глаз получается, что их надо указывать в долях от 1, и это будет как шаг из текстуры? То есть чем ближе к камере тем ближе число к 0, а чем дальше тем ближе к 1? Кстати у меня оно работает быстрей обычного tex2D() в четверо почему то.
(Offline)
 
Ответить с цитированием
Старый 14.11.2011, 02:22   #25
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Нубошоу по шейдерам.

на самом деле ваще не рекомендую нифига юзать такие атласы на терейн, хотя как знаешь.
что порекомендуешь вместо атласов, Ф?
(Offline)
 
Ответить с цитированием
Старый 14.11.2011, 02:25   #26
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Нубошоу по шейдерам.

Последние два значения задают скорость изменения текстурных координат, которая нужна для определения оптимального мип-уровня и которая вычисляется сама для tex2D из заданных текстурных координат.
Собственно, Мр_Ф это и написал.
Помнится мне, что ты используешь динамический бранчинг. Так вот, если в нем есть tex2D, то бранчинг не работает и вычисляет все варианты, что вполне может снижать производительсноть. А не работает он потому, что:
1) ГПУ работает с блоками 2х2 пикселя;
2) для tex2D вот эти вот частные производные, которые передаются последними параметрами в tex2Dgrad, вычисляются автоматически из этого блока 2х2 пикселя;
3) пиксели из одного блока 2х2 могут быть обработаны разными ветками, и в этом случае вычисленные производные окажутся невалидными;
4) поэтому компилер шойдеров исключает такой случай и выбрасывает tex2D за пределы бранчинга.
Соотвественно, если, у тебя было 4 ветки и в каждой свой tex2D, то на самом деле они всегда все вызывались.
tex2Dgrad не требует автоматически вычисленных производных, поэтому может работать в бранчинге. Только производные надо вычислять за пределами бранчинга.

Сообщение от HolyDel Посмотреть сообщение
что порекомендуешь вместо атласов, Ф?
У тебя же ОГЛ какой там по счету? Там нет аналога текстурных массивов из ДХ11? Мне кажется, что они удобнее всего в данной ситуации.
__________________

(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
dsd (14.11.2011), HolyDel (14.11.2011), Mr_F_ (14.11.2011)
Старый 14.11.2011, 02:36   #27
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Нубошоу по шейдерам.

мне интересно что порекомендует Ф для DX9 железа. Насколько я знаю они пишут движок/ игрушку под девятый. Возможно есть какая-нибудь интересная идея. И еще у текстурных массивов должны быть размеры одинаковые для каждого элемента. это логично, но не всегда удобно.
(Offline)
 
Ответить с цитированием
Старый 14.11.2011, 05:33   #28
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Нубошоу по шейдерам.

мне интересно что порекомендует Ф для DX9 железа. Насколько я знаю они пишут движок/ игрушку под девятый. Возможно есть какая-нибудь интересная идея.
ну у нас некое подобие мегатекстуры, а т.к. используется только на террейне, то просто подогнано чтобы на 1 дип терейна была 1 текстура. швы хотя все равно исправлять приходится, но только связанные с прерыванием фильтрации.

а так вообще тут Сквид в асе недавно вбросил про 3д текстуры.
не уверен насчёт производительности, но в плане минимального геморроя и хорошего качества это лучший вариант.
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 20:38   #29
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нубошоу по шейдерам.

Как имея позицию камеры, ее поворот и соотношение сторон камеры собрать для нее в шейдере мировую и проекционную матрицы? Мне нужно иметь в шейдере как бы две камеры.
Или хотя бы дайте ссылку, где все кратко написано, но есть расшифровка где, чо. А то я только про операции над матрицами найти могу инфу. Но, блин, мне транспонирование и умножение матриц не помогают XD. Причем раньше попадалось, то что нужно, а щас никак. Такое ощущение, что гугол издевается надо мной.

Справился xGetViewProjMatrix ( Camera * camera )
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 23:59   #30
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нубошоу по шейдерам.

В вершинном переводим вершины в координаты на экране.
output.position = mul(input.position, matrixWorldViewProj);

Допустим VPOS мне не подходит.

Так я получу координаты на поверхности экрана:
u=output.position.x/output.position.w
v=output.position.y/output.position.w ?
В каких пределах они будут изменяться если соотношение сторон 1:1?
от -1,-1 к 1,1 или от 0,0 к 1,1. Или это вообще не так делается?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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