Dem "Bloom-Code" auf der Spur
Übersicht

![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
@alle, bei denen es nicht geht: bitte beschreibt doch mal genau, ob es daran liegt, das die Tasten nicht funktionieren, oder ob die Tasten-Änderungen sehr wohl registriert werden (Text verändert sich), aber halt trotz geänderten Werten keine Veränderungen an den Objekten zu sehen sind.
Quellcode kommt in Kürze -ist allerdings, wie gesagt, ein Sprite Candy Code (ich wollte für die ganze Sprite-Orgie zum Weichzeichnen eine Single Surface Lösung -in meiner Welt gibt es keine BlitzSprites mehr-, ausserdem ist der Code so um einiges kürzer). Muss aber erst mal rausfinden, warum das bei euch nicht funzt ![]() |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tasten gehen alle, text ändert sich, aber sonst kein sichtbarer effekt | ||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei mir funktioniert es grafisch fehlerfrei. (Radeon 9700 64MB Mobile mit Catalyst 6.5)
Allerdings wäre es schön wenn für die Tasten der Zeichencode und nicht der Scancode benutzt würde ... dauerte einige Zeit bis ich rausgefunden habe wo das angebliche + liegen soll um es raufzudrehen ... ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Funkt einwandfrei auf einem XP2400+ mit Radeon9200 auf WinXP SP2 mit DX9c ... FPS der GraKa entsprechend ... ca 20 ![]() |
||
Farbfinsternis.tv |
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dreamora hat Folgendes geschrieben: dauerte einige Zeit bis ich rausgefunden habe wo das angebliche + liegen soll um es raufzudrehen ...
![]() Das kommt daher, das ich eine Mini-Tastatur benutze, die gar keinen Zahlenblock hat. ![]() Hier der (SpriteCandy-) Code für den Glow-Effekt. Ich habe alles überflüssige rausgenommen, um ihn so übersichtlich wie möglich zu machen. Die Technik ist recht simpel: über den Screen wird ein Image-Layer gelegt (blend mode multiply), der eine Textur im Speicher als Resource benutzt. In diese Textur rendert man dann einfach in der main loop die Highlights und blurt diese. Für den Bloom-Effekt selbst schaltet man alles auf unsichtbar und lässt nur die Objekte sichtbar, auf die der Effekt angewendet werden soll. Diese Objekte müssen glänzen (EntityShininess auf 1). Wenn man diese Objekte nun vor dem Rendern des Effekts ganz schwarz färbt (EntityColor) erhält man normale Glanzreflexe. Erhöht man die Farbe, geht der Glanz mehr und mehr in ein Glühen über (es kann jeder beliebige Farbton benutzt werden, also auch grün, blau etc.) Diese Objekte werden dann "geknipst" (in der Regel sieht man jetzt nur noch die Glanzlichter der Objekte, weil die Objekte ja dunkel sind). Das erhaltene Bild wird dann weichgezeichnet und in dem Image-Layer, der über dem ganzen Screen liegt, angezeigt. Das ist alles ![]() Code: [AUSKLAPPEN] Graphics3D 1024, 768, 32, 2 : SetBuffer BackBuffer() ; INCLUDE SPRITE CANDY Include "sprite candy.bb" ; -------------------------------------------------------------- ; VARIABLES ; -------------------------------------------------------------- ; TIMER Global Timer% = CreateTimer(60) ; GLOW VARIABLES Global gBlurRadius% = 52 Global gGlowTexW% = 128 ; TRY 96, 128, 256 Global gGlowTexH% = gGlowTexW-gGlowTexW/4 ; ASPECT RATIO 4:3 ; -------------------------------------------------------------- ; CREATE 3D SCENE ; -------------------------------------------------------------- Global Light = CreateLight () Global CenterPiv = CreatePivot() Global Cam = CreateCamera() EntityParent Cam, CenterPiv MoveEntity Cam,0,5,-5 TurnEntity Cam,30,0,0 ; SCENE Global Scene = LoadAnimMesh("Media\scene.b3d") ScaleEntity Scene,.04,.04,.04 HideEntity FindChild(Scene, "Logo") ; TEAPOT Obj1% = LoadMesh("Media\teapot.3ds") EntityTexture Obj1, LoadTexture("Media\teapot.bmp",1+64+256) MoveEntity Obj1,0,2,0 ScaleEntity Obj1,.9,.9,.9 EntityShininess Obj1,1 CenterPiv2 = CreatePivot() ; RING Obj2% = LoadMesh("Media\ring.3ds") EntityTexture Obj2, LoadTexture("Media\teapot.bmp",1+256) MoveEntity Obj2,-2.5,4,0 ScaleEntity Obj2,.1,.1,.1 EntityShininess Obj2,1 EntityParent Obj2,CenterPiv2 ; -------------------------------------------------------------- ; CREATE HUD OBJECTS ; -------------------------------------------------------------- HUD% = HUD_Create (Cam) ; CREATE A TEXTURE WHERE WE CAN RENDER THE SCREEN TO Global Tex_GlowOverlay% = CreateTexture(gGlowTexW,gGlowTexW,2+256) ; CREATE A LAYER WITH THAT TEXTURE Global Res_Glow% = HUD_LoadMemoryResource (Tex_GlowOverlay) Global Lyr_Glow% = HUD_CreateLayer (HUD, Res_Glow) HUD_SetLayerBlend Lyr_Glow, 3 ; <- SET LAYER TO MULTIPLY BLEND ; CREATE SCREEN OVERLAY IMAGE ON THAT LAYER Global Img_GlowOverlay = HUD_CreateImage (Lyr_Glow, 0,0, 0,0,gGlowTexW,gGlowTexH, "CENTER","CENTER") HUD_SetObjectAlpha Img_GlowOverlay,1 HUD_SetObjectSize Img_GlowOverlay,GraphicsWidth(),GraphicsHeight() ; -------------------------------------------------------------- ; MAIN LOOP ; -------------------------------------------------------------- While Not KeyDown(1) WaitTimer Timer ; GLOW CODE -------------------------------------------- ; SHOW AND PREPARE GLOW-ENTITIES EntityColor Obj1,15,15,0 ; <- GLOW COLOR, AS HIGHER, AS MORE GLOW EntityColor Obj2,45,45,0 ; USE 0,0,0 FOR LIGHT WITHOUT GLOWING ; HIDE ALL NON-GLOWING OBJECTS HideEntity Scene : HUD_SetVisibility HUD, False ; RENDER GLOW TO TEXTURE RenderScreenGlow Tex_GlowOverlay,gBlurRadius,gBlurRadius/3 ; RESET GLOW ENTITIES TO NORMAL COLOR EntityColor Obj1,255,255,255 EntityColor Obj2,255,255,255 ; SHOW OTHER OBJECTS ShowEntity Scene : HUD_SetVisibility HUD, True ; ------------------------------------------------------ ; ANIMATE SCENE TurnEntity Obj1 ,.35, 0,0 TurnEntity Obj2 ,.65,.45,.25 TurnEntity CenterPiv2, 0, .5,0 TurnEntity CenterPiv , 0,.35,0 HUD_Update : RenderWorld : Flip 0 Wend HUD_RemoveAll True : End ; --------------------------------------------------------- ; FUNCTION: BLUR IMAGE ; - NON-GLOWING OBJECTS (HUD ETC.) MUST BE HIDDEN BEFORE ; - GLOWING OBJECTS MUST BE SET TO THE RIGHT COLOR BEFORE ; --------------------------------------------------------- Function RenderScreenGlow(Tex%, radius#, steps%) Local tw# = gGlowTexW ; INSERT GLOW TEXTURE WIDTH Local th# = gGlowTexH ; INSERT GLOW TEXTURE HEIGHT Local sw# = GraphicsWidth() ; INSERT SCREEN RESOLUTION WIDTH Local sh# = GraphicsHeight(); INSERT SCREEN RESOLUTION HEIGHT Local radstep# = radius / steps Local Images%[256], i%, r#, a#, c% ; RENDER SCREEN CameraViewport Cam ,0,0,tw,th RenderWorld : CopyRect 0,0,tw,th,0,0,BackBuffer(),TextureBuffer(Tex) Local HUD_Temp% = HUD_Create (Cam) Local Lyr_Temp% = HUD_CreateLayer (HUD_Temp, Res_Glow) HUD_SetLayerBlend Lyr_Temp, 3 i = 0 : r = radstep : a = 0 For r = radstep To radius For a = 0 To 360 Images[i] = HUD_CreateImage (Lyr_Temp, 0,0, 0,0,tw,th, "CENTER","CENTER") HUD_SetObjectAlpha Images[i],.1 ; <- TRY VALUES FROM .1 TO .5 HUD_PositionObject Images[i],sw/2+Sin(a)*r, sh/2+Cos(a)*r HUD_SetObjectSize Images[i],sw+i*.01,sh+i*.01 a = a + 360.0/steps i = i + 1 : If i > 256 Exit Next r = r + radstep*2 Next HUD_Update RenderWorld : CopyRect 0,0,tw,th,0,0,BackBuffer(),TextureBuffer(Tex) CameraViewport Cam, 0,0,sw,sh HUD_Remove HUD_Temp End Function |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sehr schön ![]() meinst du den kann man auch ohne SpriteCandy verwenden? |
||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Klar -musst halt "nur" alle SpriteCandy-spezifischen Sachen durch normalen Code ersetzen. Statt ImageLayer klebst du ein Sprite auf den Bildschirm und die Blurmethode ersetzt du auch durch eine Sprite-Lösung. Ist dann halt ein ziemliches Gefiesel, bis man die Sprites genau auf den Bildschirm und die betreffende Auflösung angepasst hat. | ||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist ein KinderSpiel, falls du meinst, einen sprite genau wie'n Bild( ![]() |
||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
![]() |
FreakForFreedom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke fürs Sharen, @x-pressive! Super code!
Werde ihn gleich mal "umwandeln" und benutzen. ![]() |
||
Mfg
F.F.F. "Try and ERROR!" |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group