website logo
Auteur
avatar
AmiDARK

Forum » » Création-Développement » » AmiDARK Engine Rel0.8 Wip : FX2D part 1 : Fake Rasters


Posté : 28-01-2013 01:02 icone du post

Bonsoir à tous.
Maintenant que le plugin est bien *commencé* je peux en parler.

Comme vous le savez, l'objectif de l'AmiDARK Engine, sera de fournir à peu de choses près, les mêmes commandes BASIC que DarkBASIC Professional ou DarkGDK, pour créer des jeux 2D et 3D sur Amiga New Generation.

L'AmiDARK Engine, au cours de son développement verra donc, tout comme DarkBASIC Professional et DarkGDK, des *plugins* additionnels se greffer au moteur de jeu pour ajouter au jeu de commandes originales, des jeux de commandes qui n'existent pas dans les versions initiales de DarkBASIC Professional & DarkGDK sur PC.

J'ai donc initié ce principe, pendant les finitions de cette version 0.8, en commençant le plugin nommé FX2D.
Ce plugin contiendra donc, plusieurs commandes qui permettront de faire des effets spéciaux en 2D.

Pour l'instant, ce plugin FX2D ne contient qu'un seul jeu de commande qui s'appelle "Fake Raster"... J'en vois déjà certains se lécher les babines en se disant ... Raster ... Copper ... Ce sont des effets de couleurs ? Et bien je répondrai un grand "OUI"... Cependant, les limitations ne sont pas les mêmes que sur nos anciens Amiga OS 1.x à 3.x sur ECS, AGA, etc.
Ce système de raster ne s'applique que sur la couleur de fond. On ne peux pas l'appliquer à des couleurs différentes mais seulement à la couleur de fond.
On peut créer jusqu'à 16 effets rasters dont l'affichage peut être contrôlé par un filtre qui permet différents types de superpositions des rasters.
Cependant, avec les couches ALPHA dans nos textures et images, on peut créer des intégrations bien plus souples et fluides que ce que l'on pouvait sur nos Amiga Classiques.

Voici donc, le jeu de fonctions actuels pour ces effets Raster :

FXCreateFakeRaster( RasterID, HeightInPixels )
FXCreateFakeRasterEx( RasterID, HeightInPixels, FilterMODE )
FXCreateFakeRasterExé( RasterID, HeightInPixels, FilterMODE, YPosition )
FXDeleteRaster( RasterID )

FXSetRasterLine( RasterID, YLine, RGBColor )
FXSetRasterGradient( RasterID, StartYLine, StartRGBColor, EndYLine, EndRGBColor )
FXSetRasterY( RasterID, YPosition )
FXUpdateRaster( RasterID )
FXSetRasterFilter( RasterID, FilterMODE )

FXSetRasterFromMemblock( MemblockID, RasterID )
FXMakeMemblockFromRaster( RasterID, MemblockID )

FXHideRaster( RasterID )
FXShowRaster(RasterID )
FXDisableRasters()
FXEnableRasters()

=FXRasterExist( RasterID )
=FXGetRasterLine( RasterID, YLine )
=FXGetRasterY( RasterID )
=FXGetRasterHeight( RasterID )
=FXIsRasterUpdated( RasterID )

Actuellement ce plugin contient 20 commandes liés aux "Fake Raster".
Cependant d'autres commandes sont prévues pour d'autres effets...

La seule question qui reste actuellement en suspens sera le status de ce plugin ... Sera t-il intégré par défaut dans le moteur de jeu en tant que Bonus ou ... Sera t-il fourni .. A part... Aucune décision n'est prise pour l'instant.

Voici un petit *shot* de la démonstration crée en l'honneur de ce nouveau plugin :


Et surtout, remarquez combien le code source pour réaliser cette démonstration (effet inclut) est court :


#!!!include!!!?"libamidark.h"
void?DarkLoop(?void?){
??//?On?définit?l'affichage.
??DESetDisplayMode(?640,?400,?32?);
??DESyncOn();
??DESyncRate(?60?);
??//?On?charge?l'image?à?afficher?au?1er?plan.
??DELoadImageEx(?"Medias/Environment.png",?1,?1?);
??//?On?crée?un?nouvel?effet?raster?et?on?défini?les?dég radés?de?couleur.
??FXCreateFakeRaster(?1,?256?);
??FXSetRasterGradient(?1,?0,?DERgb(?32,?32,?64?),?128,?DERgb(?128,?64,?128?)? );
??FXSetRasterGradient(?1,?128,?DERgb(?128,?64,?128?),?255,?DERgb(?255,?255,?2 55?)?);
??FXUpdateRaster(?1?);?//?On?finalize?le?raster?pour?qu'il?soit?visible.
??//?Boucle?principale?de?la?démonstration.
??while(?!DELoop()?){
????DECls();
????DEPasteImageEx(?1,?0,?0,?1?);
????DESync();?//?Les?effets?raster?sont?mis?à?jour?à?la?synchro ?automatiquement.
???}
?}



Vous pouvez vous demander .... Mais où est l'effet en fait ?
Voici un *shot* qui vous montre la différence sans/avec :




EDIT du message original :
Voici aussi, la démonstration utilisant des Rasters incluts DEDANS des images. Donnant encore plus de relief et de contraste à une image :
Première image sans aucun effet raster, image originale seule :
< /img>

Seconde image, effets rasters incluts :


voici le code source de cette démonstration technique :

int kMode = 1; // Default mode display Rasters.
int mKey = 0;

#!include! "libamidark.h"
void DarkLoop( void ){
// Setup the display output.
DESetDisplayMode( 640, 480, 32 );
DESyncOn();
DESyncRate( 60 );
DEInk( DERgb( 255, 255, 255 ), DERgb( 0, 0, 0 ) );

// 1stly we load the needed Image.
DELoadImageEx( "Medias/mRaster_Background.png", 1, 1 );
DELoadImageEx( "Medias/mRaster_Sun.png", 2, 1 );
DELoadImageEx( "Medias/mRaster_Bar.png", 3, 1 );
DELoadImageEx( "Medias/mRaster_AmiDARK_LightShaft.png", 4, 1 );
DELoadImageEx( "Medias/mRaster_AmiDARK.png", 5, 1 );
// The Bar Raster FX.
FXCreateFakeRaster( 1, 56 );
FXSetRasterGradient( 1, 0, DERgb( 0, 0, 0 ), 55, DERgb( 125, 177, 224 ) );
FXSetRasterY( 1, 212 );
FXUpdateRaster( 1 );
FXHideRaster( 1 );
// Main AmiDARK Engine - Multiple Raster - Raster Effect
FXCreateFakeRaster( 2, 107 );
FXSetRasterGradient( 2, 0, DERgb( 0, 0, 0 ), 53, DERgb( 96, 65, 31 ) );
FXSetRasterGradient( 2, 54, DERgb( 96, 65, 31 ), 106, DERgb( 0, 0, 0 ) );
FXSetRasterY( 2, 187 );
FXUpdateRaster( 2 );
FXHideRaster( 2 );
// Raster 3 - BackGround Space Light
FXCreateFakeRaster( 3, 480 );
FXSetRasterGradient( 3, 0, DERgb( 33, 47, 64 ), 64, DERgb( 0, 0, 0 ) );
FXSetRasterGradient( 3, 416, DERgb( 0, 0, 0 ), 479, DERgb( 33, 47, 64 ) );
FXSetRasterY( 2, 0 );
FXUpdateRaster( 3 );

while( !DELoop() ){
DECls();
mKey = DEScanCode();
if ( mKey == 2 ){ kMode = 0; }
if ( mKey == 3 ){ kMode = 1; }
if ( kMode == 1 ){
DEFXImageRasteredEx( 1, 0, 0, 3, 0 ); // Background Image - With raster #3, 480px
DEPasteImageEx( 2, 0, 0, 1 ); // Sun Image - No Transparency
DEFXImageRasteredEx( 3, 0, 212, 1, 1 ); // The Bar Image - With Raster #1, 56px
DEPasteImageEx( 4, 0, 164, 1 ); // Logo Light Shaft - Transparency Only
DEFXImageRasteredEx( 5, 0, 187, 2, 1 ); // AmiDARK Logo - With Raster #2, 106px
}else{
DEPasteImageEx( 1, 0, 0, 0 ); //
DEPasteImageEx( 2, 0, 0, 1 ); // No raster at all!
DEPasteImageEx( 3, 0, 212, 1 ); //
DEPasteImageEx( 4, 0, 163, 1 ); //
DEPasteImageEx( 5, 0, 187, 1 ); //
}
DESetCursor( 0, 0 );
DEPrint( "Press 0 to disable Rasters, 1 to enable raster." );
if ( kMode == 1 ){
DEPrint( "Currently : Rasters = On" );
}else{
DEPrint( "Currently : Rasters = Off" );
}
DESync();
}
}


@+.

Message édité par : AmiDARK / 28-01-2013 10:56
Message édité par : AmiDARK / 05-02-2013 23:57

Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1458&forum=14