Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

алгорим подложки текстуры под битмап?


AlexT1000 ©   (2003-06-18 15:06:00) 

кто-нибудь знает алгоритм подложки текстуры под битмап ( см фотошоп эффекты слоя текстура)?


Fenik   (2003-06-24 19:28:00) [1]

> AlexT1000 © (23.06.03 14:19)

Спасибо. Попробую понять..


AlexT1000   (2003-06-23 14:19:00) [2]

ну это такой режим смешивания битмапов . см фотошоп . ты кста можешь скачать этот и несколько других режимов с сайта G32. там в выкладках пользователей

для остальных просто привожу код

procedure Underlay(B1,B2 :TBitmap32);
Var i , j ,ii,jj,xx,yy,h : integer ;
C : TColor32;
P1 ,P2 , P3 : PColor32Array;
begin
P1 := B1.Bits;
P2 := B2.Bits;
C := Color32(255,255,255,255);
h := B2.Height;
for i:=0 to B1.Height-1 do
for j:=0 to B1.Width-1 do begin
ii := i * B1.Width + j;
yy := i mod h ;
xx := j mod B2.Width ;
jj := yy * h + xx;
Overlay(P2[jj],P1[ii],C);
end;


end;


procedure Overlay(F: TColor32; var B: TColor32; M: TColor32);
var fR,fG,fB, bR,bG,bB, aM: cardinal;
begin
{Foreground Alpha and Master Alpha combined}
aM := M and $FF;
aM := F shr 24 * aM;
aM := aM shr 8;
if aM = 0 then exit; //exit if nothing changes ...
{Channel separation}
fR := F shr 16 and $FF;
fG := F shr 8 and $FF;
fB := F and $FF;
bR := B shr 16 and $FF;
bG := B shr 8 and $FF;
bB := B and $FF;
{Combine}
if bR < 128 then fR := bR * fR shr 7 else
begin
fR := 255 - fR;
bR := 255 - bR;
fR := bR * fR shr 7;
fR := 255 - fR;
bR := 255 - bR;
end;
if bG < 128 then fG := bG * fG shr 7 else
begin
fG := 255 - fG;
bG := 255 - bG;
fG := bG * fG shr 7;
fG := 255 - fG;
bG := 255 - bG;
end;
if bB < 128 then fB := bB * fB shr 7 else
begin
fB := 255 - fB;
bB := 255 - bB;
fB := bB * fB shr 7;
fB := 255 - fB;
( fR-bR)

ну это такой режим смешивания битмапов . см фотошоп . ты кста можешь скачать этот и несколько других режимов с сайта G32. там в выкладках пользователей

для остальных просто привожу код

procedure Underlay(B1,B2 :TBitmap32);
Var i , j ,ii,jj,xx,yy,h : integer ;
C : TColor32;
P1 ,P2 , P3 : PColor32Array;
begin
P1 := B1.Bits;
P2 := B2.Bits;
C := Color32(255,255,255,255);
h := B2.Height;
for i:=0 to B1.Height-1 do
for j:=0 to B1.Width-1 do begin
ii := i * B1.Width + j;
yy := i mod h ;
xx := j mod B2.Width ;
jj := yy * h + xx;
Overlay(P2[jj],P1[ii],C);
end;


end;


procedure Overlay(F: TColor32; var B: TColor32; M: TColor32);
var fR,fG,fB, bR,bG,bB, aM: cardinal;
begin
{Foreground Alpha and Master Alpha combined}
aM := M and $FF;
aM := F shr 24 * aM;
aM := aM shr 8;
if aM = 0 then exit; //exit if nothing changes ...
{Channel separation}
fR := F shr 16 and $FF;
fG := F shr 8 and $FF;
fB := F and $FF;
bR := B shr 16 and $FF;
bG := B shr 8 and $FF;
bB := B and $FF;
{Combine}
if bR < 128 then fR := bR * fR shr 7 else
begin
fR := 255 - fR;
bR := 255 - bR;
fR := bR * fR shr 7;
fR := 255 - fR;
bR := 255 - bR;
end;
if bG < 128 then fG := bG * fG shr 7 else
begin
fG := 255 - fG;
bG := 255 - bG;
fG := bG * fG shr 7;
fG := 255 - fG;
bG := 255 - bG;
end;
if bB < 128 then fB := bB * fB shr 7 else
begin
fB := 255 - fB;
bB := 255 - bB;
fB := bB * fB shr 7;
fB := 255 - fB;
bB := 255 - bB;
end;
{Blend}
bR := bR + (fR-bR)*aM shr 8;// bR := ( fR*aM + bR*(255-aM) )shr 8
bG := bG + (fG-bG)*aM shr 8;
bB := bB + (fB-bB)*aM shr 8;
{Reset - keeping B alpha}
B := B and $FF000000 or bR shl 16 or bG shl 8 or bB;
end;


Fenik   (2003-06-22 02:00:00) [3]

> блендингмоде Overlay

Объясни, плз.


AlexT1000   (2003-06-20 14:57:00) [4]

я нашел как это делается. это делается через блендингмоде Overlay!


AlexT1000   (2003-06-20 12:03:00) [5]

это когда текстура как бы проступает т.е передает свой рельеф тому битмапу, под который она подкладывается .
это не прозрачность!

пока сам не увидишь не поймешь. типа bump-mapping вроде того


Stexen   (2003-06-19 23:25:00) [6]

что именно нужно не очень понял фотошопом не пользуюсь? я понял как какую то полупрозрачность может и нет ну напиши по подробнее


Наверх

Титульная страница Поиск, карта сайта Написать письмо