Changes for 2.1.0243.5005, 10-26-2005
- AMD Athlon 'movd r32,mmx' performance workaround added. See section 9.6
"Avoid Moving Data Directly Between General-Purpose and MMX™ Registers" from the
"Software Optimization Guide for AMD Athlon™ 64 and AMD Opteron™ Processors" document
for details.
- Added PixoSetColorMask()/PixoGetColorMask
- PixoSetZPass()/PixoSetStencilValZPass() now work in PIXO_RASTERIZATION_PIPELINE_STANDARD mode.
- Added PixoStencilEnable() / PixoStencilDisable() / PixoIsStencilEnabled()
Changes for 2.0.0178.8053, 8-3-2004
- Added scissor functions:
PixoScissorEnable();
PixoScissorDisable();
PixoIsScissorEnabled();
PixoSetScissor(int x, int y, int width, int height);
PixoGetScissor(int *x, int *y, int *width, int *height);
- Added PixoBufferOpenWithZ
- Added PixoSetCPUFlags
- Added UserData parameter to PixoSetTriangleCallback function.
- Added PixoMatrixInverse4x4.
- Fixed multimon bug when using DirectDraw and PixoBufferBlitRect.
- Added PixoSetVertexTransformCallback / PixoGetVertexTransformCallback.
Changes for 2.0.0140.9691, 11-17-2003
- Added full set of framebuffer src/dest blends and blend ops.
- Changed over to a general three-stage pipeline, with a full set of operand modifiers
and state ops.
- Added buffer width and height parameters to PixoSetFrameBuffer, PixoGetFrameBuffer.
- Added PixoBlendEnable, PixoBlendDisable, PixoIsBlendEnabled
- Added PixoACompareEnable, PixoACompareDisable, PixoIsACompareEnabled
- Added PIXO_STREAM_POSSCREENXY, PIXO_STREAM_POSSCREENXYZ, PIXO_STREAM_POSSCREENXYZRHW
- Added PixoMatrixMultiply4x4(float *mat, float const *a, float const *b);
- Added PixoSetZClipRange / PixoGetZClipRange
- Added PIXO_STREAM_POS(_count), PIXO_STREAM_TEX(_texnum, _count) stream macros.
- Added PIXO_STREAM_DIFFUSE_ABGR and PIXO_STREAM_SPECULAR_ABGR stream definition constants.
They swap the B and R components on load.
- Added support for clamping textures up to 4096x4096.
- Workaround compiler bug with shr_int64, shl_int64 because fastcall and inline asm don't
play nicely together in optimized builds.
- Fixed bug with texture gradients for lines, which caused textures to display
incorrectly on lines.
- Fixed bug with x-major lines with slope > 0, where sometimes bottom run
of pixels didn't get drawn.
- Added the PIXO_VERTEXCALLBACK_CALCULATE_OBJECTSPACECOORDINATES flag for the
PixoSetVertexCallback routine and the ObjectSpaceCoordinates member to PIXO_VERTEX.
If this flag is set, your PIXO_VERTEXCALLBACK will point to the local object
space coordinates. Useful if you plan on doing lighting calculations
which require the object space position - such as point and spot lights.
- The ci member is now valid in PIXO_VERTEX during for PIXO_VERTEXCALLBACK.
- Added PixoGetConcatenatedTransformMatrixInverse() routine.
Changes for 1.1.0119.3306, 6-17-2003
- Changed polarity of fog so that fog==0 means full fog, and fog==0xFF means no fog.
- Bug: Fix fast path detection for rasterop 10 and fragment format 8.0
- ACOMPARE (general alpha compare) capability added:
- PixoSetAlphaRefValue / PixoGetAlphaRefValue
- PixoSetWStateACompare / PixoGetWStateACompare
- Control over alpha channel modulation added:
- PixoSetWStateDiffuseAlphaop / PixoGetWStateDiffuseAlphaop
- PixoSetWStateTex1Alphaop / PixoGetWStateTex1Alphaop
- New 2D Blit routines:
- PixoStretchBlitARGB8888 / PixoBilinearStretchBlitARGB8888
- PixoSetStretchBlitARGB8888Code / PixoGetStretchBlitARGB8888Code
- PixoBilinear2xStretchVerticalARGB8888 and Pixo2xStretchVerticalARGB8888
- PIXO_BUF_2XZOOM_VERTICAL / PIXO_BUF_2XZOOM_NO_BILINEAR added to PIXO_BUFFEROPEN_FLAGS
- S3TC conversion routines:
- PixoConvertS3TC1ToARGB8888
- PixoConvertS3TC2or3ToARGB8888
- PixoConvertS3TC4or5ToARGB8888
- Fast SSE / MMX clear routines exposed: PixoMemSet16 / PixoMemSet32
- PixoDrawPointspriteList function added.
- New stream definition point size control parameter: PIXO_STREAM_POINTSIZE
- Bug: Remove MEM_DECOMMIT from VirtualFree() calls
- Bug: Renamed MENUINFO structure to PIXOMENUINFO so it doesn't collide with Windows.h.
- Bug: Remove Visual Studio Processor Pack dependencies from samples.
- Bug: Corrected documentation of memory layout of matrices.
- Sped up bilinear filtering 5-10%.
- Added PixoSetFastZSPretest / PixoGetFastZSPretest
- Added z and stencil pretesting for each triangle, whereby a z-and-stencil-test-only path
is used until either a pixel passes both z and stencil test or the entire triangle is
determined to be z-and-stencil-occluded. This avoids attribute gradient calculation and
setup for fully-occluded triangles, as well as some attribute stepping for
partially-occluded triangles, typically resulting in 5-10 percent speedup if
there's significant overdraw (although this is highly dependent on
drawing order).
- X, Y screen position types changed to PIXO_FIXED12_4 in PIXO_VERTEX and PIXO_VERT_CACHE structures
- PIXO_FEATURE_HTT (hyperthreading) flag added to PIXO_CPU_FEATURES_FLAGS
- PIXO_MAX_STREAMS bumped up to 8
- Removed ZCrossProduct parameter from PIXO_DRAWTRIANGLECALLBACK
- Three vertex distance fog types supported now:
- new type parameter added to PixoSetVertexDistanceFog / PixoGetVertexDistanceFog
- PIXO_VERTEXDISTANCEFOG_DEVICESPACE
- PIXO_VERTEXDISTANCEFOG_CAMERASPACE
- PIXO_VERTEXDISTANCEFOG_W_CAMERASPACE
- PIXO_VERTEX members modified to help with object space lighting calculations:
- PIXO_VERTEX->ci has PIXO_CLIP_INFO (homogeneous clip coordinates).
- PIXO_VERTEX->Index has vertex index (or -1 if clipped or PixoBeginPrimitive)
- Vertex normals are in. Use PixoSetNormals() to enable/disable.
- for PixoSetStreamDefinition: PIXO_STREAM_NORMAL
- for PixoBeginPrimitive: PixoNormal3f(v) / PixoGetNormal3f
- Added PixoSetMipMapLodBias / PixoGetMipMapLodBias
- Added PixoRASTEROP_USER_CODE and PixoSetUserRasteropCode()
- Added PixoSetModulationFactor / PixoGetModulationFactor
- Added VertexStart parameter to PixoTransformVertices()
- Bumped max number of streams to 8
- add PixoSetTexCoordIndex / PixoGetTexCoordIndex
- Added PIXO_WIREFRAME_ON_FILL for PixoSetWireFrame()
- Added PixoBuildStreamDefCodeBufferArray.
- Added PixoGetStreamDefCodeBuffer
- Rewrote and optimized vertex stream code welding.
- Added Pixo2xStretchARGB8888 which doesn't do the bilinear thing.
- Added PixoSetVertexCallback / PixoGetVertexCallback for user vertex shader, texgen, lighting, etc.
- Added real colored, textured/alpha'd, rasteroped lines and PIXO_LINELIST, PIXO_LINESTRIP support.
- Added PixoSetTexGen / PixoGetTexGen. Currently supports PIXO_TEXGEN_UNPROJECTED_XYZW and PIXO_TEXGEN_PROJECTED_XYZ1)
- PixoVertexCachedElement allows PixoBeginPrimitive to draw with pre-transformed PIXO_VERT_CACHE elements (usually via PixoTransformVertices)
- Added PixoBeginPrimitive vertex routines to help with drawing 2d elements.
- PixoVertexScreen2f(v) / PixoVertexScreen3f(v)
- Build welder_state_flags.txt to help with welder state flag debugging
- Components.asm was missing from the source directory
- pixomatic_debug.dll, .lib, and .pdb added to distribution.
- Added PixoSetPolygonZBias / PixoGetPolygonZBias
- PIXO_STREAM_POSXYZRHW has been deprecated, removed, stabbed with a wooden stake,
and burned. The ashes were then carefully put into industrial strength ziploc baggies
(double bagged) and carrier pigeoned to four remote super ultra high security secret
locations where they were vociferously badmouthed and finally buried.
- Added projected textures. New functions / defines:
- PixoSetWStateTextureProjected / PixoGetWStateTextureProjected
- PixoTexCoord3f(v) / PixoGetVertexTexCoord3f
- PixoTexCoord4f(v) / PixoGetVertexTexCoord4f
- PIXO_STREAM_TEXSTR0 / PIXO_STREAM_TEXSTR1
- PIXO_STREAM_TEXSTRQ0 / PIXO_STREAM_TEXSTRQ1
- Added v versions for TexCoord#f.
- PixoTexCoord2fv / PixoTexCoord3fv
Changes for 1.0, 12-16-2002
Changes for 0.9, 12-05-2002
- Added a*s+1*d rop.
- Added 2x fixed modulation. Fixed bug where alpha wasn't being properly preserved in
eax when Z24S was active with alphatest and z write. Turned off all fragment-generating
states when fragment could never be needed, instead of just the ones that currently
are in the master component table.
- Added PixoZEnable(), PixoZDisable(), and PixoIsZEnabled()
- Added 2x fixed modulation.^M
Fixed bug where alpha wasn't being properly preserved in eax when Z24S was active
with alphatest and z write.
Turned off all fragment-generating states when fragment could never be needed,
instead of just the ones that currently are in the master component table.
- texture, world, view are in. fixed 0:1, -1:+1 z range issues
- Fixed incorrect mask when enabling specular for Dot3-specular mode.
- Do automatic specular enable for Dot3-specular properly this time.
- Added dot3 specular.
- Added assert checks for no input format.
- Cleaned up some naming.
- PixoDrawText3f is fully functional, wireframe color
- zwrite for lines
- 64-bit stateword
- Fixed bug with initial state of R field in specular.
- Handle wrap mode textures up to 4096x4096.
- Fixed inaccuracy in Mul8x8SignedWithFixup().
- Added comments about precision and range.
- Allow scaling up to 8-(1/4096) of Dot3LightVector.
- Use texture 1 alpha in dot3.
- Added component input/output comments.
Removed redundant EBP reload.
Added bilinear condition to EBP reload in tex0 palettized wrap case.
Streamlined tex1 bilinear welding a little.
- Added assert to check for tex1 when dot3 active.
- Changed from dot3 texture type to dot3 state.
- Palettized textures. [10-14-2002]
- ... much stuff deleted for brevity, sanity, readability ...
- Initial rasterizer. [04-08-2002]
|