texture generation languagedesigned for bandwidth critical applications. The compression ratio varies from about five times smaller to ten times smaller than the equivalent textual files.
Gouraudis now supported ().
Invarincecommand has been extended to cover all the main texture generation routines.
Generating Texturesprite. This is used to provide visual feedback to the user about where textures are being generated. It is not displayed when resizing or changing palette.
Invarincecommand. This is intended to allow textures to be resized without altering their percieved scale. This command replaces those referred to in the history of v1.05. Please refer to the
Languagefile for more details.
Offreturn &FFFF and &0 respectively.
OneDcommands which are like the
OneDimensionalcommands, only they act on a specified buffer.
Minusfunction: Minus(X) = -X. Unless X=&8000 in which case then Minus(X) = &8000.
Threeconstant values. These are partly for use in referring to buffer numbers.
OneDPointcommands added. These have the syntax
TwoDPoint(Zero|One,X,Y).This is the first command which implements a new convention, namely, if a command which normally contains the phrase
dimensionhas this element replaced by
Dand an additional buffer number is added as its first parameter, then the command will perform as expected.
OneDFillcommands added. The syntax is:
Zero|Onerepresents the buffer number and the buffer is completely filled with the value
filter creationfunctions, but produce results which are invariant to resizing (i.e. increasing the size of a texture does not rescale it, but produces more of the same texture. This will still tesselate. These commands are all prefixed by the letter
I. They do not currently work and should not be used yet.
North, South, West, East, NorthWest, SouthWest, NorthEastand
SouthEastconstant functions and their one- and two-letter abbreviations. These return values from zero to seven, and are currently of little use.
Outputwindows. This will be redesigned to make more space shortly.
SaveSpritedialogue to indicate whether a given image uses a palette or not.
SimpleSubtractfunctions. With these in place, all the relevant combination-type functions are now implemented without using self-modifying code in order to increase speed on StrongARM-equipped machines.
PseudoExposurecommand. This takes one parameter and affects any subsequent
DefineLightSourcecommands. It offers some control over how non-linear colour distorting effects, which produce over-exposed looking results with washed out highlights when using lightsources, are handled. If it is set to &1000, then no colour distortions occur. This can produce a slightly flat effect, however. The default value is &FFFF which means that highlights (usually whitish) are fairly commonly produced.
For those who want to be able to play back multiple image sprite files on their backdrop with full cacheing, it seems worth pointing out at this juncture that this is not the job of an algorithmic texture generation program, but should be performed by the program which manages the backdrop.
It is hoped thet the author will be able to point interested parties to such a program in the near future.
Run !TexturGdn -Remote.
Registeredfunction which returns 0 if the user only has the Freeware version of Texture Garden.
DefineLightSourcecommand tweaked to reduce non-linearities near the zenith, and and its theta parameter's sign has reversed (to make the syntax sensible). These changes mean that this command is not backwards compatable with the one in version 0.55 ().
ShineLightOnVirtualSpritecommands added. These are used to produce a range of bumpmapping effects by drawing on techniques used in ray tracing. More details are provided in Docs.Language, Docs.Technical and Docs.Features.
SpecularPhongcommands added. These affect how individual lightsources interact with the textures' surfaces.
ResizeBumpMapcommand to allow the front end to resize the new textures.
CreateColours(Model)command added. This is intended to replace the
CreateColoursUsingCIEDatacommands. It takes as parameters either
CIE(2). Parameters greater than 2 are reserved and should not be used. The use of the old commands is still allowable, and they will remain available. This fairly major has been made partly so that it will be easier to implement an editor for palette files, and partly for the sake of consistency with the new
SetColourcommand added. This chooses a colour to be used when painting directly to a virtual sprite, or when selecting the colour of lightsources.
CreateColours, SetColour, RGB, HSV, CIE, Specular, Gourad, Phong, DefineLightSource, and the cheesey
heighton the left. This is more logical than the reverse and it now corresponds to the display produced by the raw palette files.
Abortedsprite so that it now fits properly inside a 64 pixel wide icon ().
Docsdirectory moved out of the application directory.
Ditheringsection in the Docs.Technical file for details.
ErrorText <string>command provided. This is similar to
Error(Value)which generates an error report containing the value of its parameter.
ReportText <string>command provided. This is similar to
Report(Value)which sends a WIMP message (no. &804C0) to a debugging program. This may be of use for sending commands to dircecly control !Zephyr.
If IsLessThanOrEqualTo(LogBitsPerPixel,&2) Then Dithering(&4000) Else If IsEqualTo(LogBitsPerPixel,&3) Then Dithering(&2000) Else Dithering(&0)commands which were recommended until now.
Run !TexturGdn -file <batchfile>. More details may be found under
Batch processingin the Docs.Technical file.
ScaledMultiply(A,B)functions. These are intended to be complete replacements for:
Combine(Multiplication,A,B). These functions have been added for a number of reasons. Improved readability of textures is one factor. Another is that because all commands using combination types currently execute using self-modifying code, this may produce a performance hit when using the StrongARM processor. As the
Multiplicationcommand was used internally in resizing textures, this operation should now be much faster. The old commands now merely call their new replacements so the new ones should consequently always be used in place of their predecessors. The old commands will be retained.
Errorcommand, but sends the value to a WIMP debugging program such as my own !Zephyr.
Abortedmessage when Escape is pressed, or there is an error in texture generation.
ptr_handsprite was not in the WIMP's sprite pool fixed ().
Zapuses dynamic areas. These problems should now have been fixed and ZapTexture should now be fully RISC-PC compatible. Thanks are extended to James Harvey for the initial bug report, and to James Holtom for the use of his RISC-PC ().
Cosmetic improvementssection to the !ReadMe file.
CreateColoursUsingCIEDatacommand. The PRM's documentation on the SWI used by this command seems to be completely wrong and the SWI itself behaves in a very strange fashion, however, hopefully everything will work.
MakeSpriteFromVirtualSpriteimplemented. These commands quietly usher in a new era of texture generation within Texture Garden by providing full support for multiple layer textures. This is described in the Docs.Technical file, and in the
Getting startedsection to the !ReadMe file.
Write/Click/Dragicon types in my dialogue boxes which meant the caret needed to be positioned manually inside them by using simple
Writableicons which the WIMP deals with correctly. The WIMP still cannot consistently cope with situations where it has to borrow the caret from another application ().
Rawfile export to text editors and similar applications. This seemed to be because Texture Garden was taking such a long time to generate the data that by the time it had finished the editor had forgotten all about what was going on. This had the unfortunate side effect that the file was left in the
!Scrapdirectory and not deleted. This turned out to be the straw that broke the camel's back for the raw file option. It has been completely deleted and replaced by a far more useful array of information concerning the sprite which is to be saved.
Rapid exitoption and preference.
ResizeSpritecommands. These take all the effort out of resizing textures.
ResizeSpritecommands. You can now resize textures dynamically by dragging their bottom right-hand corners.
XOS_SynchroniseCodeAreasSWI is now called where self-modifying code is used. If there is a performance hit when using this on older machines, it is quite small. This means calling the
XOS_PlatformFeaturesSWI is probably not needed.
OS_Filecommands used for loading code. Whether the program works on StrongARM chips now depends on the following:
Absolutefiles compressed using
TwoDimensionalMask(Type)commands. New internal
TG_miscopTexture Garden call added with two reason codes for memory allocation.
Zapmode updated so it recognises the new commands.
MakeSpriteFromVirtualSpritealso added at this stage so the user should not need to update their
Zapmode too frequently.
Messagesfile closed properly.
Zapmode does not need to treat files beneath a
small_apposprites are not in the WIMP's sprite pool ().
Textures.!ReadMefile modified so that it is more aesthetically pleasing in the new
Zapmode and it has a
Checksumwhich enables it to be loaded by unregistered users of Texture Garden.
Escapenow stops animations and breeding as well as aborting drags.
SaveAnidialogue boxes are brought up with a small leading menu. This involves unlinking the pointer, moving the mouse over the sub-menu pointer , and then moving it back again. This is a bit ugly. There may yet be ways of hiding the leading menu, though making it vanish looks very difficult. The problem is that the
Wimp_DecodeMenuSWI fails to keep track of sub-menus if they are opened directly by the program, and not by the WIMP. I therefore have to pretend that the user has selected the sub-menu themselves. Totally bypassing the
Wimp_DecodeMenuSWI and writing code specifically may solve this, but means doing all the work in the program.
Wimp_DecodeMenurelies on the fact that the window handles of the dialogue boxes encounters in menu structures remain unchanged from when the sub-menu is created to when the
Wimp_DecodeMenuSWI is called. Because my palette window needs to be deleted and recreated if its sprite area changes position in memory, the WIMP's menu decoding has forgotten about the dialogue box because it has changed its handle. At the moment this causes the entire menu to collapse.
Deleteicons are less prominent and
Select palettehas been moved to the left and is consequently quicker to access.
!Helpfile made more coherent.
Cancelicons added to the dialogue boxes.
Open main windowand
Open options windowoptions.
Monooptions, and a backend that uses these in conjunction with a JPEG quality variable. This was done to shield the user from some of the complexities of
!ChangeFSIs command-line options.
!Spritesfiles updated with more 3D icons.
!Scrap. This means that:
!Editand all other editors.
Zapcan now use the fact that the file is within a
Texturesdirectory to set the editing mode correctly.
!Scrap, and if it is saved from the editor then that is where it goes.
fixed, but using some dodgy code that could have unexpected side effects if more than one program is being run which accepts text files at the icon bar. This problem can be demonstrated by loading two text editors and dragging a file directly from Texture Garden into each in turn. As this kind of circumstance will probably occur very infrequently, this problem has not yet been addressed.
.s added to this file for clarity.
!Spritesfiles updated with slightly 3D icons.
!Spritesfiles updated with better icon versions.
ptr_handsprite used for drags.
Optionstemplates improved to provide more room.