Показать сообщение отдельно
Старый 21.01.2008, 19:17   #33
JeSss
ПроЭктировщик
 
Регистрация: 05.08.2007
Сообщений: 115
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Размытие...

Держи:

Graphics3D
640,480,16,1

SetBuffer BackBuffer()

lit=CreateLight()
cub=CreateCube()
PositionEntity cub,0,500,0
EntityColor cub,0,355,0
cam=CreateCamera(cub)
; Делаем столб
stolb=CreateCube()
ScaleEntity stolb,1,4,1
PositionEntity stolb,-7,0,7
; Делаем столб
stolb2=CreateCube()
ScaleEntity stolb2,1,4,1
PositionEntity stolb2,7,0,7

;Функция создания слоя размытия, привязанного к камере - возвращает адрес слоя
Function createblurlayer(cam,z#,ang#,mgn#,bright#,alpha#,bmode,ord)
Local xres=GraphicsWidth()
Local yres=GraphicsHeight()
layer=CreateMesh(cam)
s=CreateSurface(layer)
;Вычисление координат текстуры
vx#=1.0*xres/texsize
vy
#=1.0*yres/texsize
AddVertex s,-1,-1,0,0,0
AddVertex s,1,-1,0,vx#,0
AddVertex s,-1,1,0,0,vy#
AddVertex s,1,1,0,vx#,vy#
AddTriangle s,0,1,2
AddTriangle s,3,2,1

plan=CreatePlane()
EntityColor plan,0,0,255

PositionEntity plan,0,-1,5
PositionEntity cam,0,3,-5
bl=createblurlayer(cam,1,0,1,1,.95,1,o)

Repeat
If KeyHit
(200) Then run=1-run
If Not(run=0) Then MoveEntity cub,0,-0.5,0
If KeyDown(208) MoveEntity cub,0,0,-.1
If KeyDown(203) TurnEntity cub,0,1,0
If KeyDown(205) TurnEntity cub,0,-1,0

UpdateWorld
RenderWorld


Flip

bltex=updateblurlayer(bl,bltex)
Flip
Until KeyDown
(1)
ScaleEntity layer,mgn#,mgn#,mgn#
EntityAlpha layer,alpha#
EntityBlend layer,bmode
col
=255*bright#
EntityColor layer,col,col,col
EntityFX layer,1
EntityOrder layer,ord
Return layer
End Function
Function
updateblurlayer(layer,tex)
If tex=0 Then tex=CreateTexture(texsize,texsize)
EntityTexture layer,tex
CopyRect 0,0,GraphicsWidth(),GraphicsHeight(),0,0,BackBuffer(),TextureBuffer(tex)
Return tex

End Function
End
(Offline)