New in G3D 7.01 (Nov 25, 2008)
- 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::PosedModel::getBoxBounds on an array
- G3D::PosedModel::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::PosedModel::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::PosedModel::objectSpaceTangents
- 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::PosedModel::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