Morgan McGuire
unread,Nov 20, 2009, 3:19:19 PM11/20/09Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to g3d-...@googlegroups.com
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