English version Version Francaise

Short:         CPU only Warp3D implementation
Author:        thellier@free.fr (Alain Thellier)
Uploader:     thellier free fr
Type:          driver/video
Version:      beta 53 (July 2012)
Replaces:    driver/video/Wazp3D.lha
Requires:     RTG system,68020-40,fpu
Architecture:m68k-amigaos >= 3.0.0


FPSE (Playstation emulator) showing Street Fighter EX Plus Alpha support "Renderer:Composite2D" now. For FPSE-OS4 use those Wazp3D-Settings

Wazp3D  : Alain THELLIER - Paris - FRANCE
Wazp3D is a library intended to be compatible with the famous Warp3D.library for AmigaOS 68040

GNU General Public License (GNU GPL)

o Compatible with the famous Warp3D.library for AmigaOS
o StormMesa compatibility
o The 97 functions from the latest Warp3D.library v5 are presents :-)
o Sources included (...so Wazp3D has been ported to AROS)
o Software only (=slow) : no need to have 3D hardware
o Work in UAE so can serve to test your 3D softwares inside UAE
o Wazp3D can lie and pretend to have a "perfect hardware driver"  so the 3D-softwares will not fail due to a lacking feature.
o Full Documentation, faq and grabs at http://thellier.free.fr/Wazp3D.htm
o Unlike QuarkTex you can run multiple Warp3D applications concurrently
o Built-in debugger
o Inside WinUAE & AROS can also render in hardware
o Demo-program http://aminet.net/package/dev/src/StarShip to use with Wazp3D (StormMesa libraries needed)

Wazp3D-Prefs should be copied to your SYS:Prefs directory
Rename existing LIBS:Warp3D.library to LIBS:Warp3D.library-save

If you are not using WinUAE but a real OS3 Amiga 68k or another emulator then just
  copy Wazp3D.library-full TO LIBS:Warp3D.library

If you are not using WinUAE but a real OS4 PPC Amiga
  copy Wazp3D.library-ppc  TO LIBS:Warp3D.library
If you are not using WinUAE but a real OS4 PPC Amiga with altivec
  copy Wazp3D.library-altivec TO LIBS:Warp3D.library
(only compiled with altivec options for gcc)

If you are using WinUAE then
  copy Wazp3D.library-winuae TO LIBS:Warp3D.library
  copy soft3d.library TO LIBS:soft3d.library
  and PC side copy soft3d.dll to the WinUAE directory
  WinUAE need "Miscellaneous panel/Native code execution" to be enabled

If you are using Aros then
 It is already in LIBS:Warp3D.library
Warning: upper/lower cases are important for libraries names

If Wazp3D-Prefs dont works then your install is not good...
It is recommended to use Wazp3D-Prefs BEFORE starting your-3d-program for the first time
you can also use Wazp3D-Prefs when your-3d-program is running (so impossible with screen-blankers)
But as Wazp3D now save/read the Prefs you may encouter problems if the settings were not good
when your-3d-program was first started (typically using a too slow "renderer:soft to bitmap" option)
In this case the better is to delete the file Waz3D.cfg in your-3d-program directory
Then start Wazp3D-Prefs. Set your favorite settings. Close Wazp3D-Prefs. Start your-3d-program
In Wazp3D-Prefs all options with a '+' like "+Renderer:hard" are intended to be setted
BEFORE starting your-3d-program for the first time
If you change such an option during play then it will only have effect next time
(ie when modified Waz3D.cfg will be read )

Wazp3D was first created to test the "Tales of Tamar"'s 3D Map inside WinUAE.
I have no time left to work more on this project. So i release the source ? library

"Tales of Tamar"'s 3D Map inside WinUAE/Wazp3D
Changes from previous version
Beta 53
o Now bufferize W3D_DrawTriangle/Line/Points so badly written apps that use those slow 
  functions are faster now (need Renderer:hard + Use StateTracker ON)
  (typically StormMesa apps on WinUAE like GleXcess,Cube... ) 
o Enhancements for PPC version Renderer:Compositing2D
  Fix:   Was crashing if several tasks use Renderer:Compositing2D (Blender)
  Patch: remove repeated texturing (wallpaper) as CompositeTags() dont support them (Quake)
  Some other transparency effects are now supported (GleXcess,Turrican,etc...) 
  Use "Force IndirectMode:ON" & "Use StateTracker:ON" for better performances 
  (But Blender need "Force IndirectMode:OFF" + "Renderer:Soft to bitmap")
  Now Turrican,Giddy,FPSE,Aquaria works
o Now Maximum screen size is 2560x2560 (...so allow a 1280 double height screen)
o Bug fix about textures structures not freed
Beta 52
o StateTracker & soft3d.library are enhanced so "renderer:hard/hard overlay" is faster on Wazp3D/WinUAE & Wazp3D/Aros
o Now Maximum screen size is 2048x2048 : Blender :-)
o FPSE (Playstation emulator) support "Renderer:hard" now
(Need latest FPSE release + latest gpuw3d.dll + "Use Clear Image OFF" "Use Filtering ON")
Tested & working: Tomb Raider3, SoulBlade, Legacy of Kain, Crash Bandicoot, Parasite Eve, Gran Turismo
o Now you can run old 68k stormmesa progs on OS4 ppc machines
  (Just install from Aminet old StormMesa libraries + StormMesa2010's agl.library)
o Renderer:Compositing2D for OS4 ppc machines. It is only a Proof Of Concept (see soft3d_compositing.c)
  In fact only some 2D programs like "The Vague" support it well
o A few speedup for 32 bits displays BGRA/ARGB/ABGR/RGBA

What is StateTracker ?
 OpenGL and Warp3D use "states" to disable/enable the differents effects like Texturing,Gouraud,etc...
 Wazp3D before v47 (or QuarkTex) was just converting a given Warp3D state to the OpenGL or Soft3D equivalent state
 Example: W3D_SetState(context,W3D_TEXMAPPING,W3D_ENABLE); --> glEnable(GL_TEXTURE_2D);
 Now the StateTracker analyse very smartly if the current states have really changed.
 If they really changed then Soft3D or OpenGL equivalent states are updated
 If they dont changed then Wazp3D do nothing : it dont call Soft3D nor OpenGL
 So now the x86 (or Aros Mesa) calls are minimized
 So better performances in hardware mode
 So well written Amiga games like "Cube" are now very fast with "renderer:hard overlay"
 Note: If you have display problems then "Use StateTracker OFF" but it will be slower

What is Compositing 2D ?
 Amiga OS4 got the new graphics.library/CompositeTags() function.
 This function allow hardware accelerated "Porter & Duff Alpha compositing" (used in OS4 menus/windows transparency)
 But CompositeTags() also allow to draw textured triangles with corrected perspective and filtering.
 So as a Proof of Concept the latest Wazp3D v52 can use Compositing as renderer
 BUT keep in mind that CompositeTags is NOT a real 3D Driver:
 Unlike Warp3D CompositeTags dont have Zbuffer...cant draw lines/points...dont support 156 BlendModes...
 dont have TexEnv modes (=Coloring GL) like Modulate/Blend/Decal.
 Note: Corrected perspective still got a bug in GLeXcess demo

Note: LodePaint & "I have no tomatoes" still need "Hack Texs|No (safe)"
Note: D3gnop need "Force IndirectMode:OFF"
Note: StormMesa2010 display bug when several StormMesa progs are opened
Note: FPSE dont (yet) support "Renderer:hard overlay"

FPSE (Playstation emulator) showing SoulBlade support "Renderer:hard" now. For FPSE use those Wazp3D-Settings

Beta 51 (AmiKit only)

o Flickering on WarpTest,Engine,Payback: fixed
o Fog works for "Renderer:hard" (Cube,etc...). Fog is slightly false for "Renderer:soft".
o "Dump .OBJ(scaled)" works again. It allow to dump the displayed scene as a wawefront .OBJ/.MTL file
o NEW: "Hack Texs: RGBA" option that convert all textures to RGBA32 so faster with "Renderer:Soft to Image"
Note: Playstation emulator FPSE + gpuw3d plugin works but in "Renderer:soft to bitmap" mode only

Beta 50
o NEW: Hardware OpenGL(Mesa) can be used in AROS (Option Renderer:hard) but dont works well
  due to the fact that ArosMesa cant render in a specific bitmap as Warp3D do
  Option Renderer:hard is still bugged as the ArosMesa display is offseted to window's position
  Option Renderer:hard overlay almost works
  Wazp3D-Aros works better in "Native driver" mode with LockBitmapTags() implemented
o Bug fixes to make Blender/MiniGL/Warp3Dv5/OS4 works:
  W3D_FreeTexObj(tex) with tex still used in context->CurrentTex[n] : fixed
  MiniGL Set ZCompareMode but dont enable Zbuffer: patched
  Bug for some ZCompareMode/Zupdate values: fixed
  Need to flush pixels if texture was freed : fixed
  In Soft3D the DrawLine function was not good : almost fixed
  Menus partially drawn: patched with "Force IndirectMode:OFF" option in Wazp3D-Prefs
  Bugs in W3D_DrawArray() W3D_DrawElements() W3D_ClearBuffers() W3D_GetScreenmodeList() W3D_SetTexEnv(): fixed
  ... So Blender now works on OS4 machine without 3D-drivers :-)
  (Just remember that Wazp3D is limited to 1024x1024 screens)
o Bug fixes to make QT/MiniGL/Warp3Dv5/OS4 almost works:
  Fixed a bug in the blending function (transparency) W3D_ONE,W3D_ONE_MINUS_SRC_ALPHA
o In WinUAE the option "Renderer:hard overlay" now works fine
  overlay is now locked to current window so avoid to lock to shell-window like this "glExcess_os3 > nil:"
o Cube & TuxRacer for 68k/OS3/StormMesa now works in WinUAE. Need StormMesa libraries
  Use also latest StormMesa2010 from Aminet + set VERYFAST + LOCKMODE2 in StormMesa-Prefs
  in Wazp3D-Prefs set "Renderer:hard overlay" + "filtering" + "anti alias" Enjoy :-)

Wazp3D v50  for AROS that support now hardware rendering (Wazp3D -> Mesa) (Photo from AROS boot CD)

Beta 49
o Bugs fixed about pointers (may had cause crashes).
  W3D_SetBlendMode() is now perfectly emulated.
  Some optimizations: so drawing a simply textured object(CoW3D) on a 32 bits screen is now faster. Etc...
o New Wazp3D.library-ppc (port to Amiga 0S4 PPC). Very slow so can only serve for debugging OS4-Warp3D programs
  (Tested & working: Cube, AmiDark engine, Feather demo, TuxKart, GlGlobe, Glsmoke, etc...)
o On OS4 machine the new Wazp3D.library-ppc can be used from old 68k programs (=legacy 68k compatibility)
o The option Renderer "hard" is now faster   (Warning: This option still ONLY works on 32 bits BGRA)
o Warp3D V5 implementation (but only compiled for Wazp3D.library-ppc) so compatible with latest MiniGL
o AROS to OpenGL(Mesa) sources joined but not compiled yet (see soft3d_opengl.c & build-PPC.sh)
o New Wazp3D-Prefs rewriten a more os-friendly way
o The game "I have no tomatoes" works now (disable option "Hack RGB/RGBA/ARGB texs")
o Code clean-up so the sources can serve to write your own .library or .DLL

AmiDark is a game engine for AmigaOS4 (Grab from Wazp3D/Sam440)
Beta 48
o Bugs fixed: vertices having a bad color (Blitzquake) + culling defaulting to CW (CoW3D) + Zbuffer clear value (WarpTest)
o Early OPENGL32.DLL support: Like QuarkTex the latest Wazp3D/WinUAE is now hardware accelerated :-)
   Now can choose in Wazp3D-Prefs the Renderer:  soft or hard (then will use hardware OpenGL)
   Many hanks to the QuarkTex Author & WinUAE Team for their usefull sources

GLeXcess for OS3 (need stormmesa) in hardware in WinUAE using Wazp3D->OpenGL32.DLL
Can see hardware filtering & antialiasing on the nearer pixels

Beta 47
o New fast native soft3d.dll for WinUAE so all the drawings are maded with the X86 cpu
o Quake's perspective works now (so BlitzQuake is nearly perfect)
o Simple Linear-filtering (a few bugged ? very slow)
o Option "DoMipmaps" works now (it use more memory)
o StateTracker: If the states dont really changes then dont call soft3d and continue to bufferize the output (faster)
  StateTracker cant works if Wazp3D-Prefs is still opened (cause the user can change states any time)
o Enhanced Wazp3d-Prefs Gui

Beta 46   (not released)
o PayBack, ApoolGL, TiltNRoll works now :-)
o All BlendModes (transparency effects) are implemented so W3D_SetBlendMode() is now 100% emulated
  so better transparency emulation for GLeXcess,GlTron...
 o Option "Directly draw in Bitmap" (default) supports now 15/16/24/32bits modes

Beta 45.6 (only AROS ? AmiKit release)
o a fatal bug from version 45.5 fixed (SC=NULL)
o recompiled for 68020/68040 68881 for AmiKit

Beta 45.5 (not released)
o GLeXcess for OS3 works almost perfectly :-) (some new BlendModes implemented )

Beta 45
o Zbuffer 100% emulated : (All Zbuffer functions ? all ZCompareModes are implemented)
(So can do multipass texturing:  BlitzQuake looks much better now with lightmaps. MesaDemo's UnderWater works now)
o Support big texture sizes > 256x256 (GnuJump use 1024x1024 ones)
o Window resize works perfectly in any case
o Misc: MesaDemo's texcyl bug fixed. TexEnvMode/BlendMode cleanup and better emulation. Skulpt works again. FPS display fixed

MesaDemo's UnderWater in beta45 is an animation that use multipass-texturing

Beta 44
o New Option "Simu Perspective" that use two quadratic-aproximations per raster to simulate the texturing in perspective
o So some Games/Demos using perspective works now perfectly (GLtron, Warp3D's Engine,etc..)
o GnuJump(SDLJump) ? BeastieWorker games ? the StormMesa demo GLflare  works now
o Various hits and StormMesa bugs have been fixed (Many thanks to Kas1e, Bernd Roesch, Matthey, Wawa for their bugs-reports)
o Some bugs concerning the current TexMode?ColorMode relative to W3D_SetState have been fixed too (Many thanks to Kas1e)
o Zbuffer and Fog use float now
o Debugger new options:
    Debug Adresses (memory adresses for all Warp3D's functions)
    Debug as JSR (display calls to Warp3D as an assembly JSR)
    Step DrawPoly (Pause after each polygon drawn)

BeastieWorker(AmiBeastie) a very slow program

GnuJump(SDL Jump) use big textures up to 1024x1024

Beta 41
o Mainly BlitzQuake enhancements (light glows, menus)
o Additive blending. It fully emulate W3D_SetBlendMode(context,W3D_ONE,W3D_ONE)
o "Directly draw in Bitmap"  works better . Use it now for a better StormMesa emulation on a 32 bits screen  (window-resizing works now).
o GlTron works now but distorted.
o "Smooth Textures" works well now
o Smarter coloring (never do a stupid flat modulate with white, do gouraud only if color truly change) : Faster for simple coloring, fadein/out, etc...
o Default texenvmode is now W3D_MODULATE  (OpenGL compliant)
o Less texture distorsion (but still distorted)
o Two new options are implemented "Do MipMaps" ? "True Perspective" but they dont works  :-(
o Skulpt no more works :-(

Beta 40
o Quake now WORKS :-) (BlitzQuake from Aminet)
o Fix a bug related to MiniGL implementation of DrawArray/DrawElements (D3GNOP,Quake,...)
o TexEnvMode full implementation (W3D_REPLACE/W3D_MODULATE/W3D_DECAL/W3D_BLEND)
o New Options "Use Coloring GL" "Use Ratio Alpha" "Use AlphaMin?Max" "Debug Tex Number" "Use Quake Patch"
o Fog seems to works now

Beta 39
o New option "Directly draw in Bitmap" that can be faster ? more compatible  in some case
o New option "Display FPS" that count the frames per second
o New demo-program "StarShip" to use with Wazp3D (StormMesa libraries needed)
o The old option "Only Fast RGB24" is changed to "Only TrueColor 24?32"
o Full documentation also in french on http://thellier.free.fr/Wazp3D_fran?ais.htm
o French article on Web-magazine "Obligement" http://obligement.free.fr/articles/wazp3d.php

Beta 38
o StormMesa Works :-) (nearly 200 demos works now especially the impressive Atlantis and GlutMech demos)
o More compatible : some functions have been seriously debugged ? cleaned
o New option "Dump Object" to dump all as an .OBJ/.MTL text file
o New option "UpdateClearZ" to force a ClearZbuffer at each update (only for Enforce)
o New option "Debug Sepia Image" that colorize in red the part that Wazp3D drawn

Beta 37
o Four new games are working now: Alybox, D3gnop, Sopoblock,YAPMG :-)
o New option "Reload Textures" to load a new texture set (to change ugly originals textures)
o Library also builded without debugger (smaller version)
o New option "Hack ARGB" to convert  directly ARGB textures data to RGBA (for Tamar 3D) = economize memory
o Obsolete option "Clamp UV[0.0 1.0]" is removed (textures are allways W3D_REPEAT)

Beta 36
o Nicer ? a few faster with some new optimised pixels functions
o Texture-repeat works (Bzone)
o Smooth Textures options
o More compatible : Fog or coloring works now on partially transparent faces (like trees in Tamar 3D) = new pixels functions
o Fog works better (not perfect yet)
o New options "Use ClearImage" ? "Update At UnlockHardware "  to enhance update for some programs like gears(screen),Engine, sKulpt or TheVague.

Beta 35
o Code clean-up and library enhancements from Gunther Nikl
o "Hack1 tex RGBA" works again (draw a textured-triangle as a Gouraud untextured one = faster)
o "Hack2 tex RGBA" works again (draw a textured-triangle as a   Flat  untextured one = faster)

Beta 34
o Brand new pixels functions that allow to render lighted textures :-) so looks now very nice
o Corrected a very bad bug  concerning pixels-buffering.
o New Bug has appeared :-/ so 4D-clock ? other StormMesa stuffs now crash...
o Library is smaller :-)

Beta 33
o Full Documentation at http://thellier.free.fr/Wazp3D.htm
o Corrected a very bad bug introduced in beta 32 concerning memory freeing (beta 32 line 644)
o Corrected a very bad bug in W3D_UpdateTexSubImage
o AROS port from Matthias Rustler
o Various pointer==NULL bugs corrected by Matthias Rustler
o ClampUV (if disabled allow texture_repeat)
o Perspective correction (disabling)
o Zbuffer enhanced = ReadZSpan/WriteZSpan/etc...
o Code CleanUp (no more ULONG used as pointers to texture)
o Bug fix in GetDriverTexFmtInfo : now if use UseAnyTexFmt is ON then return supported
o More compatible with new 3Dprogs (BattleZone,Lamintro,4D-Clock,StormMesa examples, etc)
o Support rectangular textures
o Bug fix in Alpha blending on 32 bits texture but no zbuffer

Beta 32
o No more warnings when recompiling
o Perspective correction (cant be disabled)
o 3D-Clipper works
o Less bugs (even some few fatals one)
o Fog works (not perfect)
o First Culling (CCW/CW face order) implementation (still bugged)
o "Hack1 tex RGBA" works (draw a textured-triangle as a Gouraud untextured one = faster)
o "Hack2 tex RGBA" works (draw a textured-triangle as a   Flat  untextured one = faster)
o "AntiAlias Screen" new ? works (3x3 median per pixel) (slow)
o Library is smaller :-)
o More compatible with new 3Dprogs

Beta 31 (first public one)
o New tracked memory allocation
o Project's name changed to "Wazp3D"

A lots of works has been done to remove Wazp3D bugs
Now more than 200 programs works well with Wazp3D
But there are still some bugs...

BlitzQuake: quake patch = menu not transparents (texture1 ? texture9 to 32)
Mesa Demos: Demos that use W3D_updatetexture() sometime crash
Tamar3D: dragon gold = All Fogs are false
WazpTest: Fog is false (opengl fog use a standard z (=1/w)) (start 4.0 end 1.33 density 0.949999 GL=0.25 0.75)
WarpTest: Fog is false (use curious fog_end w=0.20 -> 1/w=z=5.0???) (start 1.0 end 0.20)
TheGoonies: use too much memory ? crash
Skulpt: works now :-) but 3d-preview got bad colors
4Dtris: dont display well (Zbuffer related)
Mesa demo spheremap ? Quake: polygon's edges dont ovelarp
GeoFace: DumpObject dont works well (resulting file seems not good)
LamIntro: crash at close
GlMatrix: Program use bad blending mode => use glmatrix patch

BlitzQuake in v41 with options Smooth Texture ? Quake Patch. Demonstrating the new additive-blending (halo of lights)

GLtron works now perfectly with the new "Simu. Perspective" ?  "Use ColoringGL" options

(GL) 117 is a flight simulator that works 95% with Wazp3D

glSokoban ( from the Warp3D MiniGL package) a boring game but very playable with Wazp3D (need a big stack value)

GLeXcess for OS3 (need stormmesa) Use ColoringGL + Simu Perspective

AlyBox works and is playable inside WinUAE/Wazp3D

Blitzquake in hardware in WinUAE using Wazp3D->OpenGL32.DLL
Can see hardware filtering & antialiasing on the nearer pixels

4D-clock a StormMesa program that run  (need StormMesa libraries)

BattleZone a tank simulations that works near perfectly now in beta36

Wazp3D is not perfect but it was good enough for me :-)
This Wazp3D binary is intended to be used within a very fast 68040 AmigaOS (= UAE emulator with JIT like WinUAE)
This Wazp3D binary is compiled for 68040-68881 (adjust your WinUAE settings)
Also need "full screen RTG" ? JIT both to be activated to obtain enough speed
(also need picasso 96/cybergraphics and an RGB24 screen)
Wazp3D is NOT an UAE hack and so (should) not depend on a particular UAE version
But it only need much speed for his software rendering
Some 3Dprogs need a big stack to be able to run without crash (glsokoban,etc...)

    Goureaud shading
    Alpha blending
    Color blending
    All Fogs
    All primitives
    All vertex formats,etc...

WarpTest the official Demo from Warp3D package  ( perspective correction ? coloring)

    Stencil masking
    Color masking
    Alpha masking
    Filtering, etc...

Enforce demo  works again in beta 49

Mostly those programs are on Aminet
WarpTest works 
Engine works  (need to enable "Simu. perspective" ? "ColoringGL" 
Sokoban works and is playable :-)
Gears_68k(screen) works 
"Tales of Tamar"'s 3D Map (not publicly available) works (no fog)
TheVague DiskMag
works perfectly (Use ClearImage OFF,Use ColoringGL)
4D-Clock works (need StormMesa libraries)  (need a big stack)
Battlezone1.3 works  ( need to enable "Simu. perspective" ? "ColoringGL" )
NeonBars works (need AmigaAmp running)
glmatrix works (need OS 3.5). It is a Matrix like screen-saver Need "glMatrix Patch". Need Quake?glMatrix patch
AlyBox works and is playable :-)  Use MiniGL 
Need a working AHI installation
Need Lucyplay.library in LIBS: 
Need to enable sound emulation in WinUAE
Need to add option -forcejoy in scripts (can works in a 640x480 window)
Need to enable perspective correction
works Need same configuration as AlyBox
MenoBox Xmas
works (Use StormMesa) Need StormMesa libraries
works (Use StormMesa) Need StormMesa libraries
PaperBox works
(22 StormMesa demos programs) 

StorrmMesaDemos like Atlantis works in beta38   (+AntialiasScreen + perspective)

(Use StormMesa)  Need StormMesa libraries
(aproximately 200  StormMesa demos programs) 
(Use StormMesa) Need StormMesa libraries
works Need "Use Quake Patch" ? "Smooth Textures" 

glquake68k_blitz -windowmode  +map dummy -guardband -particles 64 -hicontrast -gamma 0.5 -bpp 32 -width 320  -height 240 -mem 16 -zone 1024 -audspeed 5513 -nojoy -nocdaudio -nopsx -litfiles lm_RGBA

GLtron works Need "Simu.Perspective","Use ColoringGL", "Smooth Textures"
(need  to rename some files after installation)
GnuJump(SDLJump) Works. Need "Directly write in Bitmap","Use ColoringGL", "Smooth Textures" "No Perspective"
Use AlphaMin?Max = OFF for better text display
BeastieWorker  (from AmiKit Addon ArtiGames) Works for the latest version. Need a recent ixemul.library.  Need "Use ColoringGL", "Smooth Textures"
Skulpt68k alpha 28 (4 oct 2000) the 3D preview got bad coloring
(Only this old sKulpt version works ) 
(need also .BMP datatype) 
Payback demo Works Need "Use ColoringGL", "Simu Perspective"
4DTris Works but little Zbuffer problem
GLeXcess for OS3  Works almost perfectly. "Use ColoringGL", "Simu Perspective" "Poly Hack More"
(Use StormMesa)  Need StormMesa libraries. Better to resize to a small window to gain speed
For FullScreen :type " setenv glut/force_fs 1 " before running the demo.
Skip to next demo with space.
TiltNRollDemo Works almost perfectly. "Use ColoringGL", "Simu Perspective"
Only the "non threaded" version works well. Need a big stack
Need "Use ColoringGL", "Simu Perspective"
Only the levels testing.lvl and tough.lvl are working. Crash at exit
ApoolGL Works but slowly with a little Zbuffer problem.  . Need StormMesa libraries
TheVague2 DiskMag Works perfectly 
Enforce (game demo) Sometimes worked in beta 49
Very unstable but works well and fast when it works
I Have No Tomatoes works (disable option "Hack RGB/RGBA/ARGB texs")
OS4: Cube, AmiDark engine, Feather demo, TuxKart, GlGlobe, Glsmoke, etc.. Works but very very slowly :-/
Ports from Wawa: 117, LodePaint,etc.. Works
Some rare StormMesa demos programs Works partially  for some rare demos
(Use StormMesa) Need StormMesa libraries
StormMesa can also render as software :
  • So a StormMesa-prog can fully work but without using Wazp3D 
  • Or can use Wazp3D partially only for some functions( like reading/writing the Zbuffer )
  • Also it can use features that are not implemented in Wazp3D  like Stencil so obtaining a bad result or nothing
Better to use  "Debug Sepia Image" to be sure that Wazp3D is used 

CoW3D-2 demonstrating an advanced BlendMode
StarShip Demo

StorrmMesaDemos like GlutMech works in beta38   (+AntialiasImage )

Various StormMesa progs
D3GNOP (a 3D Pong)


The Vague (the First Warp3D based DiskMag) in windowed mode


BlitzQuake in v45 with options ColoringGL, Smooth Texture ? Quake Patch. Demonstrating multi-texturing (lightmaps on the walls)



The Wazp3D-Prefs tool allow to change some parameters of the Wazp3D library emulation

There is no perfect solutions in Wazp3D-Prefs you can always select between speed and features . Of course nice features are slower (or less compatible with original Warp3D)
In Wazp3D-prefs
All Options with a + MUST be selected BEFORE launching the program
Wazp3D-Prefs flag  Description More compatible Faster Nicer
+HardwareDriver Lie Pretend to be have a perfect hardware driver that can do all perfectly
Just enhance compatibility must be ON
Yes Idem  Idem
+TexFmt Lie Use (convert) any texfmt else use only texs that are texfmt=W3D_R8G8B8 or W3D_R8G8B8A8
Just enhance compatibility must be ON
Yes Idem Idem
+Hack RGB/RGBA/ARGB texs  1) Directly convert original ARGBA textures-datas to RGBA
2) Directly Use RGB RGBA textures (ie dont reallocate them)
Note: Use less memory than converting them to new textures
Better to let to ON. Only some few programs dont let original texture data be used (I have no tomatoes) and crash. If crash  then set it to OFF
No Idem Idem
+Only TrueColor 24 & 32 Only use 24 or 32 bits screens
NOT usefull for speed nor beauty
But Wazp3D is faster on a RGBA32 display 
No Yes? Idem
+Smooth Textures Do a smooth effect on texture data once for all (textures are truly modified) nicer & no slow down
Set this to ON to enhance aspect for poor pixelized textures
No Idem Yes
+Reload new Textures NOT usefull for speed nor beauty = only to hack an existing program with a new textures set Idem Idem Yes
+Do MipMaps  Alloc&create MipMaps Only usefull if textured objects are far away (like ennemies in BlitzQuake) Idem Idem Yes
+Use RatioAlpha(20%)  Force TexMode to 'a' if texture's transparent pixels than 20%
Use a simpler/faster function for those textures
So can speed up if textures are not much translucent (else look worst)
No Yes No
+Use AlphaMin&Max Ignore smallest (=transparent) and biggest (=solid) alpha values No Yes No
soft to Image allocate an Wazp3D internal RGBA buffer called the Image
Then copy this Image to the screen when an update occurs
faster but less compatible ==> if the program tolerate it then use it

soft to bitmap : draw with the CPU in current Amiga-bitmap memory
Dont allocate an Wazp3D internal RGBA buffer and  instead use directly the bitmap's memory
Update is no more needed so the 3D drawings are sometime faster.
Also can better mix the 3D drawings and other drawings (maded with graphics.library)
With this option Use BGcolor Hack+Use ClearImage+Use Min. Update+AntiAlias Screen have no effects

In WinUAE & Aros only can also render in hardware :
WinUAE: draw in WinUAE's BackBuffer then do glReadPixels to the current Amiga-bitmap memory
Aros: draw in  BackBuffer then do an AROSMesaSwapBuffers to the current Amiga-bitmap

hard(overlay) : Faster drawing method. Open a double buffered sub-window inside (upside) the current  window This mode is recommended for full-screen 3D-Progs. 

This hard mode works only inside WinUAE in windowed mode. Need also a 32bits BGRA Workbench or screen 
But support windowed & own screen apps
You can select Filtering & AntiAliasing & StateTracker in hardware mode too :-)

For the moment display is not perfect (GlExcess works 95%,BlitzQuake 99%) but most programs works
Some progs (GnuJump) need "ClearImage OFF" in Wazp3D-Prefs
Background color or Flat color are sometime lost

Soft to bitmap Hard overlay hard
PolyHack|No (normal)|Hack:up to 5|More:up to 7 Convert trifan & tristrip (up to 5 or 7 points)  to polygons as Wazp3D can draw true polygons.
If program tolerate "up to 7" then use it = faster
Set No for Tuxkart
No  Yes  Idem
Use BGcolor Hack  Grab current background color from a pixel in the bitmap
Only usefull for some programs to get the current background color: dont change that if it works
No   Idem  Yes
Use Fog  Fog computation
Note: Use much CPU
Yes  No Yes
Use ClearDrawRegion Use W3D_ClearDrawRegion() Clear the screen or not
Set this to OFF for 3D-progs that draw all over the screen (BlitzQuake)
Yes No Yes
Use ClearImage Clear  Wazp3D internal RGBA buffer after Update
Set this to OFF for 3D-progs that write several times on the same bitmap (The Vague)
SomeTime No Idem
Use Min. Update Minimal Update: Update only the rectangle that Wazp3D has drawn
Set this to ON for 3D-progs that draw only a part of  the screen
Dont change that if it works
No Yes Yes
AntiAlias Screen Smooth the whole Wazp3D Image buffer (Dont works with Renderer: Soft to bitmap)
Note: Use a lots the CPU. Better to use "Smooth Textures" if the program tolerate it 
Yes  No Yes
Perspective|No (fast) |Edges only|Simulated  No Dont compute perspective at all : faster
Use it for 2D games that dont use perspective
Edges only: Compute corrected perspective for edges then do a linear interpolation for pixels

Simulated Compute corrected perspective for textures for each pixel
Use two quadratic aproximation per line to simulate fastly the texturing in perspective
So some Games/Demos using perspective works now perfectly 
Note: Use a lots the CPU

Texture|No Coloring|GL Coloring|Hacked: Gouraud|Hacked: Flat|No blending
Textures dont use special colorizing effect from TexEnvMode = faster

GL Coloring
True OpenGL Color computation so emulate truly the TexEnvMode
Note: Use a lot the CPU

Hacked Flat
Draw all textured-triangles as Flat untextured ones
Hacked Gouraud
Draw all textured-triangles as Gouraud untextured ones
No Blending
Dont compute transparency

Yes No Yes
Use Quake/GLMatrix Patch Fix a BlitzQuake/MiniGL bug. Fix a glMatrix bug
force the 32 bits textures as transparents ones so the menus display well in BlitzQuake
Dont change that if it works
Quake Yes Idem Quake Yes
Use Filtering Simple linear filtering : a pixel is the average of this pixel and next pixel (slow and bugged). Note: Use a lots the CPU. Better to use "Smooth Textures" if the program tolerate it  Idem No Yes
Use StateTracker Dont stop to draw if states dont really have changed so faster
Dont change that if it works
Idem Yes Idem
Force IndirectMode  ON:Bufferize the pixels among triangles. OFF: Is a DirectMode = Wazp3D always finish to draw No Yes Idem
Debug Tex Number If TRUE print texture number in bitmap  No Idem Idem
>>> Enable Debugger >>> & Display FPS Can set those two to ON to see current speed
all Options after ">>> Enable Debugger >>>" like "Debug Function" "Debug Driver" etc.. are only here for debugging programs ==> programs will not looks better


Earth : Normal / "Tex as RGBA1 Hack" / "Tex as RGBA2 Hack"

'HardwareDriver Lie' & 'TexFmt Lie' are a way to lie to the 3Dprogs.
Some 3Dprogs ask about the driver possibilities (with W3D_QueryDriver, W3D_GetDriverTexFmtInfo or W3D_Hint) and Wazp3D can lie in this case
If the 3Dprog can adapt to the lacking features of Wazp3D then better to set those flags to FALSE
If not and the 3Dprog just quit due to a lacking features of Wazp3D then better to set those flags to TRUE
Example: a 3Dprog  ask for texturing + fog + mipmapping but Wazp3D cant do mipmapping
Two possibilities

1)    The 3Dprog adapt itself and decide to not use mipmapping
2)    The 3Dprog dont adapt and fail .... :-/
then better to set HardwareDriver Lie to TRUE there will be no mipmapping but the 3Dprog will run

Idem for textures some 3Dprogs ask about the supported texture-formats
Example: a 3Dprog  want a 16 bits texture-format like W3D_R5G6B5  but Wazp3D use only RGB or RGBA textures
Two possibilities

1)    The 3Dprog adapt itself and load or create RGB/RGBA textures
2)    The 3Dprog dont adapt and fail .... :-/
then better to set TexFmt Lie to TRUE so Wazp3D will convert textures itself (and will use much more memory) but the 3Dprog will run

Conclusion: if it works with HardwareDriver Lie and TexFmt Lie  to FALSE dont change it. If it fail try with TRUE ;-P
If HardwareDriver Lie is not set then W3D_QueryDriver, W3D_GetDriverTexFmtInfo or W3D_Hint returns the real possibilities of current version of Wazp3D
Wazp3D cant lie about using a chunky screen : it really cant use it :-/


Engine (from Warp3D package)  in beta36 with the new lighting
(16bit screen, Use Coloring +  Perspective correct.+Antialiasing + Update At UnlockHardware )

The Wazp3D.library FAQ

Why prog xxx builtin renderer is faster than Wazp3D ?
Often built-in software renderer use only 8bits textures . Wazp3D use 32bits coloring/texturing ==> 4 time slower

Where can i found documentation about Warp3D programming ?
Here is the official Warp3D doc

Can you more explain about directly soft to Image/bitmap ?
Will it reduce cpu speed, or it will be faster even with MinUpdate/etc with NO ?

1) soft to Image

Wazp3D alloc/use an RGBA buffer (i called it the "Image" = in french the picture) that is the size of the context bitmap.
Wazp3D draw all inside this RGBA buffer.
It is more easy for Wazp3D Because Wazp3D is sure to manipulate RGBA pixels When a "finishing-frame" function occurs (clearzbuffer,flushframe,etc...)
Then it call DoUpdate() that mainly do an WritePixelArray() Image --> bitmap
MinUpdate YES
                         Do the DoUpdate() for only the rectangle that Warp3d has drawn on Image : copy this rectangle to the bitmap
MinUpdate NO
                         Do the DoUpdate() for full Image : copy all to the bitmap
When a frame is finished the prog3d can do W3D_ClearDrawRegion or clear the bitmap an other OS way.
So Wazp3D dont know if the prog has cleared the bitmap to begin a new frame (most progs) or continue to draw (The vague)

UseClearImage YES
                             Wazp3D clear the RGBA buffer (the "Image") after the  DoUpdate()
UseClearImage NO
                            Wazp3D never clear

Conclusion for soft to Image

2) soft to bitmap

There is no RGBA buffer
So it use the bitmap memory as "Image" so works
To draw some pixels (say) textured ? blended:
 - Read the pixels values (bitmap format-> RGBA) from the bitmap in a small buffer (inside a lock/unlock bitmap)
 - Do the texturing/blending/etc on the small buffer
 - Write the pixels values (RGBA -> bitmap format) from the small buffer to the bitmap(inside a lock/unlock bitmap)

Conclusion for soft to bitmap

If i got Warp3D (or QuarkTex) working is there any reason to use Wazp3D ?

With Wazp3D you can

Why a GPL License ?
I wish that people will ports Wazp3D to others AmigaOS-like. So i release the sources :-)
But i dont want people to make money with my code and my work
So i needed a Free Source License (but  i am not a lawyer and dont know much about Licenses) so  i have preferred the most famous one.
But GPL will forbid existing  programs to use Wazp3D ?
NO if you only use dynamical-linking (ie use only normally the Wazp3D.library binary)
A key dispute related to the GPL is whether or not non-GPL software can dynamically link to GPL libraries. The GPL is clear in requiring that all derivative works of GPL'ed code must themselves be GPL'ed. However, it is not clear whether an executable that dynamically links to a GPL code should be considered a derivative work. The free/open-source software community is split on this issue. The FSF asserts that such an executable is indeed a derivative work if the executable and GPL code "make function calls to each other and share data structures,"[26] with others agreeing,[27] while some (e.g. Linus Torvalds) agree that dynamic linking can create derived works but disagree over the circumstances.[28] On the other hand, some experts have argued that the question is still open: one Novell lawyer has written that dynamic linking not being derivative "makes sense" but is not "clear-cut,"[29] and Lawrence Rosen has claimed that a court of law would "probably" exclude dynamic linking from derivative works although "there are also good arguments" on the other side and "the outcome is not clear"[30] (on a later occasion, he argued that "market-based" factors are more important than the linking technique[31]). This is ultimately a question not of the GPL per se, but of how copyright law defines derivative works. In Galoob v. Nintendo the Ninth Circuit Court of Appeals defined a derivative work as having "'form' or permanence" and noted that "the infringing work must incorporate a portion of the copyrighted work in some form," but there have been no clear court decisions to resolve this particular conflict.
Since there is no record of anyone circumventing the GPL by dynamic linking and contesting when threatened with lawsuits by the copyright holder, the restriction appears de facto enforceable even if not yet proven de jure.

1) Using Wazp3d.library
You cant say that a  3D-program that only dynamically-link to Wazp3D is a "derivative works" from Wazp3D
In fact  the 3D-Program was created/compiled to use/link with Warp3D not Wazp3D
Dynamically-linking  to Wazp3D not incorporate (inside the 3D-program) a portion of  the copyrighted work in some form
"'form' or permanence" is not etablished especially if Wazp3D.library is not distributed with the 3D-Program
2) Using the sources
Of course if you modify the Wazp3D's sources then the new version must be in GPL

You said that program xxxx works but it crash for me
Try to increase stack
Setting   'HardwareDriver Lie' ? 'TexFmt Lie' to TRUE is safer

I try to test it on my winuae config (2.4 / geforce).
GeForce wont help as it is a CPU only rendering.

6-7 fps only is here. It's pretty strange, becouse 2.4 cpu i think very powerfull for this little calculations.
One thing to keep in mind : there is few calculations in the 3Dprog "gears"
BUT on his side Wazp3D do a lot of work only to draw a pixel (texturing)

Gears ( from the minigl package)

Gears full screen, and .. it's like crazy slideshow :)
1 fps maybe + i just can see any redrawing and screen-buffer fliping.
Yes there is still a problem with full-screen-refreshing
    - Warp3D draw directly in the bitmap
    - Wazp3D draw all in an internal RGBA32 buffer then try to detect the best moment to copy
    the buffer to the bitmap (ie when the 3Dprog have really finished to draw)
Sometime it works well cause the 3Dprog software call FlushFrame() or SetDrawRegion() or ClearZBuffer()
to finish the drawing... Sometime it dont works... (1)

sKulpt from Stephane Guillard  (need BMP datatype)
sKulpt still got color problem
(But only this old version of sKulpt truly works)

It's must be like this or it must be fast on my configuration ?
Seems that some PC and/or WINUAE versions seems to be faster with JIT and Wazp3D than others
For me the old WinUAE 0.8.22 release 4 seems to works especially fine
Anyway Wazp3D is slow : just keeep in mind that it is the 68040 (JIT-emulation) that compute each pixel one per one
(Wazp3D it NOT an UAE hack ===> it dont use directly the Intel CPU but the 68040 emulated one)
Have you ever seen a fast CPU only 3D program on an Amiga4040 ? (2)

NeonBars (3D plugin for AmigaAmp) (need a texture called  floor.ppm,  here chrome.ppm has been renamed to floor.ppm)

Fog looks like not perfect ?
Seems that the fog-formula used is not the same as the Warp3D one
If someone know how Warp3D compute the fog ...??

Why "Engine" is distorted ?
Wazp3D-beta31 was lacking perspective-correction
Beta32 looks better but Engine still got a problem

Is it the long awaited software-driver for Wazp3D ?
Not exactly Wazp3D is a full implementation of Warp3D not only the 3d-driver part.
So you dont need to install the original Warp3D-package : you only need to install Wazp3D.library
Of course you can install the Warp3D demos like Sokoban

What the difference with QuarkTex ?
QuarkTex is a nice WinUAE hack but it need WinUAE and OpenGL and a 3D card. Also it dont works for everyone...
(it never worked perfectly for me :-/ ) but is much faster as it use the 3D hardware
If QuarkTex  works well for you dont try Wazp3D

Warp3D:  3Dprog-->Warp3D-->AmigaOS-->Driver-->3Dcard
Wazp3D:  3Dprog-->Warp3D-->AmigaOS-->68040

Note: Unlike QuarkTex you can run multiple Wazp3D applications concurrently

WarpTest (from Warp3D package) (need Use Persp.Correct)

There are lots of Warnings when recompiling
No more warnings with beta32 : code has been cleaned :-)

Why a beta 32
Much (and more than i imagined :-) ) people seems to be interested in the Wazp3D beta31
So i tried to remove some bugs for all those people that said "Wazp3D is Cool"

What is new with beta 32 ?
Mainly no more warnings when recompiling
See here for the list of new features

What is new with beta 33 ?
Mainly the bad memory-bug  was fixed
AROS port from Matthias Rustler
See here for the list of new features

What is new with beta 34 ?
Mainly the new pixels functions that allow to render lighted textures :-)
See here for the list of new features

What about AROS version ?
Wazp3D is now in the AROS CD (It is LIBS:Warp3D.library)
So you can write 3D progs for AROS now :-)


How fast it is ?
Slow but usable on a fast WinUAE-JIT
For example you can play Sokoban or AlyBox smoothly or watch MiniGL demos like gears
Engine ? WarpTest seems to be faster than a real A4040+CV64/3D.
Here it is some speed results
--> Coloring use much CPU
--> AntiAliasing the screen use much more CPU

What  is DumpTexture/ ReloadTextures ?
With the debugger enabled and DumpTextures  enabled then all textures ares saved as RGB or RGBA
.RAW files in T:
You can reload  texture(s) with the debugger enabled and ReloadTextures (see example 1 , example2)
The new textures with modified pixels must

A "Flower Power" tank in Bzone with ReloadTextures

What  is "Debug Sepia Image" ?
With the debugger enabled and "Debug Sepia Image" Wazp3D colorize in red the part it drawn
So you can be sure if Wazp3D is really used and not an other renderer

MenoBox with SepiaImage : A StormMesa 3Dprog that truly use Wazp3D beta 38

What  is Dump Object ?
With the debugger enabled and Dump Object  enabled then all that is drawn is dumped as text
This output represent an .OBJ and .MTL file very common in various 3D-Softwares
(Usage: copy the text-output and save it in two files )
Use it with DumpTextures to obtain textures too

ImuBox works now in beta 38

Gears  in beta 34 showing a gear and a lighted gear

The Vague (the First Warp3D based DiskMag) (Use ClearImage OFF)

(1) I hope someone will enhance Wazp3D as i have no time left to work anymore on this project
(2) Perhaps a very smart ASM programmer will enhance speed a few but there will be no miracle :-)

(3) All grabs from WinUAE/Wazp3D

Some of the Warp3D implemented functions do (in fact) nothing
(except updating the internal context/textures structure datas/flags )
Function  Status
CreateContext works
CreateContextTags works
DestroyContext works
GetState works
SetState works partially
Hint works
CheckDriver works
LockHardware works (There is no hardware so do nothing)
UnLockHardware works (There is no hardware so do nothing)
WaitIdle works (There is no hardware so do nothing)
CheckIdle works (There is no hardware so do nothing)
Query works
GetTexFmtInfo works
GetDriverState works (There is no hardware so do nothing)
GetDestFmt works
GetDrivers works (only one driver)
QueryDriver works (only one driver)
GetDriverTexFmtInfo works (only one driver)
RequestMode works
RequestModeTags works
TestMode works
AllocTexObj works partially
AllocTexObjTags works partially
FreeTexObj works
ReleaseTexture works
FlushTextures works
SetFilter do nothing usefull (=only update internal settings)
SetTexEnv works 
SetWrapMode do nothing usefull (=only update internal settings)
works partially as textures are allways W3D_REPEAT
UpdateTexImage works
UpdateTexSubImage works
UploadTexture works
FreeAllTexObj works
SetChromaTestBounds do nothing usefull (=only update internal settings)
DrawLine works (and support textured lines)
DrawPoint works (and support pointsize >1)
DrawTriangle works
DrawTriFan works
DrawTriStrip works
Flush works
DrawLineStrip works
DrawLineLoop works
ClearDrawRegion works
SetAlphaMode do nothing usefull (=only update internal settings)
SetBlendMode works 
SetDrawRegion works
SetDrawRegionWBM works
SetFogParams works(?)
SetLogicOp do nothing usefull (=only update internal settings)
SetColorMask do nothing usefull (=only update internal settings)
SetPenMask do nothing usefull (=only update internal settings)
SetCurrentColor works (?)
SetCurrentPen works (?)
SetScissor works
FlushFrame works
AllocZBuffer works
FreeZBuffer works
ClearZBuffer works
ReadZPixel works
ReadZSpan works
SetZCompareMode works
WriteZPixel works
WriteZSpan works
AllocStencilBuffer works
ClearStencilBuffer works
FillStencilBuffer works
FreeStencilBuffer works
ReadStencilPixel works
ReadStencilSpan works
SetStencilFunc do nothing usefull (=only update internal settings)
SetStencilOp do nothing usefull (=only update internal settings)
SetWriteMask do nothing usefull (=only update internal settings)
WriteStencilPixel works
WriteStencilSpan works
DrawTriangleV works
DrawTriFanV works
DrawTriStripV works
GetScreenmodeList works
FreeScreenmodeList works
BestModeID works
BestModeIDTags works
VertexPointer works
TexCoordPointer works
ColorPointer works
BindTexture works
DrawArray works
DrawElements works
SetFrontFace works
Warp3D V5
SetTextureBlend works partially (only the TexEnvModes)
SetTextureBlendTags works partially (only the TexEnvModes)
SecondaryColorPointer do nothing usefull (=only update internal settings)
FogCoordPointer do nothing usefull (=only update internal settings)
InterleavedArray works
ClearBuffers works
SetParameter works partially (classic fog, point size)
PinTexture works (?) (implemented but not compiled in this version)
SetDrawRegionTexture works (?) (implemented but not compiled in this version)

Lamintro (Use ClearImage OFF)

"Tales of Tamar"'s 3D Map inside WinUAE/Wazp3D

The Vague (the First Warp3D based DiskMag) (Use ClearImage OFF)

"Tales of Tamar"'s 3D Map with AntiAlias Screen + Smooth Textures

The debugger in action  tracking SopoBlock

Bzone with some new textures demonstrating ReloadTextures options (+ Coloring + perspective)

Enforce has worked sometimes in beta38 (need new option ClearZbuffer at Update)
Perhaps need (?) AmigaOS3.9 and WinUAE1.4.6

StorrmMesaDemos like RollerCoaster works in beta38   (+ Coloring + perspective)