Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2010, 11:50   #1
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию Blur в Direct3D

Здрасте уважаемые! Вопрос следующий...

Есть квад. Выводиться в буфер с учётом полупрозрачности (текстуры естесно). Цель - размыть текстуру аппаратно.

ТЕ у меня есть два решения этой проблемы :
1) написать фрагментный шейдер для реализации пост эффекта, который может быть ток версии 1.1, тк цель всего проекта - движок, который работает везде (умеет возвращяться в 2003 год).
2) сделать ручками с RenderTarget (лочить текстуру и её мыть).

Прокансультируйте меня пжалуйста на эту тему)))) Поделитесь опытом....
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 23.08.2010, 19:25   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Уж лучше шейдер. Ручками работать с текстурой не просто и не рационально.
А шейдер всё-таки, во-первых можно использовать многократно для каждой текстуры, а ручками текстуру мыть нужно вручную каждый раз.
_-Re@l-_ вне форума Ответить с цитированием
Старый 24.08.2010, 21:30   #3
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Ну де... Я тож так подумал, но про совместимость с GF MX можно забыть... Тама шейдеры 2.0 просто с 5600 начинаються((( Обидно...
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 25.08.2010, 12:04   #4
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

notHaker, как создавать шейдеры в Direct3d??
alexprey вне форума Ответить с цитированием
Старый 25.08.2010, 20:44   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
notHaker, как создавать шейдеры в Direct3d??
1. Пишешь шейдер на языке HLSL
2. Компилируешь его в DirectX - е так:
Код:
Function TForm1.CreateShader:HResult;
var
    pCode:ID3DXBuffer;
begin
       Result:=D3DXCompileShaderFromFile('путь к файлу с шейдером',NIL,NIL,'main','vs_2_0',0,@pCode,NIL,@FD3DVertexConstant);
If Failed(Result) then Exit;
Result:=FD3DDevice.CreateVertexShader(pCode.GetBufferPointer,FD3DVertexShader);
pCode:=NIL;
If Failed(Result) then Exit;
matWorldViewProjectHandle:=FD3DVertexConstant.GetConstantByName(NIL,'matWorldViewProject');
end;
Только не забудь все переменные объявить и инициализировать Direct3D, очистить устройство и т.д.
_-Re@l-_ вне форума Ответить с цитированием
Старый 26.08.2010, 10:56   #6
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Учишь HLSL (он си подобный, те простой) и катаешь в обычном текстовике код, будь то вершинный или пиксельный шейдер (обычно в 3D применяют их в паре, ну а в 2D можно вершинный опустить). И фсё. Судя по вопросу, скорее всего не понимаешь что ето такое и с чем это едят. Вот ссылки
http://www.uraldev.ru/articles/id/22
http://www.gamedev.ru/code/articles/HLSL
http://gameengines.ru/index.php?name...&op=view&id=27
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 26.08.2010, 22:11   #7
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

notHaker да как то давно про них читал
alexprey вне форума Ответить с цитированием
Старый 27.08.2010, 00:22   #8
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

вот например простейший шейдер, который реализует пост-эффект "fade".
Вершинный шейдер
Код:
struct VS_OUTPUT {
   float4 Pos: POSITION;
   float2 texCoord: TEXCOORD;
};

VS_OUTPUT main(float4 Pos: POSITION){
   VS_OUTPUT Out;

   Out.Pos = float4(Pos.xy, 0, 1);
   Out.texCoord.x = 0.5 * ( 1 + Pos.x );
   Out.texCoord.y = 0.5 * ( 1 - Pos.y );

   return Out;
}
Пиксельный
Код:
float fade: register(c0);
sampler Image: register(s0);

float4 main(float2 texCoord: TEXCOORD0) : COLOR {
   float4 sample = tex2D(Image, texCoord);
   float4 avg = tex2D(Image, texCoord) * fade;   
   return avg;  
}
fade - собстно 0..1 0 - темно, 1 - нормально
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.

Последний раз редактировалось notHaker; 27.08.2010 в 00:32.
notHaker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Direct3d и BIOS eoln Компьютерное железо 0 13.08.2010 10:29
Direct3d+newton Crivel Gamedev - cоздание игр: Unity, OpenGL, DirectX 7 17.06.2010 17:04
проблемы с Direct3D p6l6a6n Помощь студентам 2 30.04.2010 18:05
Перспектива в Direct3D Ulex Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 11.03.2008 01:04