Major version numbers introduce API changes that are not backwards compatible. Minor versions are backwards compatible to the previous major release, except for critical bug fixes. Deprecated functionality will be supported until (at least) the next major release.
Changes in 8.00:
Various performance fixes, especially for GPU-bound apps and multi-GPU systems. Most rendering is now 1.2x to 2.0x faster on high-end GPUs than it was in 7.01
G3D::Tri , G3D::TriTree for ray tracing (10x faster than KDTree + Triangle)
G3D::Any replaces G3D::AnyVal
G3D::glClipToBox , glDisableAllClipping
G3D::Profiler
G3D::Texture::resize
G3D::TextInput::Settings::singleQuoteCharacter
G3D::ParseError
G3D::parseCommaSeparated
G3D::ReferenceCountedPointer can now be instantiated for a forward-declared type
demos/starter app uses Film
G3D::ParseError
G3D::Array provides constructors that accept up to 6 initial elements
G3D::Texture::readTexel
G3D::Texture::clear
G3D::GCamera default field of view is now 90-degrees horizontal (to match CounterStrike:Source)
Added 1024^2 default skybox sky/noonclouds/noonclouds_*.jpg
G3D::GLCaps::firstSupportedTexture
G3D::GFont::draw3DBillboard
GCamera::getProjectPixelMatrix
G3D::ShadowMap now supports NPOT textures
G3D::ShadowMap now supports separate front- and back-face polygon offsets
Added G3D_64BIT and G3D_32BIT macros
G3D::Ray::invDirection
G3D::CameraControlWindow can now copy camera position to clipboard in CFrame constructor format
G3D::VideoRecordDialog now puts date before program name
G3D::Matrix4::getPerspectiveProjectionParameters
G3D::Surface::renderTransparents ; G3D::Surface::sortAndRender now performs refraction
G3D::RefractionQuality , G3D::MirrorQuality , G3D::PrimitiveType
G3D::ThirdPersonManipulator now draws hidden lines
G3D::GBuffer
G3D::Framebuffer::set now allows specification of the target MIP-map level
G3D::RenderDevice::setMinLineWidth
G3D::Draw::skyBox
G3D::SmallArray
G3D::Texture::whiteIfNull
G3D::Color3::isFinite
Added 10 new high resolution environment maps to the data repository
Fixed all level-4 warnings in headers --- developer code can now compile with the highest warning level
G3D::Table::getCreate , getCreateEntry
G3D::MemoryManager , G3D::CRTMemoryManager
G3D::Texture::min , mean, max
G3D::ThirdPersonManipulator now uses G3D::GEvents instead of onUserInput, so that it can consume clicks.
G3D::Win32Window now explicitly requests 0 OpenGL aux buffers for the main window, although some drivers will allocate them anyway
Removed all glGet* calls from the release build as these can stall GPUs
Added GLEW 1.5.1 library for loading OpenGL extensions (replaces previous custom G3D code)
G3D::Surface::renderDepthOnly for early-Z and shadow mapping
G3D::PrecomputedRandom
Increased GLCaps::G3D_MAX_TEXTURE_UNITS to 16
SuperSurface now depth sorts and culls models for shadow map rendering
G3D::ShadowMap::computeMatrices
ShadowMap now renders from backfaces, reducing the need for a polygon offset.
G3D::GLight now supports additional parameters to control how it interacts with G3D::ShadowMap
G3D::Texture::Settings::shadowMap now sets areas outside the shadow map to 0 (shadowed), which is ideal behavior for spotlights.
G3D::DirectionHistogram
G3D::Texture::Settings can now serialize/deserialize to AnyVal
G3D::Vector3::reflectAbout
G3D::Spinlock ; faster than GMutex for one thread-per-processor
G3D::Vector random methods now use G3D::Random
G3D::Color?one() and Color?zero() for all-one or all-zero constants
G3D::GuiLabel now autosizes around its contents
G3D::Shader preprocessor now supports #include
G3D::RenderDevice::BLEND_ONE_MINUS_DST_COLOR
G3D::Shader now supports G3D::Matrix2
G3D::Shader now strips "ERROR:" from shader error messages for compactness
G3D::GuiDropDownList::stringValue, G3D::GuiDropDownList::captionValue
G3D::Material and G3D::SuperShader now only allow alpha mask on the diffuse (Lambertian) component
G3D::GImage::computeNormalMap now allows the white height to be a constant multiple of the larger dimension
G3D::Welder
G3D::Rect2D::inf
G3D::TextInput now generates tokens for newlines (\r, \n, or \r\n) when enabled
Documented platform-abstraction macros
PRAGMA()
G3D_BEGIN_PACKED_CLASS() , G3D_END_PACKED_CLASS()
G3D::Win32Window now generates G3D::GEventType::MOUSE_BUTTON_CLICK events
G3D::CoherentAllocator
G3D::Sphere::merge
G3D::GuiTextureBox
G3D::GuiControl::fromOSWindowCoords
G3D::GuiControl::increaseBounds
G3D::GuiControl::toGWindowCoords -> G3D::GuiControl::toOSWindowCoords
Removed most static global variables to control order of intialization
Made empty G3D::Table default to zero allocation
Multithreaded G3D::ArticulatedModel loading
G3D::System::numCores
Added buffering (with appropriate flushes) to G3D::logPrintf decrease the startup cost of writing the log
G3D::System::findDataFile now caches the locations of found files
G3D::Widget now inherits from G3D::Surface2D
GApp::m_renderPeriod
G3D::Random - controllable, threadsafe, and better distribution than rand()
Added function key guide on the top of render stats for G3D::GApp
G3D::CollisionDetection::fixedSolidBoxIntersectsFixedTriangle
G3D::Set::getRemove , G3D::Table::getRemove
G3D::Set now allows HashFunc and EqualsFunc to be specified
G3D::Box2D
G3D::Texture::getCubeMapInfo
G3D::CollisionDetection::collisionTimeForMovingSphereFixedSphere now handles the case where the spheres initially interpenetrate
Changed G3D::ArticulatedModel to use a VAR index array (up to 80% reduction in GPU load for large models)
Changed G3D::ArticulatedModel to use interleaved VAR (up to 4x fps speedup for vertex-bound models)
Interleaved arrays in G3D::VAR
Extended G3D::VARArea to support index arrays
Tweaked G3D::StopWatch smoothing constants to reduce number flickering
isIntFormat() macro
TextInput::readSignificant
Switched .tga textures to .png in the data/image directory
Fix: G3D::System::cpuid() now correct on all gcc systems. Previously the vendor string (e.g., GenuineIntel, AuthenticAMD) was sometimes corrupt. [Shawn]
Fix: RenderDevice now allows depth write without depth test
Fix: workaround for OpenGL shadow rendering crash from NULL buffer for some cards
Fix: G3D::iswspace now considers '\r' as whitespace
Fix: G3D::System::appName now removes the 'd' that icompile appends
Fix: G3D::System::getCurrentProgramFilename now works on OS X
Fix: G3D::UserInput no longer crashes on MacBook "FN" key press
Fix: Made G3D::MeshAlg::computeAdjacency threadsafe
Fix (2570367): buildg3d detects the buggy OS X 10.4 make 3.80 and refuses to run on that machine without gmake installed
Fix: Grayscale PNG with odd heights now load correctly
Fix: G3D::GImage::computeNormalMap whiteHeightInPixels now scales correctly (was inverted before)
Fix: G3D::GCamera::frustum far plane now positioned correctly
Fix: G3D::Material now properly alpha-masks non-diffuse channels
Fix: G3D::Image4 was ignoring the wrapmode specified at the constructor
Fix: improper use of 'static' in G3D::Map2D made it not threadsafe
Fix: G3D::Lighting did not initialize the ambient fields
Fix: G3D::RenderDevice::setTexCoordArray now accepts an uninitialized G3D::VertexRange as an argument to disable the texcoord array.
Fix: G3D::RenderDevice now determines number of texture coords/units correctly on all platforms
Fix: G3D::RenderDevice::setTexture now correctly sets the texture matrix for all texture units.
Fix: G3D::SuperSurface now obeys incoming depth write
Fix: G3D::ShadowMap bias was being stored statically in updateDepth, causing later calls to ignore that argument
Fix: G3D::GCamera::frustum clipping planes were off for the top and bottom planes.
Fix: G3D::fileExists ("") now returns false
Fix: G3D::ArticulatedModel , G3D::Surface , and G3D::SuperShader now support both left- and right-handed tangent spaces
Fix: GImage now saves 1-channel TGA files as RGB (used to crash)
Fix: Custom Gui controls can now be GuiContainers as well
Fix: If it is not consumed by the control with the key focus, the control under the mouse receives MOUSE_MOTION events
Fix: log2 was computing the log in the wrong base
Fix: G3D::VideoRecordDialog now correctly captures the GUI (when specified) on OS X
Fix: G3D::CarbonWindow drop events are now relative to the window corner
Fix: OS X G3D::AtomicInt32::compareAndSet was not obtaining the old value in an atomic fashion in 7.01, leading to occasional livelock on SpinLock.
Fix: Changed order of event delivery for GuiWindow to match rendering order
Fix: G3D::ArticulatedModel 3DS loader can now load models with more than 2^15 faces (int16-uint16)
Fix: PGM and PBM files are now properly recognized by G3D::GImage
Fix: G3D::System::sleep now is more conservative about the system's timeslice and busy waits under 1 ms.
Fix: G3D::GApp now learns how much G3D::GApp::onWait overcompensates for and takes that into timing consideration
Fix: G3D::SDLWindow::setDimensions and frame resizing update the window correctly
Fix: G3D::TextInput now allows trailing 'f' on floating-point numbers
Fix: Cube map faces that are too large for the GPU are automatically rescaled on load by Texture
8.00 changes incompatible with G3D 7.xx and earlier:
Linux/FreeBSD build now depends on libzip and is not built internally. OSX/Windows version of zip.lib was replaced with libzip. The original implementation was based on minizip.
G3D::Vector3 , G3D::Vector3 and G3D::Vector4 operator float* are gone
G3D::Array(int size) constructor is gone
G3D::Surface::objectSpaceTangents -> G3D::Surface::objectSpacePackedTangents
G3D::Ray::origin and G3D::Ray::direction are now methods instead of members
G3D::VARArea -> G3D::VertexBuffer , G3D::VAR -> G3D::VertexRange
G3D::Texture::getCameraRotation -> G3D::Texture::getCubeMapRotation
G3D::PosedModel -> G3D::Surface , G3D::PosedModel2D -> G3D::Surface2D
G3D::RenderDevice::Primitive -> G3D::PrimitiveType (e.g., RenderDevice::TRIANLGES -> PrimitiveType::TRIANGLES)
G3D::AssertionHook no longer accepts the ignoreAlways parameter
G3D::GImage::width , height, channels are now accessor methods instead of public fields
RenderDevice::Buffer -> RenderDevice::DrawBuffer
RenderDevice::screenShotPic and Texture::copyFromScreen now always read from the current RenderDevice::readBuffer
OSWindow::Settings::sharedContext must now be set to true in order to support sharing of data between multiple OpenGL contexts. Since sharing can seriously degrade performance on multi-GPU machines and few developers need this feature, it defaults to false.
Complete rewrite of SuperShader, ArticulatedModel, and Material. New G3D::SuperBSDF uses Fresnel term, more efficient memory layout, Blinn half-vector, is energy conserving, and supports GPU rasterization, ray tracing, photon mapping
Removed ShadowMap::updateDepth that takes directional light projection matrix parameters; use new ShadowMap::computeMatrices to apply those values now.
G3D::GuiPane::addDropDownList now takes the list and index arguments in reverse order and they are optional
G3D::OSWindow::notifyResize() and G3D::RenderDevice::notifyResize() removed in favor of OS-specific implementation handling size events directly.
Changed G3D::RenderDevice::enableClip2D to G3D::RenderDevice::setClip2D . Use G3D::RenderDevice::setClip2D with G3D::Rect2D::inf to disable.
G3D::TextInput now treats \r, \n and \r\n as newlines with or without newline tokens. Each increment line number once and reset character number
G3D::TextInput now generates tokens for both line and block comments when enabled. This changes the G3D::TextInput::Settings flags.
Changed G3D::OSWindow::pollOSEvent to G3D::OSWindow::getOSEvents allowing G3D::OSWindow implementations to return multiple events
G3D::RenderDevice::getObjectToWorldMatrix -> G3D::RenderDevice::objectToWorldMatrix
G3D::RenderDevice::getCameraToWorldMatrix -> G3D::RenderDevice::cameraToWorldMatrix
Removed 6.xx Discovery API, replaced with 7.01 Discovery API
G3D::GApp::onLogic -> G3D::GApp::onAI , G3D::Widget::onLogic -> G3D::Widget::onAI
Removed unused G3D::BSPMap::getTriangles texCoordIndex argument
G3D::GThread::threadMain is now protected; see the new argument to G3D::GThread::start()
G3D::ArticulatedModel::Part::TriList::material is now a pointer
G3D::Surface bounding boxes are now G3D::AABox instead of G3D::Box
Moved G3D::ArticulatedModel::setProfile to G3D::SuperSurface::setProfile
G3D::ArticulatedModel::Part::TriList is now a reference counted object; Part::triListArray -> Part::triList
G3D::MeshAlg::computeBounds now takes an AABox instead of a Box
G3D::GuiDropDownList now stores its list internally, rather than taking a pointer to a list
The applyInvertY argument on G3D::Texture::toImageX now defaults to true because this is less confusing
G3D::GApp::onWait only takes one argument now
Changes in 7.01:
Video file reading and writing via FFmpeg added
Added computeBounds method to ArticulatedModel::Part that calls computeBounds on each TriList. Changed updateAll to automatically call computeBounds [Kyle]
Added constructor to Matrix4 to construct a matrix from an upper-left 3x3 submatrix and an upper-right 3x1 submatrix [Kyle]
Incompatible change : RegistryUtil functions now require an explicit value parameter instead of extracting the value from the key string.
Incompatible change :GApp now calls the onLogic handler before the simulation handlers but after the user input and network handlers
Incompatible change : Changed GHashCode and other functors to traits. See guidenewuser . Added typedefs and adapters to make this mostly backwards compatible.
Added parallax occlusion mapping to G3D::SuperShader (specify Material::parallaxSteps > 1)
Added normal mapping to G3D::SuperShader (specify Material::parallaxSteps == 0)
G3D::Texture resizes textures that exceed the device maximum size
G3D::Array now allows control over MIN_ELEMENTS and MIN_BYTES using template parameters
Clarified G3D::Any file format in documentation
G3D::Texture::PreProcess::gammaAdjust
G3D::ShadowMap::lightProjection() , G3D::ShadowMap::lightFrame()
Added Barycentric coordinates to CollisionDetection::isPointInTriangle
G3D::RenderDevice::beginOpenGL , G3D::RenderDevice::endOpenGL
PointAABSPTree::clearData
AABSPTree -> KDTree
GApp now allows the MidgetManager to process events in onEvent before the GApp::onEvent executes
Added spotlight support to SuperShader
Switched SuperShader to use ph
Adjusted standard deviation used in G3D::GaussianBlur to provide smoother filtering
Put HashTrait and EqualsTrait in their own headers separate from Table.h
ArticulatedModel::facet
Renamed GWindow to G3D::OSWindow
ReferenceCountedPointer now asserts that the pointer is not NULL on method invocation
G3D::ShadowMap now computes appropriate matrices for spot lights
Added ImageFormat::convert [Danny and Kyle]
3- and 4- argument min and max
G3D::GaussianBlur now correctly sets the output viewport
G3D::Framebuffer::clear
IFSModel and ArticulatedModel now load Princeton Shape Benchmark OFF files.
G3D::Any CoordinateFrame now serialized using angles
CameraControlWindow now prints angles in degrees
ImageXXX classes now have a format() method
OSWindow::create
MeshAlg::toIndexedTriList now supports TRIANGLE_FAN input.
Tuned Table and hash functions for performance [Kyle & Morgan]
GEvent::toString
G3D::TextInput now treats characters with ASCII code greater than 127 as symbols
G3D::ThreadSet
G3D::Texture::white
G3D::Matrix4::upper3x3
G3D::Matrix4::homoMul
ArticulateModel::fromFile now takes a Matrix4 instead of a CoordinateFrame to allow arbitrary linear transformations.
ArticulatedModel::createCornellBox
Material::createDiffuse
ImageFormat::convert
G3D::filenameBase
Removed SDL_SysWMEvent, which was never supported by GEvent anyway
Removed TextureFormat::SAME_AS_SCREEN to break dependence on OpenGL
TextureFormat has been renamed to G3D::ImageFormat and moved into G3D.lib
Added variable time control points to G3D::Spline
Gui controls now have configureable GuiControl::setCaptionSize
Gui controls now default to no indent if the caption is "" (use " " for indent with no caption)
G3D::GuiContainer
G3D::GThread::started
buildg3d installation arguments changed--see
G3D::Vector3int32
GuiButton now accepts an optional callback function/method
FileDialog now accepts an extra "note" argument
FileDialog::getFilename non-static to support subclassing
System::currentDateString
Expanded G3D::ArticulatedModel documentation
Build system now executes on multiple processors (about 1.8x speedup for dual-core)
Build system now caches dependencies (about 5x speedup for small incremental builds)
Patched LOAD_EXTENSION to work around gcc pointer-to-function cast issues
Tool buttons added to a G3D::GuiPane automatically align to the previous one.
Added invisible GuiPane style
G3D::uint128 [Kyle]
Increased BSPMap rendering by 10% by reducing state changes
Added prompt argument to FileDialog::getFilename
G3D::Surface::getBoxBounds on an array
G3D::Surface::getSphereBounds on an array
Changed RenderDevice::screenshot to save .png instead of .jpg files
G3D::SuperShader now supports a customMap and customConstant for experimenting with shaders.
G3D::SuperShader now does not ever light the "back" of a bump-mapped poly, even if the bumps should create a light-facing surface
G3D::Material promoted to its own class (was G3D::SuperShader::Material)
G3D::Matrix2
G3D::VertexAndPixelShader::ArgList::size
G3D::pathConcat
G3D::WidgetManager::moveWidgetToBack
SuperShader / NonShadowed.pix now uses arrays of lights instead of separate variables
Reduced cost of release-mode Shader argument validation
G3D::Surface::sortAndRender now performs view-frustum culling of objects
G3D::Draw::lighting for visualizing light sources
G3D::SuperShader::Pass::purgeCache
G3D::GuiSlider::setRange
G3D::GuiPane::addPane no longer takes a
G3D::VertexAndPixelShader::ArgList::remove
Optimized G3D::Matrix::pseudoInverse ; now about 2x faster
G3D::GLight::effectSphere
G3D::GuiWindow::moveTo
G3D::GuiWindow::setEnabled , enabled
G3D::GuiButton now sizes to its caption
G3D::GuiSlider now fires events on change and drag
G3D::Shader arguments (in G3D::VertexAndPixelShader::ArgList ) may now be "optional"
G3D::GLight::point now has quadratic attenuation by default.
G3D::ImageFormat::name
g3dmath.h now includes inttypes.h on gcc and simulates it on visual studio
G3D::RenderDevice::cullFace
G3D::LineSegment2D::intersection
G3D::BinaryInput::setEndian
G3D::GEvent::MOUSE_BUTTON_CLICK
Generalized ShadowMap to work with spotlights as well as directional lights
G3D::GLCaps::supportsTexture , G3D::GLCaps::supportsRenderBuffer
Opaque G3D::ArticulatedModels now support more than 2 non-shadow casting light sources
Added proof symbol parsing to TextInput [Corey Taylor]
Added G3D::AABox::corner() to match G3D::Box::corner() [Corey Taylor]
OS X: G3D::CarbonWindow [Casey]
OS X: iCompile now generates OS X application bundles and dmg files
OS X build no longer depends on X11
G3D::FileDialog
G3D::Table now allows overriding the default equality operator for keys
Incompatible change : GApp::onBeforeSimulation now allows mutation of the timesteps
Incompatible change : Merged GApp::simTime and idealSimTime (the sim time is now idealized)
cmake now generates project files for Xcode, MinGW, and all Visual Studio versions [Corey Taylor]
OS X: icompile and buildg3d now generate universal binaries on Intel machines
G3D::Surface::objectSpacePackedTangents
G3D::IFSModel::fromData
G3D::MeshAlg::generateGrid
G3D::BinaryOutput::ok()
G3D::generateFilenameBase
G3D::IFSModel::fromFile now defaults to not welding for improved performance
G3D::IFSModel members are now protected to allow subclassing
Removed G3D::uint in favor of G3D::uint32 [Corey Taylor]
Added G3D::GMaterial(TextureRef) constructor
Made G3D::GMaterial fields floats
G3D::GuiControl::setCaption , G3D::GuiWindow::setCaption
G3D::GuiControl can now be subclassed for custom user-defined controls
G3D::GuiTheme::renderCanvas
G3D::GuiTheme::pauseRendering , G3D::GuiTheme::resumeRendering
G3D::Surface::sortAndRender
G3D::Framebuffer can now attach cube map faces
System::describeSystem now prints current working directory and application name
Added /usr/local/-G3D dir- to system data file path [Kai Schroeder]
Various patches for detecting new CPUs in System.cpp [Corey Taylor]
g3d_Index macro now available in G3D::Shader GLSL code
G3D::BackgroundWidget
G3D::TriangleShape
Fix: incompatible change OSWindow::Settings::asynchronous is now spelled correclty, with two "n"s
Fix: Fixes for point-in-triangle and moving-sphere-fixed-tri; previous code projected onto the wrong axes, so barycentric coords were wrong for nearly vertical triangles.
Fix: Changed some doubles to floats in G3D::Triangle
Fix: Changed all of the isXXX(char) methods to take unsigned char arguments so that they can parse extended symbols
Fix: AABSPTree::deserializeStructure was missing a return statement [Derex]
Fix: Draw::plane was drawing the plane reflected through the origin [Macklin Chaffee]
Fix: Added template parameters to friends in AABSPTree and PointAABSPTree [expiring_frog]
Fix: System::findDataFile uses data directory set by GApp
Fix: AtomicInt32 decrement returns int32 instead of uint32
Fix: OS X function keys now work correctly under CarbonWindow
Fix: OS X modifier keys now work correctly under CarbonWindow
Fix: OS X arrow keys now work correctly under CarbonWindow
Fix: Rewrote buildg3d to fix many longstanding bugs, including mismatched 'bin' directories and confusion about the 'install' target
Fix: gfxmeter reports now format correctly regardless of monitor width
Fix: patch to initialize correctly on the Mesa library, which crashes when requesting DEPTH24_STENCIL8
Fix: stringSplit now works correctly for adjacent split characters [Akita Noek]
Fix: Draw::axes labels now obey current viewport
Fix: GuiWindow now loses focus when hidden
Fix: GFont::draw2D now computes correct horizontal bounds on text
Fix: GuiPane no longer renders when invisible
Fix: Clicking off of all GuiWindows makes none of them have focus
Fix: Win32Window now allows windows programmatically positioned anywhere on a multiple monitor screen
Fix: Win32Window now does not fail when dragging a GL context between multiple monitors
Fix: SuperShader now correctly lights bump-mapped surfaces in tangent space [Kyle Whitson]
Fix: GuiPane now renders its caption
Fix: Rect2D::border now grows the correct way (positive = grow)
Fix: Added % operator to TextInput
Fix: Added multi-line printing to GConsole
Fix: G3D::Texture can now create empty cube maps
Fix: G3D::Table iterator now correctly parameterized on hashfunction and equality function as well as key and value
Fix: G3D::Table now passes Values by reference when setting them, avoiding one copy
Fix: various Framebuffer/empty texture initialization bugs on ATI cards
Fix: uniform arrays for GLSL
Fix: All aliasing warnings have been fixed no longer needs -fno-strict-aliasing [Corey Taylor]
Fix: [ 1829704 ] debugAssert in Array::operator[](unsigned int n) wrong
Fix: GuiWindow::pack now recursively packs all child panes
Fix: patch to continue build when javac isn't found on both windows and linux [Corey Taylor]
Fix: [ 1599139 ] Fixes to make buildg3d work on non C:\ windows systems [Patrick Burke]
Fix: Added faster overloads of GImage::stripAlpha() and GImage::insertRedAsAlpha() [Corey Taylor]
Fix: GImage::save() with odd-widths bmp files [Corey Taylor]
Fix: Draw::capule renders properly (capule was not visible) [Corey Taylor]
Fix: Patched ShadowMap to work around ATI and OS X driver shadow map bugs. Incompatible change: Required changing several interfaces to take ShadowMapRef arguments.
Fix: GCamera::Frustum was facing backwards
Fix: [ 1774479 ] texture glformats wrong (caused incorrect font rendering on Intel)
Fix: ArticulatedModel static methods do not force loading of shaders unless an ArticulatedModel has actually been loaded.
Fix: RenderDevice::setAlphaWrite/setColorWrite implemented correctly
Fix: Implemented ImageFormat::fromCode
Fix: [ 1766509 ] Texture doesn't handle 3D textures correctly
Fix: Separate bool, float, and int back ends for GLSL shaders
Changes in 7.00:
Upgraded to iCompile 0.5.3. Requires users to delete their old ice.txt and ~/.icompile files
Key to toggle the user camera is now F2 (was Tab)
Support for g++ 4.1 [Corey]
Patches for 64-bit compilation [Corey]
WinMain is now compiled as C++ code (fixed some "manifest" errors on certain VC8 installations)
G3D::ShadowMap
Cleaned up and documented G3D::GCamera project/unproject API [Jeff Marsceill]
Made G3D::MD2Model::Pose easier to use
G3D::Matrix
Added G3D::Texture methods for reading back color and depth textures
G3D::RenderDevice::getFixedFunctionLighting
G3D::debugPrintf -> G3D::consolePrintf
G3D::GApp::debugPrintf -> G3D::screenPrintf
Reduced ArticulatedModel and MD2Model push/popState calls
G3D::Shader now defines platform and graphics vendor macros
User camera control requires right mouse click to move
G3D::AnyVal::fromFile , G3D::AnyVal::load , G3D::AnyVal::save
G3D::AnyVal now uses copy-on-mutate for fast Array/Table copies
G3D::AnyVal no longer separates table entries with ";"
G3D::AnyVal now provides casts to basic data types
G3D::AnyVal G3D::Rect2D and G3D::AABox types
G3D::NetListener , G3D::ReliableConduit , and G3D::LightweightConduit can now be created without an explicit NetworkDevice pointer
GApp::onGraphics now takes posed model arguments
G3D::RenderDevice::beginFrame no longer executes a pushState-- state will carry over between frames
G3D::GUniqueID
GApp::onPose
All classes that read from files can now read data inside zipfiles.
Changed G3D::hashCode(T) to GHashCode<T>(T) [Corey]
Removed "G3D::" from the printed portion of the documentation index to make it easier to read.
OSWindow::fireEvent for inserting user events into the queue
G3D::logPrintf
System::findDataFile
On OS X, G3D::FirstPersonManipulator now treats ctrl-click as right click
Increased mouse sensitivity of G3D::FirstPersonManipulator on OS X
System::getClipboardText, System::setClipboardText
Widget::window() accessor
Replaced SDLEvent with G3D::GEvent
Increased GFont rendering performance, added GFont::send2DQuads for fast rendering of large amounts of text
G3D::GFont now supports fonts with 256 characters (.fnt file format version 2)
Upgraded to the OpenGL 2.0 glext/glxext/wglext headers
G3D::GuiTheme , G3D::GuiText
G3D::UprightFrame , G3D::UprightSpline
G3D::Spline
G3D::RenderDevice::clip2D
G3D::Win32Window now returns events for up to 5 mouse buttons
Significantly changed GEvent delivery and Widget mechanisms to incorporate notions of focus--see upgrade.html
Motion events (joystick/mouse) can no longer be cancelled by Widget::onEvent
Mouse motion events for all platforms
G3D::Surface::Ref::sendGeometry
G3D::RenderDevice::pushState(FramebufferRef)
G3D::Texture::PreProcess::computeNormalMap
direct.h is now included by fileutils.h on Win32 to ensure that chdir, mkdir, etc. are available
Changed distribution directories to place include, lib, and bin under a directory named after the platform and all other files one directory up.
G3D::GCamera::unproject
Made G3D::Ray non-virtual for efficiency
RenderDevice::alphaWrite now defaults to true
Changed G3D install directory from g3d-7_00 to g3d-7.00
On a GL 2.0 or greater driver, G3D::GLCaps now assumes the presence of all GL2 extensions even if they are not explicitly listed by the card [Corey Taylor]
debugPrintf now flushes stderr on Unix systems
G3D::Lighting::fromSky
G3D::Texture::newGLTexture2D [Corey Taylor]
Added 10-bit cinema texture formats [Corey Taylor]
Added G3D::ArticulatedModel to the core (includes 3DS loading)
Added G3D::SuperShader to the core
Merged GApp and GApplet into GApp to make the common case easier to implement
Removed GApp::debugMode options, removed "debug" prefix from most fields.
G3D::zipfileExists for testing if a filename path contains a .zip to be opened [Eric]
G3D::isZipfile tests the header of a file to see if it is a .zip [Eric]
G3D::zipRead and G3D::zipClose to open and close .zip files [Eric]
G3D::fileExists supports filename paths that contain .zip [Eric]
G3D::fileLength supports filename paths that contain .zip [Eric]
G3D::getFiles and G3D::getDirs support filename paths that contain .zip [Eric]
Texture::isSupportedImage - static method, returns true if a filename exists and is compatible with Texture [Eric]
Viewer (tool) - Allows drag and drop viewing of many supported file formats [Eric]
GFXMeter (tool) - Updated for 7.00 compatibility: GApplet structure removed [Eric]
OSWindow::Settings has an allowMaximize field. Win32Window will have an activated 'Maximize' button if true [Eric]
GApp2::debugCamera -> GApp2::defaultCamera
GApp2::debugController -> GApp2::defaultController
Made GApp2::debugText private
Added g3d_WorldLight0 to the G3D shader extensions
Added Shader support for GL_FLOAT_MAT3_ARB uniforms
Tab (command completion) no longer auto-repeats in GConsole
GConsole now limits the key repeat rate to the framerate
Removed GApp::Settings::useNetwork because it was no longer needed--Win32 does not trigger firewall checks anymore
Optimized AABSPTree balance and queries; now about 20% faster than 6.10, but requires 30 bytes more memory per member
G3D::Array::pop now shrinks the underlying array by default (Array::popRemove does not shrink the array and is faster)
Fast O(n ), non-destructive G3D::Array::partition and G3D::Array::medianPartition
Increased ReliableConduit read attempts before timeout from 10 to 100
G3D::GImage::pixel1 now returns G3D::Color1uint8 *
G3D::Color1 , G3D::Color1uint8
G3D::Image1 , G3D::Image1uint8
G3D::Image3 , G3D::Image3uint8
G3D::Image4 , G3D::Image4uint8
BinaryInput::flipEndian32, BinaryInput::flipEndian16
Texture::createEmpty now intializes invertY = true, which is usually desirable for Framebuffer rendering.
G3D::Map2D
G3D::Vector4int8
G3D::PointShape
G3D::GImage::RGBAtoRGB
Added GLEW compatibility [nico]
Added data-files directory to the locations searched for G3D demo data
On Win32, assertions now print ot the Output window as well as the dialog box.
On Win32, $TEMP is now used for the logfile location instead of c:\tmp
G3D::GKey replaces old SDL key enumeration
Decreased memory requirements and increased balance speed of G3D::AABSPTree by adding a level of indirection between tree nodes and the data stored in them.
Added OSWindow::Settings::caption
Win32 programs must call the macro G3D_START_AT_MAIN() ; at top-level if they do not define WinMain themselves.
Win32 switched from MBCS to UNICODE for the binaries (G3D sources compile under either, but UNICODE is the VC8 default)
Replaced SDL event types with G3D event types
Added support for GL_ARB_point_sprite
Win32 programs must call the macro G3D_START_AT_MAIN() ; at top-level if they do not define WinMain themselves.
Win32 switched from MBCS to UNICODE for the binaries (G3D sources compile under either)
Changed G3D::GApp::main to return an int
Added header support for GL_EXT_geometry_shader4 ("Geometry shaders")
Changed IFSModel::create to IFSModel::fromFile
G3D::BSPMap for loading Quake3 .bsp files
G3D::TextInput::Settings::caseSensitive
G3D::TextInput::readBoolean , G3D::TextInput::Settings::trueSymbols , G3D::TextInput::Settings::falseSymbols , G3D::TextOutput::Settings::trueSymbol , G3D::TextOutput::Settings::falseSymbol , G3D::TextOutput::writeBoolean , G3D::Token::BOOLEAN_TYPE
G3D::TextInput::Settings::msvcSpecials now defaults to true
Made the input to G3D::tessellateComplexPolygon a constant array reference
Removed SDL from Win32 build
Increased maximum ReliableConduit message size to 60 MB
Removed error macro
G3D::GConsole
Rect2D::lerp
Added GL_EXT_packed_depth_stencil
Added G3D::ImageFormat::DEPTH24_STENCIL8 packed stencil mode
getOpenGLState now includes GL_LIGHT_MODEL_TWO_SIDE value
Made ThirdPersonManipulator constructor protected (use ThirdPersonManipulator::create now)
G3D::ToneMap
Changed Renderbuffer::createEmpty argument order to match Texture::createEmpty
G3D::IFSModel can now remove degenerate faces on load
G3D::MD2Model::textureFromFile
Replaced AABSPTree::beginRayIntersection with simpler AABSPTree::intersectRay interface.
G3D::MD2Model now uses floating point texture coordinates, which makes it easier to write pixel shaders for MD2Models
G3D::GImage::computeNormalMap now accepts a scale factor indicating how steep the input bump map is
Added G3D::Shader support for the GLSL #version directive
Optimized G3D::GImage::computeNormalMap to use primarily integer math
G3D::AABox::contains(AABox)
Added large file (>2GB) support to BinaryInput [Peter]
Renamed graphics3d.h to G3D/G3D.h
Renamed GLG3D.h to GLG3D/GLG3D.h
Renamed G3DAll.h to G3D/G3DAll.h
G3D::Quat::unitize now normalizes in place
Added G3D::Quat::operator*=
Removed G3D::FirstPersonManipulator 's constructor--use the static G3D::FirstPersonManipulator::create method now.
Changed BSPMap leaf bounds from Box to AABox--50% improvement in frustum culling speed
Optimized BSPMap rendering performance
Removed all deprecated APIs
All accessors of the form "getXXX" that take no arguments are now named just "xxx"
G3D::Sky::create is now named G3D::Sky::fromFile and no longer accepts a G3D::RenderDevice . G3D::Sky::render now requires a RenderDevice.
G3D::GFont::fromFile no longer accepts a G3D::RenderDevice and G3D::GFont::draw2D now requires a RenderDevice.
Removed an assertion in BinaryInput requiring that compressed buffers be copied on construction [Nick Bray]
Removed CoordinateFrame::zLookDirection (use -1)
Removed Capsule::endPoint (use point)
Removed CoordinateFrame::getStrafeVector (use rightVector)
Removed static constants (use equivalent lower-case methods)
Removed Cylinder::getPoint1 (use point)
Fix: BSPMap::getStartingPosition now works correctly on all maps [Jeff]
Fix: Workaround for ATI drivers that do not support zero-area scissor region
Fix: GL_EXT_texture_3D -> GL_EXT_texture3D
Fix: ARB_texture_cube_map and EXT_texture_cube_map are now aliases on all cards
Fix: EXT_texture_edge_clamp and SGIS_texture_edge_clamp are now aliases on all cards
Fix: G3D::Sky now turns off lighting
Fix: Win32Window now returns mousebutton and motion events according to the GEvent spec
Fix: Win32Window now operates correctly in fullscreen mode
Fix: Fixed TGA decode to load from the middle of a binaryinput
Fix: Added texture coordinates to posed MD2Models
Fix: prompt/debugAssert now correctly responds to button presses on OS X
Fix: GConsole now filename completes after the first word
Fix: RenderDevice::getDepthBufferValue now checks for the presence of a depth buffer.
Fix: G3D::AABSPTree now correctly handles members with infinite bounds on ray intersection tests
Fix: Removed use of tmpfile on Unix
Fix: Java ReliableConduit now properly waits if the buffer is full when sending
Fix: [ 1607693 ] Triangles/Second display is now correct (rates were too low in 6.10)
Fix: NetworkDevice now does not perform a test broadcast during initialization
Fix: G3D::LightweightConduit::ok is now false if any error occurs during initialization
Fix: BSPMAP for cards without glMultiDrawElementsEXT
Fix: [ 1584335 ] ReliableConduit incorrectly assumes it's ok
Fix: RenderDevide::push2D no longer resets the frameBuffer.
Fix: Framebuffer logic for counting number of attachments was broken
Fix: [ 1581986 ] Matrix3::fromAxisAngle now normalizes the input vector
Fix: [1490643] Linux/FreeBSD/OS X binaries are now compiled with -fno-strict-aliasing, which fixes some memory corruption problems that occurred with full optimizations.
Fix: Fixed all warnings on gcc-4.1 and VC8.
Fix: Matrix and CoordinateFrame serializers inside G3D::AnyVal dropped data
Fix: [ 1535759 ] valgrind finds initialization/deletion errors in TextOutput, Matrix [Chris Demetriou]
Fix: Patched MD2Model to automatically reduce animation times to less than 100000; large time were overflowing double->int conversion and causing animations to appear scrambled.
Fix: [ 1535292 ] global Table hashCode overloads broken [Chris Demetriou]
Fix: [ 1535736 ] Fixed System.cpp memory allocator to compile on 64-bit machines correctly [Chris Demetriou]
Changes in 6.10:
Changes in 6.09:
glDepthBoundsEXT
G3D::Quat::sameRotation
Full loading of the GL_ATI_separate_stencil extension, support within RenderDevice
platform.h undefines WIN32_LEAN_AND_MEAN, NOMINMAX after it has defined them
G3D::Texture::Settings::maxMipMap
Renamed Texture::Parameters to Texture::Settings (backwards compatible typedef added)
Optimized IFSModel rendering by increasing internal VAR cache size and reducing the number of state changes. Can now render more than 1000 IFSModels at 30 fps on GeForce 7800.
G3D::System::mallocStatus
Range checking on Vector2int16::operator[]
GImage::BAYER_G8R8_B8G8_to_R8G8B8_MHC, GImage::BAYER_B8G8_G8R8_to_R8G8B8_MHC
IFSModel and MD2Model now allocated their posed models using System::malloc
Increased the memory maintained by G3D::System for buffer pools up to a total of 13 MB: 8 MB tiny (preallocated), 1 MB small (on demand), 4 MB medium (on demand). This was observed to dramatically increase performance (15x) in real programs that were performance limited by memory allocation time.
NetworkDevice now uses Winsock2.0 on Windows (controlled by the G3D_WINSOCK_MAJOR_VERSION/G3D_WINSOCK_MINOR_VERSION settings in NetAddress.h )
G3D::Manipulator
G3D::GApplet now runs installed G3D::GModules (except for graphics, which is left to the progrmamer)
G3D::GApp::addWidget , G3D::GApplet::addWidget, G3D::GApp::removeWidget , G3D::GApplet::removeWidget
G3D::Widget , G3D::WidgetManager
G3D::System::getEnv()
G3D::Surface2D
G3D::DXCaps
Increased precision of several Quat operations
G3D::Quat::fuzzyEq
G3D::Quat::operator-
G3D::LineSegment::length , G3D::LineSegment::point
Increased fuzzyEpsilon by a factor of 10 to take into account the new float32 focus of the APIs
G3D::RegistryUtil
G3D::LineSegment2D
G3D::ConvexPolygon2D
G3D::AxesShape
contrib/shaders/showDepth
G3D::Crypto with MD5 and CRC32 hashes
TextureManager::findTexture, TextureManager::cacheTexture [Erik]
Win32Window::_directInput created on-demand [Erik]
WeakReferenceCountedPointer has more comparison operators [Erik]
GImage::resolveFormat utility function [Erik]
GLCaps supports MESA
G3D::Win32Window and G3D::SDLWindow now release input capture and make the mouse visible on destruction
G3D::OSWindow::setInputCaptureCount , G3D::OSWindow::inputCaptureCount , G3D::OSWindow::incInputCaptureCount , G3D::OSWindow::decInputCaptureCount
GImage::makeCheckerboard
G3D::Vector3::one()
G3D::Shader now supports g3d_size(sampler2D) and g3d_invSize(sampler2D) extensions in GLSL shaders.
Renamed GAppSettings to G3D::GApp::Settings (old name is supported but deprecated)
Renamed GWindowSettings to G3D::OSWindow::Settings (old name is supported but deprecated)
Renamed TextInput::Options to G3D::TextInput::Options (old name is supported but deprecated)
G3D::FPManualController::setAutoActive for World of Warcraft style controller
G3D::isSlash , G3D::isQuote
G3D::GApplet::onEvent can now consume (i.e., prevent G3D::GApp from seeing) the event
G3D::CoordinateFrame::fuzzyIsIdentity , G3D::CoordinateFrame::isIdentity , G3D::CoordinateFrame::fuzzyEq
Matrix3::isOrthonormal
[1421201] Removed excess gl (NVIDIA) headers
Win32Window destructor now releases the mouse if it was captured and the current GL context is that window and the window was not created from an existing HDC/HWND
Fix: com.graphics3d.g3d.ReliableConduit now correctly selects on the waiting socket
Fix: [ 1166057 ] AABSPTree::beginBoxIntersection
Fix: GLCaps::supports(ImageFormat) now returns correct results on all cards
Fix: Shadow map rendering of default Surfaces now enables lighting
Fix: G3D::UserInput now restores the mouse position after pureDeltaMouse is turned off
Fix: G3D::Win32Window now clips precisely to the client area during an input grab.
Fix: [ 1383042 ] free static variables on shutdown
Fix: [1449115 ] Texture loading for odd-byte rows
Fix: G3D::Win32Window now produces correct character and scan codes for key events
Fix: G3D::GApplet::onEvent calls GApplet::processEvent by default
Fix: [ 1444320 ] TextInput parsed ".1" as "1" instead of "0.1"
Fix: G3D::Shape::type is now const
Fix: 0 --> 0.0f FrameBuffer.h [Erik]
Fix: Fixed Texture read-back dimensions for cube-map
Fix: Missing #include in SkyParameters.h [Erik]
Fix: Quad triangle counts are now accurate (were off by factor of 4 in 6.08)
Fix: contrib/ArticulatedModel now correctly masks all components using the diffuse alpha in fixed function mode
Fix: G3D::CoordinateFrame::getHeading was flipped front-to-back
Fix: [ 1404487 ] Missing Alt key up/down events on Win32
Fix: [ 1484924 ] collisionTimeForMovingPointFixedBox normals
Changes in 6.08:
Moved Win32 linker statements out of platform.h for IncrediBuild compatibility.
G3D::Texture and G3D::Sky now accept a rescaling factor
Added GFont::fromMemory() [Corey]
Added optional argument to Quat::slerp() for slerp/lerp angle threshold. [Corey]
Across-the-board performance optimizations. Most apps should render 10% faster. Includes removal of Milestones when using VBO VAR [Nick Bray], GFont::draw2D and Draw::rect2D stripped down to raw OpenGL, consistent internal use of float, increased RenderDevice state change optimization.
Minimized header interdependencies (GLG3D headers no longer include all of G3D )
Added GThread and GMutex classes. [Corey]
Added ImageFormat::fromCode(). [Corey]
Added Plane::distance() and Plane::closestPoint() helper methods. [Corey]
G3D::ImageFormat::code , G3D::ImageFormat::colorSpace
incompatible change G3D::MeshAlg::computeTangentSpace basis now computes a right-handed coordinate frame, where the binormal direction is the negative of the direction it faced in G3D 6.07.
Exposed G3D::RenderDevice::beforePrimitive and G3D::RenderDevice::afterPrimitive to end-user code for integrating raw OpenGL calls.
G3D::Framebuffer and G3D::Renderbuffer to implement the Framebuffer_object extension [Dan Hilferty]
G3D::Shader::hasArgument
G3D::Texture::getImage
Changed SECOND, MINUTE, DAY, HOUR, SUNRISE, SUNSET, MIDNIGHT, METER, KILOMETER to enum values instead of #defines
G3D::Texture::Parameters; deprecated most Texture constructors in favor of ones that use this class
Moved most image manipulation routines into GImage.
G3D::GImage now allocates the underlying buffer in multiples of bytes to allow slight overflor for MMX algorithms
G3D::GImage::BAYER_R8G8_G8R8_to_R8G8B8_MHC
G3D::GImage::R8G8B8_to_Y8U8V8
G3D::GImage::Y8U8V8_to_R8G8B8
G3D::GImage now supports PPM binary
Various Rect2D helpers [Nick Bray]
ConvexPolyhedron improved clipping [Nick Bray]
G3D::System::build
G3D::System::calloc
G3D::GImage::convertToRGBA
contrib/AVI can read most AVI files on Windows.
contrib/wxGWindow now uses wxWidgets 2.6.2
G3D_DEBUG now controls whether debug code is enabled; it defaults to the value of _DEBUG
zlib upgraded to 1.2.3 [Corey]
zlib now statically linked on Win32 (no longer requires zlib1.dll at runtime) [Corey]
G3D::MeshShape
Changed std::string hashCode to use CRC32 to reduce collisions
G3D::crc32
Added occlusion query #defines [Nick Bray]
G3D::Win32Window now shares textures and vertex buffers across all GL contexts
G3D::Win32Window now enforces single-threading among GL contexts
G3D::GLCaps::slowVBO
G3D::VARArea now uses main memory vertex buffers on cards with slow VBO implementations.
G3D::Matrix3::toString [Peter]
G3D::Matrix4::toString [Peter]
G3D::Color3::fromHSV [Peter]
G3D::Color3::toHSV [Peter]
G3D::Color3::jetColorMap [Peter]
Optimized G3D::iRound (now faster than casting!)
G3D::MD2Model::create now accepts a scale factor
G3D_DEPRECATED macro
G3D_CHECK_PRINTF_ARGS, G3D_CHECK_VPRINTF_ARGS macros to allow checking of printf argument strings under gcc at compile time with -Wformat.
G3D::TextInput::filename
G3D::TextInput::Options::msvcSpecials
G3D::TextInput::Options::startingLineNumberOffset
G3D::TextInput::readSymbolToken [cgd]
G3D::TextInput::readStringToken [cgd]
Threadsafe G3D::ReferenceCountedPointer
G3D::AtomicInt32
G3D::GThread [Corey]
G3D::Array::popDiscard
Optimized multi-argument Array::append
G3D::GFont 2x faster than in G3D 6.07
G3D::RenderDevice::pushState 2x faster than in G3D 6.07
G3D::RenderDevice::pushState no longer stores GL texgen and fog information
G3D::Draw::fastRect2D
G3D::System::outOfMemoryCallback
G3D::Queue::fastClear [Chris Demetriou]
G3D::Rect2D::x0y1 and x1y0
G3D::GLCaps bug tests now run in a separate GL context [Erik Cassel]
G3D::GApplet tracks real and simulation time.
contrib/Q3Map updated to correctly render instanced objects [Alex Rice]
G3D::OSWindow subclasses now required to invoke OSWindow::loadExtensions
G3D::Quat::log for non-unit quats and for real-only quats.
G3D::GApplet::doUserInput
G3D::GApp prints time for each component
G3D::Stopwatch
G3D::OSWindow::renderDevice()
G3D::OSWindow::current()
G3D::GLCaps::hasBug_redBlueMipmapSwap and workaround for G3D::Texture on Radeon 7500
Fix: CollisionDetection::penetrationDepthForFixedSphereFixedPlane() contact point and normal values. [Corey]
Fix: Quat::slerp has invalid shortest path [Corey]
Fix: G3D::drawFeatureEdges now uses correctly normalized face edges (and offers a crease angle)
Fix: G3D::SDLWindow now releases the mouse on Linux during an assertion.
Fix: All keys are reset to up when Win32Window loses focus. [Corey]
Fix: gaussRandom is unit gaussian [Corey]
Fix: [ 1418276 ] 6.08: Unsupported format for depth texture
Fix: Ignoring extra/unused set Shader arguments. [Corey]
Fix: [ 1229205 ] uniform texture array (Could not set indexed array uniforms). [Corey]
Fix: incompatible change BinaryInput/BinaryOutput copy constructors and assignments were accessible. [Corey]
Fix: RenderDevice::screenshotPic would corrupt GImage's heap. [Corey]
Fix: Alt-Tab window switching caused an invalid Alt key state. [Corey]
Fix: Incorrect window size event in Win32Window sent to OpenGL. [Corey]
Fix: [ 1227915 ] Textures don't bind on ATI under GLSL.
Fix: [ 1358477 ] ray-plane intersection bug [Dan Keefe]
Fix: [ 1370665 ] hash_map moved to stdext in VC8 (2005)
Fix: ToneMap extended to use DIM_2D_NPOT instead of DIM_2D_RECT
Fix: Texture::copyFromScreen now works with DIM_2D_NPOT textures
Fix: Wrapped debugAssertM in do {} while (0) to ensure correct compilation in single-line statements [ERik Cassel]
Fix: G3D::Draw::cylinder now renders the bottom correctly
Fix: Array::front now compiles under gcc
Fix: G3D::Ray::distance used to measure against the origin [David]
Fix: [ 1293151 ] ArticulatedModel clipping on Radeon -- disabled auto-mipmap generation on mobile radeon 9xxx
Fix: G3D::TextInput now parses ^=, character 255 correctly [cgd]
Fix: G3D::TextInput now reports line numbers correctly with raw newlines [cgd]
Fix: .ICO files with transparency loaded incorrectly [Corey]
Fix: G3D::Draw::rect2DBorder inner border was 1 pixel too thick.
Fix: [ 1326173 ] Win32Window::init should call makeCurrent.[Erik Cassel]
Fix: [ 1326423 ] G3D::Queue::_copy broken [Chris Demetriou]
Fix: [ 1313293 ] 6.08: TextInput gets symbol extendedType() wrong [Chris Demetriou]
Fix: IFSModel::save, for PLY2 forgot newlines [Peter]
Fix: Quat(Matrix3) now computes trace correctly (gave negative quats in some cases)
Fix: Setting RenderDevice::polygonOffset now always produces a depth shift, even for faces perpendicular to the view axis.
Fix: GImage now auto-resolves formats for files with 1 character base names
Fix: WeakReferenceCountedPointer cycle bug
Fix: Corrected lag encountered when using some ReliableConduit constructors [Dan Keefe]
Changes in 6.07:
G3D::OSWindow::makeCurrent
Win32 release binaries now built with no debug information (used to have line numbers)
AABox::AABox enforces the constraint low <= high
Optimized G3D::Array , Table, Queue, and Set for performance. Now significantly (up to 10x) faster than their std::counterparts.
G3D::Vector3(Vector2, float) constructor
G3D::Vector2::fastDirection
G3D::TextInput::Options::cComments
G3D::TextInput::Options::escapeSequencesInStrings
G3D::TextInput::Options::otherCommentCharacter2
G3D::TextInput::WrongString
GLCaps::supports_GL_ATI_separate_stencil
GLCaps can now test a card/driver and detect specific bugs:
G3D::ReferenceCountedPointer::downcast for non VC6 compilers
Improved G3D::ReferenceCountedPointer documentation to make subclassing features clearer
Moved typedef for uint into G3D namespace and into g3d (was in glg3d)
G3D::Shape
G3D::Cylinder
G3D::System::malloc , G3D::System::realloc , G3D::System::free for fast allocation of small objects
G3D::Draw::plane
G3D::Draw::cylinder
G3D::gaussRandom
GCamera deserialize(BinaryInput) & serialize(BinaryOutput) functions [Peter]
G3D::GApp now writes a description of the whole system to the log to aid debugging.
[ 1217928 ] OpenGL occlusion query entry points are loaded on initialization
New texture interpolation modes: BILINEAR_MIPMAP, NEAREST_MIPMAP, NEAREST_NO_MIPMAP
New texture formats:
isValidPointer and isValidHeapPointer no longer check the Win32 debug heap in order to support offset and padded memory blocks.
Restructured unit tests
G3D::CoordinateFrame::lookRay [David Baszucki]
G3D::System::describeSystem , G3D::NetworkDevice::describeSystem , G3D::RenderDevice::describeSystem
G3D::Array performance tuning for short arrays and arrays of small objects
Added glext.h entries for GL_ARB_draw_buffers, GL_ARB_texture_rectangle, GL_ARB_color_buffer_float, GL_ARB_half_float_pixel, GL_ARB_texture_float, and GL_ARB_pixel_buffer_object extensions
IFSModel::create added weld option, defaults to true (to keep compatibility). [Peter]
G3D::RenderDevice::alphaTestReference , RenderDevice::alphaTest
G3D::VAR::set
G3D::Log::vprintf
G3D::WeakReferenceCountedPointer
GCC 4.0 build support added [Corey]
G3D::CoordinateFrame::lookAt now gives a valid output even when look == up
contrib/GChunk
GLCaps now loads GL_EXT_framebuffer_object functions
Added MSVC 6 support for C99 restrict keyword
G3D::Win32Window properly resizes viewport on window resize [Corey]
G3D::BinaryFormat , G3D::byteSize , G3D::binaryFormatOf
Removed dead ManualCameraControllerHelper code
Added consistent area and volume methods to geometric primitives, deprecated old methods.
Fast G3D::BinaryInput::read / G3D::BinaryOutput::write methods for arrays
Enabled cube mapping on Radeon mobility cards and added a workaround to the known problems with texcoords on those cards.
Can now create G3D::Win32Window with existing HWND and HDC [Corey]
G3D::VertexAndPixelShader::ArgList::set(std::string, Array<T>)-- [ 1192401 ] Shader support arrays
Fix: SDLWindow used std::string's instead of C strings in printf and format inside some exception handling code. [Peter]
G3D::X11Window (same as SDLWindow in this release)
Fix: [ 1277854 ] Win32Window fails on 24-bit modes
RFE: [ 1242466 ] Inline Matrix3 methods
Fix: [ 1226272 ] end caps of capsules in wrong position
Fix: G3D::ImageFormat::LA8 now has 8-bits per channel
Fix: [ 1124491 ] Remove GL_SAMPLER_2DRECT_ARB
Fix: [ 1257113 ] G3D::Queue problems comining pushFront and pushBack
Fix: MeshAlg::Weld now linear time (was O(n^2) due to a bug)
Fix: [ 1298873 ] fast & correct CoordinateFrame::lerp
Changes in 6.06:
G3D::Lighting::emissiveScale
G3D::RenderDevice::drawBuffer
G3D::RenderDevice::debugNumMinorStateChanges, debugNumMinorOpenGLStateChanges, debugNumMajorStateChanges, debugNumMajorOpenGLStateChanges.
In stereo mode, Texture::copyFromScreen automatically chooses the left/right buffer to read based on the current glDrawBuffer
contrib/ArticulatedModel/ToneMap
Lazy state changes for shaders
50% performance improvement for G3D::BinaryInput , G3D::BinaryOutput when machine endian matches file endian
Textures load with default of maxAnisotroy = 2.0
maxAnisotropy argument to G3D::Texture constructors.
GLCaps now loads GL_ATI_fragment_shader extension
contrib/ArticulatedModel now supports rigid body hierarchies
Added TEX_SUBTRACT, TEX_ADD_SIGNED, TEX_DOT3, TEX_DOT3_RGBA modes for G3D::RenderDevice::setTextureCombineMode
G3D::RenderDevice now cleans up all static G3D::VARArea s when it shuts down
FIX: [ 1208157 ] GLSL slow on ATI
FIX: Off-by-one on viewport scale for 2D rendering
FIX: MeshAlg::computeTangentSpaceBasis now works correctly
FIX: 6.05 enabled all fixed function lights by default. This caused major performance problems on some cards.
FIX: Extended cube map workaround to all Radeon Mobility cards
FIX: Added check for glBlendEq before calling in RenderDevice
FIX: Added a test for GL_EXT_texture_env_add in RenderDevice
FIX: [ 1191817 ] unsigned warnings in BinaryInput
Changes in 6.05:
G3D::BAYER_G8B8_R8G8_to_R8G8B8_MHC
G3D::Quarter_R8G8B8_to_BAYER_G8B8_R8G8
G3D::BAYER_G8B8_R8G8_to_Quarter_R8G8B8
contrib/Matrix
contrib/Java
Texture::alphaOnlyVersion
Draw::sphere speed improved over 25% with single quad strip (improves Draw::capsule) [Corey]
Allow 1-channel GImage saving - BMP (expanded to RGB), PNG [Corey]
Allow 1-channel GImage loading - PNG [Corey]
Added shader and framebuffer extensions to glext.h
All files used during current execution are available via G3D::getFiles() [Corey]
Implemented OSX version of glGetCurrentContext with CGL. [Corey + Derek]
ReferenceCountedObject is-in-heap checks were removed to allow better multiple and virtual inheritance for reference counted objects. ReferenceCountedPointer still appropriately checks does an is-in-heap check on assignment. [Corey]
Added Dev C++ compatability
glGetAttribLocationARB
Changed GLight == operator to not use memcpy (was causing issues due to byte padding on some compilers)
Made CoordinateFrame destructor non-virtual (eliminates vtable)
Added new FAQ documentation
Added support to G3D::BinaryInput and G3D::BinaryOutput reading and writing huge (larger than available memory) files. Files are still restricted to about 2 GB total, and compressed files must fit entirely in memory.
Tweaked allocation strategy for small G3D::Array
G3D::Texture::rect2DBounds , G3D::Texture::vector2Bounds
G3D::Vector4 * G3D::Vector4 , Vector4 / Vector4
G3D::Array::operator=(std::vector)
G3D::Sky::getEnvironmentMap now returns the top texture on machines that don't support cube maps.
glDisableAllTextures()
G3D::setFailureHook
G3D::Shader::fromStrings now accepts optional names for the vertex and pixel shader
G3D::Shader no longer requires values for declared but unused uniform variables
G3D::RenderDevice now stores texture matrix at 32-bit precision (for faster push/popState)
G3D::RenderDevice::setTextureLODBias
G3D::Shader now supports shadow map arguments
G3D::Shader::ArgList checks to see if Texture arguments are null
G3D::RenderDevice::setAlphaWrite now defaults to true if the OSWindow has an alpha channel.
G3D::RenderDevice::screenshotPic now supports alpha
contrib/VideoSerializer
G3D::BinaryOutput::writeBits , G3d::BinaryInput::readBits
G3D::Sky can now be initialized with a NULL renderDevice, provided a non-null one is used with the G3D::Sky::render method.
G3D::pi() , G3D::halfPi() , G3D::twoPi() added to replace defines [Corey]
contrib/Q3Map
Increased G3D::Draw::sphere performance using vertex arrays.
G3D::Array::fastClear
G3D::AABSPTree::insert(Array<T>)
G3D::Texture::sizeOfAllTexturesInMemory
G3D::VARArea::sizeOfAllVARAreasInMemory
G3D::RenderDevice stores cameraToWorldMatrixInverse for faster coordinate system changes.
inlined G3D::Matrix3::operator= for performance
Created installer for Windows install [Corey]
Reorganized the documentation topic index based on abstraction level, added hyperlinks to demo/contrib code
G3D::ReliableConduit and G3D::LightweightConduit now send and receive objects directly; no need to make a G3D::NetMessage. G3D::NetMessage and associated methods are now deprecated.
Win32 GUI G3D::prompt now auto-expands \n to \r\n in prompt string [Corey]
G3D::Draw::frustum
Increased timeout and attempts for G3D::ReliableConduit to handle huge (1 MB) packets
G3D::BinaryOutput::reset (memory writing only; not supported for disk)
Reduced overhead for G3D::ReliableConduit and G3D::LightWeightConduit send routines
Added PPM/PGM/PBM ASCII encode/decode support to G3D::GImage [Corey]
New G3D::Surface rendering methods appropriate for shadow casting (with efficient default implementations).
G3D::Lighting
Changed RenderDevice::TEX_INTERPOLATE to mean GL_DECAL and added TEX_BLEND for GL_BLEND
G3D::CoordinateFrame::upVector
G3D::GLight::diffuse
G3D::Rect2D::contains is now const
Rewrote G3D::BinaryOutput to not use G3D::Array
G3D::MD2Model::textureMatrix
G3D::MeshAlg::computeBounds (vertex, index, ...)
G3D::RenderDevice::colorWriteEnabled(), depthWriteEnabled, alphaWriteEnabled
G3D::RenderDevice::setSpecularCoefficient(Color3)
G3D::VAR::maxSize
G3D::RenderDevice::enableTwoSidedLighting
G3D::Surface::hasTransparency
G3D::Surface::sort
G3D::RenderDevice::renderMode
G3D::MeshAlg::computeNormals(geometry, indexArray);
contrib/ArticulatedModel (beta 3DS support)
G3D::RenderDevice::swapBuffersAutomatically allows caller to suppress page flip.
Added coordinate system documentation.
RenderDevice::enableClip2D, RenderDevice::disableClip2D (scissor region)
contrib/wxGWindow is stable and full featured-- use wxWidgets 2.5.3 with G3D!
G3D::fileIsNewer
G3D::isDirectory
G3D::filenameContainsWildcards
G3D::filenamePath
G3D::Draw::lineSegment now accepts a scale (allowing arrows and axes to thicken appropriately)
G3D::Rect2D::largestCenteredSubRect
G3D::Matrix4::serialize , G3D::Matrix4::deserialize
glTexImage3DEXT
Removed glut.lib and glut.dll from the win32-lib directory.
G3D::writeStringToFile, G3D::TextOutput , and G3D::BinaryOutput now flush by default (safe, not fast).
Shifted push2D by 0.375 pixels as recommended in the OpenGL guide to bias integer coords towards pixel centers
G3D::Draw::rect2DBorder
G3D::Rect2D::border
G3D::RenderDevice now creates a G3D::Win32Window on Windows instead of a G3D::SDLWindow . SDLWindow is now deprecated on Windows.
G3D::VARArea now updates allocation sizes instead of G3D::VAR internally. Added more accessor methods to VARArea to futher remove VAR from VARArea internals. [Corey]
VARSystem.cpp moved to VARArea.cpp - filename change only! [Corey]
Linux build system updated: Builds only static libraries, Does not require libtool/libtoolize anymore, Does not check for or require libraries that normally linked with the .so files, Automatically builds Test project with iCompile during install. [Corey]
G3D::Quat::deserialize , G3D::Quat::serialize
G3D::PhysicsFrame::deserialize , G3D::PhysicsFrame::serialize
G3D::TextInput::Options::singleQuotedStrings (defaults to true, changing the behavior from previous versions).
G3D::Token::extendedType returns information disambiguating characters and strings and floats and ints.
Added data/ah64-body and ah64-rotor
demos/Network_Demo now uses a helicopter model instead of a plane
G3D::VARArea::openGLVertexBufferObject and G3D::VARArea::openGLBasePointer for breaking the VARArea abstraction.
GLG3D.h no longer links against SDLMain.lib on Windows if _CONSOLE is defined (since console programs have no WinMain).
SDL's redefinition of main is cleared when not linking sdlmain.lib [Corey]
Moved contrib/Win32Window to G3D::Win32Window
G3D::TextInput::readSymbols
contrib/Image [Morgan]
contrib/wxGWindow [Morgan]
Added support for full-screen antialiasing to contrib/Win32Window
Added joystick support to contrib/Win32Window [Corey]
Win32Window fully-implements OSWindow [Corey]
Texture now supports DDS(2D/CubeMap) and PNG files [Corey]
Added Win32 pbuffer routines (no G3D wrapper, though-- we're waiting for the new ARB API).
G3D::Surface::texCoords
G3D::IFSModel now loads IFS 1.1 [Peter]
G3D::IFSModel now loads and saves PLY2 files (plain text IFS format) [Peter]
Automatically switch to glCompressedTexImage2D in G3D::Texture::fromMemory [Corey]
Added G3D::Sky::fromCubeMap for preloaded CubeMap Texture::Ref's [Corey]
Added G3D::Sky::fromFile and deprecated Sky::create [Corey]
Demo and Test projects now build with iCompile, which is included [Corey]
Fix: TextOutput::writeString now escapes special characters
Fix: AABSPTree::serializeStructure
Fix: Properly handle gl_ uniforms on Radeon for Shader
Fix: [ 875467 ] OS X debugBreak (requires default XCode debug menu item 'Break on DebugStr()') [Corey + Derek]
Fix: Can make a G3D::Texture::fromGImage with one channel (defaults to L8 format)
Fix: [ 1149972 ] 6.05: Make Sky render correctly on low-end cards (no Cube mapping) [Corey]
Fix: [ 1032742 ] OS X _DEBUG not defined [Derek]
Fix: 16-bit integer reads in BinaryInput that always reversed endianness. (OSX file reading) [Corey + Derek]
Fix: Matrix4 operator[] was returning a matrix value cast to a pointer [Corey]
Fix: Matrix3 and Matrix4 had missing float* / const float* operators [Corey]
Fix: Rect2D::clip broken for types other than Vector2
Fix: RenderDevice::configureShadowMap result depends on objectToWorldMatrix
Fix: [ 1150650 ] DebugBreak() undefined
Fix: [ 1111534 ] Network Demo crashes starting 2nd server on same machine
Fix: [ 1102091 ] ReliableConduit::receive times out
Fix: Implemented MD2Model::objectSpaceBoundingX methods.
Fix: G3D::Triangle::area is now zero for zero-area triangles (was inf)
Fix: AABSPTree with extent on MSVC 6 no longer enters infinite loop in std::sort
Fix: [ 1105641 ] Does not build with g++ 3.4.x [Corey]
Fix: [ 1103619 ] RenderDevice::countPrimitive is wrong (changed to RenderDevice::countTriangles) [Corey]
Fix: AABSPTree::BoxIntersectionIterator doesn't compile
Fix: [ 1101680 ] copyfile won't overwrite (on Windows now overwrites) [Corey]
Fix: [ 1101646 ] GCamera::frustum incorrect for non-square viewport
Fix: Ultra bright lens flare at sunset [Nicholas Bray]
Fix: IP address strings were reversed by NetAddress(std::string)
Fix: TextInput now returns end of file token for files without trailing whitespace
Fix: [ 1094166 ] 6.05: Release mouse stuck on x-axis [Corey + Morgan]
Fix: Recognize buggy ATI Radeon Mobility cube maps and work around
Fix: Textures now initialize without setting error bit on cards without GL_ARB_shadow
Fix: filenameBaseExt now operates correctly on strings with both \ and / slashes.
Fix: [ 1062659 ] BinaryInput::BinaryInput() memory leak
Fix: Removed RenderDevice::polygonCount, which was never used.
Fix: TextInput::readNumber no longer accepts double preceeding +/- on numbers when Options::signedNumbers is true
Fix: [ 1038733 ] OSWindow cannot set icon properly [Corey]
Fix: [ 939400 ] Linux mouse set position (Wild camera swinging on startup) [Corey]
Fix: [ 1042591 ] Software GL Causes Assertion [Corey]
Fix: [ 1036634 ] debugAssert doesn't work on MSVC 7 [Corey]
Fix: [ 1049024 ] Fix compile warnings from gcc/Linux build [Corey]
Fix: [ 1051272 ] Win32Window doesn't use GWindowSettings properly. [Corey]
Fix: Win32Window clips the proper cursor region during input capture. [Corey]
Fix: GWindows now center and maximize on the primary monitor for Windows.
Fix: [ 1052945 ] TextOutput wordWrap starts on newlines
Fix: [ 1050957 ] TextInput readNumber support for capital 'E' numbers.
Fix: [ 1049674 ] TextInput failes on X. numbers.
Fix: [ 1044028 ] Linux TextOutput Warning
Fix: [ 1032750 ] Grayscale JPG errors [Corey]
Fix: [ 1036225 ] Encode TGA support strips alpha channel [Corey]
Fix: [ 1038631 ] CoordinateFrame::slerp (Quat::slerp has fix) [Corey]
Fix: [ 1033686 ] GImage::GImage(filename) dies on certain (BMP) images [Corey]
Fix: Texture mapping modes for pre-OpenGL 1.3 cards [Dan & Morgan]
Changes in 6.04:
G3D Manual! [ Morgan and Sascha ]
Initial MSVC7 build script. MSVC7 is not an officially supported platform however the release contains MSVC7 precompiled binaries and the build script will automatically build on both 6 and 7.
Improved performance of G3D::writeStringToFile
G3D::ReferenceCountedPointer assignment now allows compile time subtyping
G3D::ReferenceCountedPointer != operator
G3D::ReferenceCountedPointer::notNull
G3D::GLight::directional now normalizes the light vector
G3D::setAssertionHook
[ 1029256 ] G3D::Shader / G3D::VertexAndPixelShader define g3d_ uniforms inside shaders
static G3D::IFSModel::save /load for writing/reading IFS files
G3D::TextInput allows ' inside quoted strings
G3D::TextInput allows \ as a symbol token
G3D::TextInput supports an arbitrary comment character (e.g. '#')
Precompiled binaries for VisualC++ 7 (.NET 2002/2003)
VisualC++ 7 (.NET 2002/2003) supported by build script
Build now MOVEs binaries instead of COPYing them on Windows (allows two compilers to output to the same location)
G3D Guide overview documentation
Changelog and Error FAQ moved under Doxygen
Build scripts and documentation now under the 'doc' .dsp on Windows
Textures now support a DepthReadMode that can be used to perform hardware shadow map comparisions. RenderDevice::configureShadowMap now requires an appropriately configured texture-- in previous releases it would reconfigure the texture for you.
G3D::UserInput::keyReleased , G3D::UserInput::ReleasedKeys
G3D::Array::randomElement
G3D::Array::insert
G3D::RenderDevice::getObjectToWorldMatrix and getCameraToWorldMatrix now return const CoordinateFrame&
Optimized G3D::Array::randomize
G3D::cyclicCatmullRomSpline
G3D::wrap
contrib/AudioDevice
G3D::System::time() ;
More precise System::sleep
G3D::IFSModel::pose with no arguments
G3D::AABSPTree::serializeStructure, deserializeStructure,
serialize(Vector3::Axis, BinaryOutput), deserialize(Vector3::Axis, BinaryInput),
"glslc" GLSL compiler in the tools directory for getting compile-time errors from shaders
GLCaps::init now takes optional debug log
G3D::VertexAndPixelShader static constructors take optional 'debug' argument
GWindowSettings::visible; Win32Window can now start invisible
[ 991147 ] glBlendEquationEXT, RenderDevice::BlendEq, min, max, subtract, reverse subtract alpha blending
[ 989785 ] Draw::rect2D
GLCaps::numTextureCoords, GLCaps::numTextureUnits, GLCaps::numTextures
GLCaps::G3D_MAX_TEXTURE_UNITS
Rect2D::corner
GCamera::getFrustum, GCamera::frustum, GCamera::Frustum, GCamera::Frustum::Face
Plane constructor that accepts Vector4s (possibly at infinity)
AABox::inf, AABox::zero, AABox::maxFinite
AABox::intersects(Sphere)
Vector3::minFinite, Vector3::maxFinite
Plane::halfSpaceContainsFinite
Plane::halfSpaceContains(Vector4)
AABSPTree::getIntersectingMembers(Array<Plane>)
AABSPTree::getIntersectingMembers(GCamera::Frustum) for view-frustum culling
AABSPTree::getIntersectingMembers(Sphere)
AABox::split
Extended AABox::culledBy, Box::culledBy, and Sphere::culledBy with extra information for bounding volume hierarchies
G3D::computeNormalMap
Matrix3::fuzzyEq(Matrix3)
Removed System::sleep(0.02) from GLG3D demo to give more accurate performance measure
[ 965824 ] changed link library defaults
serialize/deserialize for int, bool, double, float, std::string
G3D::TextOutput
[ 976924 ] Texture::texelWidth
[ 973413 ] VertexAndPixelShader::ArgList::set can be called more than once per variable
OSWindow::setIcon(std::string filename)
Texture::fromMemory that takes a single image (instead of an array of images)
[972604] RenderDevice::setTextureMatrix(uint, Matrix4)
[972747] Rect2D::center
GImage and Texture now load ICO files
GL_SAMPLER_1D_ARB, 2D, 3D, CUBE
Win32Window mouse events
Added normals to AABox collision results
Fix: [ 1026534 ]various cast bugs using Ref types. Removed G3D::ReferenceCountedPointer implicit cast to underlying pointer type This is technically an incompatible change , however we found no occurance in the library or demos using this that was not a bug!
Fix: VAR constructor takes VARAreaRef instead of VARArea* Incompatible change
Fix: ManualCameraController is prevented from looking precisely along the Y-axis, which would cause a singularity.
Fix: Added '?' as a valid symbol Token
Fix: [ 946235 ] GFont::align right w/ fixed_spacing
Fix: [ 1001033 ] RenderDevice with 0 texture units
Fix: GLCaps:: ARB stencil two side -> EXT stencil two side (stencilled shadows were broken)
Fix: [ 993449 ] vsnprintf crashes MSVC 7
Fix: [ 991320 ] Pointer truncation Warnings
Fix: [ 981440 ] AUTO with Texture::fromMemory
Fix: Plane::halfSpaceContains now works for infinite and semi-infinite points
Fix: [ 979032 ] Quat <-> Matrix3 roundtrip inverts
Fix: [ 976743 ] document GLCaps functions
Fix: [ 976746 ] #include GLCaps in g3dall
Fix: [ 973550 ] sampler2DRect now supported in GLSL shaders (NVIDIA only; ATI drivers are broken)
Fix: [ 973490 ] Win32Window width/height off by non-client amount
Fix: [ 961827 ] In debug mode, RenderDevice tries to access GL_MAX_TEXTURE_IMAGE_UNITS_ARB and an assertion fails on cards that don't support it.
Fix: Texture binding for VertexAndPixelShader
Changes in 6.03:
Matrix4::approxCoordinateFrame
Vector2(const Vector2int16&) [Giulio]
RenderDevice::setObjectShader
RenderDevice::setVertexAndPixelShader
G3D::RenderDevice supports "..._CURRENT" as an option for most settings
inf -> inf() , nan -> nan() , NAN -> NAN() This is an incompatible change-- it was needed to fix a bug with the order of initialization of globals
GImage::sizeInMemory
Defined std::ostream << NetAddress, std::ostream << Vector3
'build doc' copies the contrib directory to the install directory
LightweightConduit::PacketSizeException
Quat::unitRandom() [Giulio]
Color3::wheelRandom
GImage::save and encode now const [Thanks Arni Mar Jonsson]
LightweightConduit::send that accepts multiple destinations
ReliableConduit::multisend
Moved IFSBuilder from demos to contrib
LightweightConduit and ReliableConduit send/receive can now take references as well as pointers
RenderDevice::clear() that takes no arguments
RenderDevice::setShader
G3D::GApp now catches ShaderGroup::ArgumentError exceptions
System::operatingSystem() now includes a version number on Linux
SDLWindow no longer initializes the audio system; use SDL_InitSubsytem if you need audio.
Extended GLenumToString with GL_SHADER_OBJECTS_ARB types.
NVIDIA p-buffer: GLX_SAMPLE_BUFFERS_ARB, GLX_SAMPLES_ARB, GLX_FLOAT_COMPONENTS_NV, glXDestroyGLXPbufferSGIX, glXChooseFBConfigSGIX, glXCreateGLXPbufferSGIX, glXCreateContextWithConfigSGIX, glXQueryGLXPbufferSGIX
NVIDIA swap lock: glXJoinSwapGroupNV, glXBindSwapBarrierNV, glXQuerySwapGroupNV, glXQueryMaxSwapGroupsNV, glXQueryFrameCountNV, glXResetFrameCountNV
OSWindow::requiresMainLoop, OSWindow::runMainLoop (Beta)
OSWindow::pollEvent, SDLWindow::pollEvent
G3D::GApp accepts an optional OSWindow on construction
G3D::VertexAndPixelShader , G3D::ObjectShader (Beta)
Deprecated GPUProgram, VertexProgram, and PixelProgram (the OpenGL 1.5 shaders follow a different paradigm than the OpenGL 1.3 ones, so the G3D API must change to match it).
Support for GL_ARB_vertex_shader, GL_ARB_fragment_shader, and GL_ARB_shader_objects
G3D::drawFeatureEdges
const Array<Vector3> & G3D::MD2Model::Surface::objectSpaceFaceNormals();
G3D::RenderDevice::sendSequentialIndices
Network_Demo
contrib/Win32Window
contrib/pingtest
contrib/GlutWindow [Morgan and Dan Keefe]
contrib/ObjModel [Corey Taylor]
G3D::GLCaps
GAppSettings::logFilename
Deprecated RenderDevice::suportsOpenGLExtension, RenderDevice::supportsImageFormat, other supports shortcuts (use GLCaps instead).
DiscoveryClient::cleanup
Optimized BinaryInput::readUInt32, readUInt16
Extended network documentation
'fastlib' build target for G3D library developers
glGetVector2, glGetVector3, glGetVector4
float * Quat (double * Quat already existed)
GApp automatically generates g3d-license.txt at runtime ([RFE#856338] CREDIT.TXT)
G3D::license
Removed several large files (tag, ppt, exe) from the source zipfile, bringing it down to 3 MB
Improved CoordinateFrame:pointToObjectSpace() (RFE#715996) [Giulio]
[RFE#945935] Make static constants into functions [Giulio]
Fix: LightweightConduit::send verifies that the packet size is smaller than the UDP limit
Fix: Multitexture on ATI and Wildcat cards
Fix: Incorrect occlusion in GLG3D_Demo (was caused by global constant problem)
Fix: [BUG#949377] Checks for stencil extensions [Giulio]
Fix: [BUG#922725] Non-multitexture implementation for getTextureState() [Giulio]
Fix: Restore ambient light color after RenderDevice::popState
Fix: RenderDevice now initializes OpenGL extensions before testing for multitexture [Erik Cassel, Dan Keefe]
Fix: Bottom clipping plane of GCamera frustum now correct (was slanted incorrectly, making frustum too big)
Fix: GFont::draw2D now returns correct y value (used to be too small)
Fix: NetworkDevice now returns useful hostname on Linux (used to be "localhost")
Fix: The conduit returned from NetworkDevice::createReliableConduit now has ok() == false when connect fails
Fix: Tangent space computation of constant u, v now correct (was missing a factor of 2, leading to slight errors) [Max McGuire]
Fix: [ 925456 ] select broken on Linux (Networking was broken on Linux)
Fix: getDepthBufferValue off by 1 [Andi Fein]
Changes in 6.02:
Default constructor for Line.
Various patches to make G3D work with the CAVE [Dan Keefe]
AABox::set
Made OSWindow::setPosition non-const
VARArea now tests for the presence of all VBO extensions, on the freak chance that a driver has only partial support (due to a bug)
Linux build statically links OpenGL 1.2.1 and loads extensions through OpenGL 1.5 to work around Wildcat Linux driver bug (Windows and Mac statically link OpenGL 1.1 and load extensions through OpenGL 1.5)
Triangle stores precomputed edge lengths
Ray-triangle with vertex weights
Highly optimized ray-triangle intersection test [Tomas Moller & Ben Trumbore]
Create a texture from 6 different cube-map filenames
Added contrib directory built as part of the 'doc' target
contrib/CoreyGWindow: OSWindow implementations for various platforms
AABSPSet::beginRayIntersection [Pete Hopkins]
AABSPTree::beginBoxIntersection
CollisionDetection::intersectionTimeForMovingPointFixedAABox, Ray::intersectionTime(AABox) [Pierre Terdiman and Andrew Woo]
Triangle::center
Renamed KDTreeSet to AABSPTree, old name is #defined
RenderDevice now works on cards without multitexture
void glTexCoord(const G3D::Vector4& t); [Dan Keefe]
Overloaded float, double, and int * Matrix3
Fix: [ 923944 ] Matrix/Quat ambiguity
Fix: fuzzyEq(inf, inf) is true
Fix: Triangle::randomPoint returns values outside the triangle
Fix: [ 913763 ] tokenTypeToString(Token::END)
Fix: Compute number of texture coordinates before RenderDevice::setVideoMode [Dan Keefe]
Changed the default depth bits to '0' for wider compatibility (Fix: Unable to create OpenGL screen: Couldn't find matching GLX visual)
Fix: [912305] Table, Queue, and Set assignment operators do not free old values
Fix: Separate specular and Multisample on Tablet PC w/ Trident [Dan Keefe]
Fix: Linux debug build now has line numbers
Upgraded to SDL 1.2.7 Fix: [ 838030 ] SDL 1.2.6 blocks prompt Fix: FSAA does not work under SDL Fix: Default Win32 refresh rate
Draw::vertexVectors
New meshes from Brown University: hemisphere.ifs, curvy.ifs, head.ifs, closed-low-poly-teapot.ifs, bump.ifs
GLight::specular
SDLWindow::setWindowDimensions and setWindowPosition now work on Win32
GWindowSettings::x, GWindowSettings::y, GWindowSettings::center
System::setEnv
[ 909999 ] OSWindow Joystick interface
double * Quat ([ 909305 ] scalar * {quat, vector, matrix})
Increased the precision of several Vector2 and Vector3 methods
MeshAlg::computeNormals now returns 0 instead of NaN for degenerate normals
Updated main-no-GApp.cpp for 6.02
RenderDevice::screenshotPic can copy from the back buffer
Improved VAR documentation.
If NO_SDL_MAIN is defined, G3D does not attempt to link against sdlmain.lib
UserInput::setPureDeltaMouse
UserInput::mouseXY, mouseX, mouseY
UserInput::mouseDXY
Deprecated UserInput keyMapping constructor argument
RenderDevice::setDrawBuffer [Dan Keefe]
GFont::draw3D [Dan Keefe]
GImage::pixel3(x, y) and GImage::pixel4(x, y)
debugAssert, debugBreak, debugAssertM, etc. all release input grab when an assertion fails (Win32 and Linux) and restore it when the program continues (Win32). This also fixes the DirectInput laggy cursor that occurs after a break.
Changes in 6.01:
Changes in 6.00:
FIX: warning: passing `double' for argument 1 of `void G3D::Queue<T>::repackAndRealloc(int)'
Optimized static Matrix3::transpose (36 cycle) and Matrix3::mul (52 cycle) variations.
Changed some lerp arguments from float to double
MeshAlg::computeTangentSpaceBasis
Draw::axes now uses scale to compute axis length
New ParallaxBump demo
Changed several Vector3 return values from float to double
Real-world stars, sun, and moon path (Nick Musurca)
Now compiles under MSVC++ 7.0 (David Baszucki)
Now compiles under g++ OS/X (Ben Landon)
Changed the default RenderDeviceSettings::alphaBits to 0 in the hope that it will work with more graphics cards.
Matrix3::fromX methods became factory methods
G3D::sinc
Multi-platform lib directories
Vector3::average(), Color3::average(), Vector3::sum(), Color3::sum()
Ray::reflect, Ray::refract
Physically correct sky model
FIX: Older graphics cards can now initialize properly
Increased fuzzyEpsilon to 0.000001
Color3::max, Color3::min, Color4::max, Color4::min
Array::sortSubArray
GCamera::getClipPlanes now takes a G3D::Array
G3D::AABox
Box::randomInteriorPoint, Box::randomSurfacePoint
Vector3::cosRandom, Vector3::hemiRandom, Vector3::reflectAbout, Vector3::reflectionDirection, Vector3::refractionDirection
log(Color3)
Upgraded to zlib 1.2.1
VAR::valid (Peter)
System::getLocalTime, System::getTicks
High-performance cycle count and time queries on Linux
UserInput::anyKeyPressed
G3D::Box now provides axes, center, and extent information (serialization is backwards compatible to 5.xx)
TextInput's exceptions now provide file, line, and character numbers as well as preformatted error messages in the style of MSVC++.
G3D::Texture::fromGImage
G3D::TextInput now parses hex numbers of the form 0x#####
G3D::CollisionDetection::penetrationDepthForFixedSphereFixedPlane
G3D::CollisionDetection::penetrationDepthForFixedSphereFixedBox
G3D::beginMarkShadows , G3D::endMarkShadows , G3D::markShadows
GFont::draw2D now returns the string bounds
Sphere::surfaceArea, Sphere::volume, Box::surfaceArea, Box::volume
Two-sided stencil operations
Removed G3D::Real
FIX: [ 855947 ] Fonts are broken on Radeon
Switched vertex arrays to use the new ARB_vertex_buffer_object extension. Compared to 5.xx rendering speed: NVIDIA/Win32 is the same (fast), ATI and Linux rendering are about 10x faster. The API has changed slightly-- most significant, the vertex, normal, color, etc. arrays must all come from the same VARArea now.
Disabled the "conditional is constant" level 4 warning on Windows that is triggered by the for-loop scoping fix.
G3D::SkyParameters::directionalLight
G3D::TextureManager (Peter S. & Morgan)
Flipped skybox X-axis to match OpenGL cube map coordinates
Texture now uses hardware MIP-map generation
Texture::copyFromScreen for cube map faces
RenderDevice::configureReflectionMap
RenderDevice::configureShadowMap
Renamed CFont to GFont
Renamed CImage to GImage
G3D::Matrix3::getRow
Added optional argument drawCelestialBodies to Sky::create.
RenderDevice::getTextureMatrix
Depth Textures
Texture::createEmpty
RenderDevice::setViewport has flipped the y-axis since version 5.00
ReferenceCountedPointer::isLastReference
Support for textures beyond the number of texture units (which occurs on NVIDIA cards)
G3D::Surface
G3D::IFSModel
G3D::CoordinateFrame::normalToObjectSpace , G3D::CoordinateFrame::normalToWorldSpace
Simplified arguments on Texture::copyFromScreen
Moved Camera in GLG3D to GCamera in G3D
Moved setProjectionAndCameraMatrix from Camera to RenderDevice
Moved G3D::Rect2D to G3D from GLG3D, changed interface
G3D::setRenderMode
G3D::RenderDevice::setSpecularCoefficient , G3D::RenderDevice::setShininess
G3D::GLight
Renamed G3D::RenderDevice::configureDirectionalLight, configurePointLight to G3D::RenderDevice::setLight
Changed G3D::Rect2D to use doubles
G3D::Camera::setPosition()
G3D::Camera::lookAt()
G3D::ManualCameraController::setPosition()
G3D::System::getTick, G3D::System::getLocalTime
Fixed [ 839618 ] peak var only updated on reset()
G3D::Array::findIndex (thanks to David Baszucki for the suggestion)
Removed RenderDevice::setProjectionMatrix3D and RenderDevice::setProjectionMatrix2D
RenderDevice::project
RenderDevice::push2D() now uses the current viewport instead of full screen by default
RenderDevice::getViewport
G3D::SimTime
Sky::render no longer needs a camera matrix (it gets it from the render device)
SkyRef, Sky::create()
Removed Sky::getName
Removed RenderDevice::setAmbientLightLevel (duplicated RenderDevice::setAmbientLightColor)
G3D::GApp , G3D::GApplet, G3D::GAppSettings
RenderDevice::getCardDescription
GPUProgram interface for setting program constants [Peter, Morgan & Dan]
RenderDevice::getModelViewMatrix
RenderDevice::getModelViewProjectionMatrix
RenderDevice::getProjectionMatrix
Documented some more common compiler errors.
Moved RenderDevice::debugDraw methods to the Draw class, changed rendering from cylinders to lines for wireframe (for performance)
Ray::direction no longer has unit length
Line::point, Line::direction
LineSegment::endPoint
IFSBuilder loads Brown University Sketch Model (sm) format
New IFS models: angel, distributor-cap, dragon2, duck, elephant, hippo, hub, mech-part, rotor, sandal, trumpet, venus-torso, woman
RenderDevices are now optionally resizable
MeshAlg::computeWeld
Array::randomize
Table now refuses to push the load factor above 19/20 and stops rehashing
Table always keeps an odd number of buckets
Sphere::randomInteriorPoint, Sphere::randomSurfacePoint
LineSegment::randomPoint
Hardcoded some common paths into demoFindData
Deprecated old RenderDevice::init method.
Full screen anti-aliasing (FSAA)
G3D::RenderDeviceSettings
All 2, 3, and 4 character swizzles for Vector2, Vector3, Vector4 are defined.
G3D::rsqrt
Most vector methods are also defined as functions now
sign(Vector2), sign(Vector3), sign(Vector4)
G3D::Matrix4
Changed G3D_VER from double to integer
G3D::lerp
Changed G3D::PI, G3D::HALF_PI, and G3D::TWO_PI to #defines
Vector2::clamp, Vector3::clamp, Vector4::clamp
Changed order of arguments to all lerp methods to match DirectX/Cg
Changed order of arguments to G3D::clamp and G3D::iClamp to match DirectX/Cg
G3D::ManualCameraController::ManualCameraController now requires a G3D::UserInput
G3D::UserInput::appHasFocus
G3D::ManualCameraController now stops tracking the mouse when the app loses focus
G3D::ManualCameraController::setActive
G3D::ManualCameraController now manages the mouse cursor instead of G3D::RenderDevice
G3D::UserInput::getMouseXY, G3D::UserInput::getXY
RenderDevice::debugDrawVertexNormals
GPUProgram, VertexProgram, and PixelProgram now recognize the output of the Cg compiler and automatically bind constants.
RenderDevice now loads glActiveStencilFaceEXT
RenderDevice::numTextureCoords
Moved changelog to a separate page
Reformatted overview to be smaller
Added model debugging info to the IFSBuilder display
Welded some broken vertices in the teapot.ifs file
Renamed Font.* to CFont.*
CFont::draw2DString renamed to CFont::draw2D (use a define to port old code)
MeshAlg
RenderDevice now enables GL_COLOR_MATERIAL by default
msgBox
MD2 model gallery in documentation (Kevin)
MD2Documentor (Kevin)
debugAssertGLOk macro
VertexProgram now supports NVIDIA Vertex Program 2.0
RenderDevice now loads glGenProgramsNV, glDeleteProgramsNV, glBindProgramNV, glLoadProgramNV, glTrackMatrixNV, glProgramParameter4fvNV, glGetProgramParameterfvNV, glGetProgramParameterdvNV extensions
VertexProgram and PixelProgram static factory methods now return reference counted values.
Split the reference value from RenderDevice::setStencilTest into setStencilConstant
RenderDevice::STENCIL_INVERT, RenderDevice::STENCIL_REPLACE, RenderDevice::STENCIL_ZERO
Added brighten argument to Texture::fromFile
Increased CImage JPEG save quality
RenderDevice::screenshot now returns the name of the file that was written
nextPowerOf2 renamed to ceilPow2
System::alignedMalloc, System::alignedFree
Carbon, Crackman, Edenmill, Futurist, Interplanetary, Iomanoid, Starlight, Lesser, and Wild fonts by Ray Larabie. Like all of our fonts, they are free, but please consider a donation to him if you like them. http://www.larabiefonts.com/
MD2Model_Demo
G3D::MD2Model
FIX: Fixed a bug in Array shrinking that could cause memory corruption
FIX: RenderDevice windows with an aspect ratio of less than 1 now allowed.
FIX: TextInput now parses '#', '~', '~=', '&', '&&', '|', '||' correctly
VARArea::reset() now waits for rendering calls using its vertex arrays to complete before wiping the memory.
G3D::filenameBaseExt , G3D::filenameExt
VARArea::finish()
Milestone
TextInput::Options::signedNumbers
RenderDevice now loads glFlushVertexArrayRangeNV
Vector2int16
RenderDevice::freeVARSize()
Array now allocates 16-byte aligned pointers.
Decreased the default camera movement rate by 50% for better resolution.
RenderDevice enables GL_NORMALIZE by default
Improved the performance of Array::append/Arraypush/Arraynext
Fix: [ 875219 ] Array::sort must use std::sort
Array::next
Array::reverse
PCX file loading
Test images
Color3uint8 as uint8[] addressing
Color4uint8 as uint8[] addressing
Removed const from VAR::pointer
ReferenceCountedPointer::isNull
alwaysAssertM
Log::common, Log::getCommonLogFilename
Switched from static to dynamic linking of zlib
Upgraded to zlib 1.1.3
On Win32 the lib list is automatically updated through pragmas (5.xx programs should revert to linking against default libraries)
Increased default sky quality to 1.00
G3D::CFontRef
RenderDevice now loads all register combiner extensions (NVIDIA only)
Sky::getEnvironmentMap
Sky implementation now uses a cube map (when one is available)
G3D::Sky constructor now takes a render device
Rotated Sky box 90 degrees to match environment maps
G3D::Sky now takes the environment filenames as "sky_*.jpg" instead of "sky_ft.jpg"
Added default filename for Sky constructor
Added caustics textures created with Kjell Andersson's generator http://www.lysator.liu.se/~kand/caustics/
#defined "for" under MSVC so that it obeys C99 scoping rules
System::consoleKeyPressed
System::consoleClearScreen
System::consoleReadKey
NetMessage::type()
Changed the Conduit message protocol to include a message type. The API is backwards compatible to 5.01 even though the protocol is not.
Removed optional argument maxSize from LightweightConduit::receive.
NetAddress::serialize
NetAddress::deserialize
NetAddress == NetAddress
hashCode(NetAddress)
RenderDevice::init now prints ATI or NVIDIA driver version to the log under Windows
readme.html library build instructions now have downloads for required libraries
Library list has changed for Win32 (added version.lib)
System::cpuArchitecture
System::operatingSystem
double-precision Plane::getEquation
Vector2::lerp
Platform specific #defines G3D_WIN32, G3D_LINUX, G3D_OSX
G3D::Array::contains
G3D::Queue::contains
G3D::ImageFormat
G3D::Texture::DIM_CUBE_MAP
G3D::Texture resizes non-power of two textures
G3D::Texture constructors are completely changed from 5.01 (and hopefully easier to use)
G3D::CImage now supports images with alpha
Removed most of the width/height arguments from G3D::Camera methods
BinaryInput::readBytes and BinaryOutput::writeBytes now take void* as an argument to avoid casting
Plane::fromEquation
Removed Plane::getNormal (use Plane::normal instead)
Removed CDTriangle (use G3D::Triangle instead)
Removed Font (use G3D::CFont instead)
FIX: Camera::getClipPlanes now transforms infinite planes correctly.
FIX: The last reference of an RGC pointer assigned to itself no longer tries to collect before re-assigning
Changes in 5.01
G3D::tesselateComplexPolygon
G3D::ConvexPolygon
G3D::ConvexPolyhedron
G3D::iClamp , G3D::clamp
G3D::iWrap
G3D::iRandom , G3D::random
G3D::getFiles
G3D::getDirs
G3D::VAR::pointer
G3D::realWorldLocalTime
G3D::Texture::TRANSPARENT_BORDER
DECLARE_GLFORMATOF
G3D::System::machineEndian
G3D::VertexProgram , G3D::VertexProgramRef , G3D::RenderDevice::setVertexProgram
G3D::PixelProgram , G3D::PixelProgramRef , G3D::RenderDevice::setPixelProgram
G3D::GPUProgram , G3D::GPUProgramRef
G3D::sizeOfGLFormat
G3D::RenderDevice::setVertexAttrib
G3D::Vector2 *=Vector2, /= Vector2, * Vector2, / Vector2
glFormatOf
G3D::Color4uint8
G3D::Color3uint8
G3D::Vector3int16
G3D::System::currentProgramFilename
CImage::insertRedAsAlpha
CImage::stripAlpha
Texture::hasAlpha
Added support for TGA with alpha channel
Re-implemented Texture to support a broader range of formats and cleaner implementation.
Fix: Improved Texture::LUMINANCE support
Added == and != overloads for Texture::Ref so that "a != NULL" is now legal and does not require a cast to Texture::Ref.
G3D::CFont is a typedef for G3D::Font to avoid name conflicts with X11 Font under Linux. In future releases, the name Font will be deprecated.
RenderDevice::setPointSize
Added a new teapot (teapot.ifs) that is closed, with a properly fitting top. The classic teapot is now called "utah-teapot.ifs" (Sebastian Schuberth and Simon Winkelbach)
RenderDevice::init now loads glPointParameterfvARB, glPointParameterfARB, glMultiDrawArraysEXT, and glMultiDrawElementsEXT functions.
GLenumToString(4) now returns "GL_TRIANGLES" instead of "GL_LINE_BIT" (both are correct)
Added TextInput::Options to optionally allow C++ comments to be treated as two slashes instead of a comment
Added data/image/meter.jpg, a meter stick texture convenient for testing
Added sansserif, news, and terminal fonts based on Bitstream's free fonts
RenderDevice::numTextureUnits
Added stars to night Sky
Added classic GL dinosaur model as data/ifs/dinosaur.ifs
Documented G3D::glGetProcAddress
Fix: Texture now restored GL_ENABLE bits properly after creation
Fix: Texture::sizeInMemory now accounts for MIP-map levels
Fix: Fonts and skies now adjust their brightness for the screen gamma level
Fix: Strange compilation bug was causing Sky to be black for some programs
resolveFilename
GLProgram_Demo to show how to use vertex programs in G3D
Support for GL_ARB_vertex_program
Modified ManualCameraController so that diagonal movement does not exceed maximum rate.
Added support for non-GL_FLOAT vertex arrays to RenderDevice
Added support for Wavefront OBJ files to IFSBuilder
Removed duplicate copies of SDL.dll from the source tree
Renamed G3D::CDTriangle to G3D::Triangle
Added several G3D::Triangle methods
Moved CollisionDetection::primaryAxis to Vector3::primaryAxis
Fix: Texture::sizeInMemory now returns correct results for RGB8 textures.
Changed texture constructors in ways that slightly break backwards compatibility
Deprecated several arguments to the texture constructors.
Changes in 5.00
Color3::operator*=(const Color3&)
Color3::operator*(const Color3&)
Eliminated duplicate GL headers [James O'Sullivan]
Linux Makefiles [James O'Sullivan, Jordan Parker]
RenderDevice::getProjectionMatrixParams
RenderDevice::debugDrawCylinder
Added an option to not copy input memory for BinaryInput
Added data/ifs/sphere.ifs
Added data/ifs/spikeball.ifs
Added a new (imperfect) demo/tool that converts 3DS and MD2 to IFS.
Added RenderDevice to the Font constructor
Removed RenderDevice from Font::drawString
Included glut32.lib, .dll, and .h (Version 3.7.6) in the distribution. The windows glut port is by Nate Robbins and is from http://www.xmission.com/~nate/glut.html. glut was originally written by Mark Kilgard.
Modified OpenGL headers to work cross platform, with the latest NVIDIA extensions
Changed library name from graphics3D.lib to G3D.lib, same for debug version.
Changed directory structure and added readme.html to explain the new setup.
Changed BinaryInput::readBytes to allow reading onto the stack
Added Vector4::isFinite
G3D::CDTriangle (for 35% faster collision detection)
CollisionDetection::closestPointToRectangle
CollisionDetection::movingSpherePassesThroughFixedBox
CollisionDetection::movingSpherePassesThroughFixedSphere
Changed CollisionDetection::movingXFixedTriangle arguments
CollisionDetection::collisionTimeForMovingSphereFixedSphere
Changed CollisionDetection::distanceToX methods to closestPointToX
Vector3::NAN3
Made Vector3::isUnit fuzzy
Made Vector3::isZero fuzzy
Fix: Texture(std::string, std::string) constructor now works for alpha-only textures.
FIX: Array now calls copy constructor when resizing
FIX: Triangle-sphere and rectangle-sphere collision detection returned an incorrect collision location; now fixed.
FIX: changed VectorX::isFinite to call isFinite (used to give bad result for NaNs)
FIX: Used the normalized edge to compute intersection in CollisionDetection::distanceToTrianglePerimeter
FIX: Changed the order of corners returned from Box::getFaceCorners so the face is ccw, facing out
FIX: ManualCameraController::lookAt now faces along the -z axis.
FIX: data/ifs/icosa.ifs model is now an icosahedron
Made Set::begin() and Set::end() const
Added ifdef _WIN32 all over for typedefing types from Windows to Linux and vice versa.
G3D::isNaN , G3D::isFinite
Added a single triangle triangle.ifs file
G3D::LineSegment
RenderDevice::debugDrawRay
CoordinateFrame::toObjectSpace(Ray&)
CoordinateFrame::toObjectSpace(Box&)
CoordinateFrame::toObjectSpace(Sphere&)
Changed CollisionDetection routines to return the surface normal of the surface at the collision location.
CollisionDetection::collisionTimeForMovingPointFixedCapsule
CollisionDetection::collisionTimeForMovingSphereFixedCapsule
G3D::Capsule class
Removed e-mail addresses from contributor list to protect them from spammers
Linux port [Hari Khalsa & Chris Kern]
Added serialize and deserialize methods, deserializing constructor to Vector2, Vector3, Vector4, Color3, Color4, Matrix3, CoordinateFrame, Box, Sphere, Plane, Ray, Line, Capsule, LineSegment
Moved parts of Plane.h into Plane.cpp
BinaryInput::readBool8 and BinaryOutput::writeBool8
G3D::System [based on Michael Herf, Rob Wyatt, and Benjamin Jurke's work]
Networking infrastructure: G3D::NetworkDevice , G3D::NetAddress , G3D::ReliableConduit , G3D::LightweightConduit , G3D::NetListener
G3D::Camera
Vector2::toString
G3D::createTempFile
G3D::fileLength
UserInput::setKeyMapping
UserInput::keyCodeToString, UserInput::stringToKeyCode
JPEG library uses createTempFile
JPEG library will allocate up to 6MB before resorting to temp files-- faster and more reliable
Moved SDL initialization to RenderDevice constructor from the init method so extension can be used earlier
Support for up to 8 texture units, no longer crashes on machines that have more than 4 units
Made Arrays allocate at least 32 bytes when resized to improve performance of small char stacks
Added UserInput key codes for mouse wheel buttons
UserInput::keyPressed, UserInput::pressedKeys()
UserInput::GKey
Renamed UserInput::poll() to UserInput::endEvents(), added UserInput::beginEvents()
Moved custom UserInput key codes into an enum so they are compile-time constants
Changed all <io.h> to <stdio.h> for cross-platform [Rob & Chris]
Moved LITTLE_ENDIAN and BIG_ENDIAN constants to an enum and renamed them to G3D_LITTLE_ENDIAN and G3D_BIG_ENDIAN for cross-platform [Rob & Chris]
Permanently fixed the precision of Real to be 32-bit float.
RenderDevice now loads the NVIDIA VAR fence extensions.
Renamed RenderDevice::begin to RenderDevice::beginPrimitive, same for end.
Redesigned the vertex array system; see VAR and VARArea.
Changed GLG3D demo to demonstrate the use of the new VAR and VARArea classes
CoordinateFrame(Vector3) constructor.
Improved the performance of zero-radius sphere [aka point] collision detection
Changes in 4.01
trimWhitespace()
Pointwise multiplication and division for Vector3
Array::sort now uses > operator by default; two alternative sort methods allow qsort style sorting
Texture::copyFromScreen
Texture::invertY
BinaryInput/BinaryOutput compression (via zlib)
Alpha-only G3D::Texture mode
G3D::Font and fonts in data/font
Array::fastRemove
TextInput [Morgan & Aaron]
Color4::CLEAR
Table [] operator now returns a non-const reference
RenderDevice::getFrameRate, RenderDevice::getTriangleRate, RenderDevice::getTriangleCount
ManualCameraController::setMoveRate, ManualCameraController::setTurnRate
SkyParameters default constructor
Vector2, Vector3, Vector4 isZero(), isUnit(), isFinite()
Vector4::length() , Vector4::squaredLength()
isValidPointer now returns false for 0xFEEEFEEE
RenderDevice checks for texture compression extensions
Restructured the directories for the CPP sources (only affects people who build G3D )
Included NVIDIA and SGI OpenGL headers in the distribution, changed install notes
Fixed a bug that previously prevented textures from being garbage collected
Fixed Line::distance returning values too small
Fixed Plane(normal, point) constructor to compute point from normalized direction [Kevin]
LED font by Matthew Welch daffy-duck@worldnet.att.net
VenusRising font by Ray Larabie drowsy@cheerful.com
VideoFreak font by Jakob Fischer pizzadude@pizzadude.dk
Changes in 4.00
Moved texture combine modes from Textures onto RenderDevice texture units
Documented RenderDevice::getHDC() (Windows only)
Renamed RenderDevice::swapBuffers() to RenderDevice::endFrame(), added corresponding RenderDevice::beginFrame()
Moved getNumJoySticks from RenderDevice to UserInput
Added TEX_ADD combine mode
Table::getKeys and Set::getMembers now have overloads that take an Array as input.
BinaryOutput::getCArray
RenderDevice::getObjectToWorldMatrix(), RenderDevice::getCameraToWorldMatrix()
RenderDevice::debugDrawAxes(), RenderDevice::debugDrawBox(), RenderDevice::debugDrawSphere()
Color3::Color3(const Vector3&) and Color4::Color4(const Vector4&)
Moved hashCode(const Vector3&) and hashCode(const Vector4&) to the global namespace [Kevin]
isValidPointer now returns false for 0xCCCCCCCC and 0xDEADBEEF
Fix: RenderDevice::setPolygonOffset now affects polygons rendered in line and point mode
Fix: Sun is now invisible after it goes below the horizon
Fix: BinaryInput now supports endian-ness correctly in memory read mode
Fix: Table.copyFrom and copy constructor now work
Changes in 3.02
Built libraries using "Multithreaded DLL" [Kevin & Darius]
Added depth, color, and stencil bit depth preferences to G3D::RenderDevice
G3D::Sky (plus sky directory in the data distribution)
Sky cube data [Jauhn Dabz, jauhn@yahoo.com , http://nullpoint.fragland.net ]
G3D::UserInput
G3D::ManualCameraController
G3D::SkyParameters
G3D::toSeconds , G3D::AMPM , G3D::GameTime , G3D::RealTime
G3D::RenderDevice::project
G3D::linearSpline
G3D::Color3::fromARGB and G3D::Color4::fromARGB
Added non-const G3D::Array::last() [Kevin]
Modified G3D::RenderDevice::configureDirectionalLight to operate in world space
Fix: Flipped the y-axis of G3D::RenderDevice::getDepthBufferValue so it matches the documentation.
Removed brief descriptions from documentation
Removed sqrt, sin, cos, etc. that conflict with standard library names
Removed TWO_PI constant
Removed G3D::Matrix3 virtual destructor
Removed G3D::Quat virtual destructor [Kevin]
Changes in 3.01
Changes in 3.00
G3D::NEWLINE
writeStringToFile
Fixed empty stringJoin bug
Fixed parseFilename with no path bug
Vector3::INF3, Vector3::ZERO3
G3D::PhysicsFrame (beta-- this interface is going to change in 4.00)
G3D::Vector4
G3D::Queue
Default constructor for G3D::CImage
G3D::isValidHeapPointer , G3D::isValidPointer
G3D::Ray
CImage copy constructor, CImage::load
Removed #pragma once for gcc compatibility
Renamed several hashcode methods to hashCode
Fixed fuzzy math to work with infinite numbers
Fixed Table::remove(), Set::remove() bug [Darius Jazayeri]
G3D::CoordinateFrame.toObjectSpace(Vector4), G3D::CoordinateFrame.toWorldSpace(Vector4)
Added the data directory
G3D::CollisionDetection
G3D::Sphere::culledBy()
Added the GLG3D library [Morgan McGuire & Seth Block]
Changed SDL_GL_Demo to use GLG3D, rotate triangle, and use color blending
Fixed debugPrintf to handle long strings on Win32
Wrapped the MMX headers with #ifdefs [Nate Miller]
Moved OpenGL code out of CoordinateFrame.h /cpp
Fixed BinaryInput readVector*, readColor* to read in correct order [Nate Miller]
BinaryInput::readVector4, BinaryInput::readColor4, BinaryOutput::writeVector4, BinaryOutput::writeColor4
IFS_Demo for loading IFS files, dealing with models in OpenGL [Nate Miller]
Changes in 2.00
Vector2 members renamed to x,y from s,t
Added SDL_GL_Demo and Win32_Demo
Removed Group
Changes in 1.10
CImage, color conversion routines [Morgan McGuire, John Chisholm, and Edward Resnick]
Array dereference for BinaryInput
BinaryInput from memory
BinaryOutput to memory
toUpper(std::string), toLower(std::string)
Group::clear()
inf, nan as global constants (double precision)
Can iterate over const Tables
Table::deleteValues()
Fixed an off-by-one bug in BinaryInput::readString()
beginsWith() and wordWrap() string utilities
prompt dialogs have fixed width font [Kurt Miller]
iMax() , iMin()
Array::sort()
stringCompare() , stringPtrCompare()
readFileAsString()
Fixed textPrompt() to wait for input
BinaryInput.getFilename(), BinaryOutput.getFilename()
ReferenceCount [Justin Miller]
endsWith()
stringSplit() , stringJoin()
Renamed format.* to stringutils.*
fileExists() , parseFilename() , createDirectory() , copyFile()
highestBit() [Jukka Liimatta]
flipRGBVertical()
Changed all header guards to use G3D_ prefix
ConvexPolyhedron
Virtual destructors on almost all objects.
RGBtoBGR()
Color4
Array::pop(bool shrinkArray=true)
Vector2::isFinite, Vector2::fuzzyEq, Vector::fuzzyNe
Changes in 1.09
G3D Innovation Engine documentation generated on Fri Nov 20 15:04:15 2009 using
1.5.9