G3D 8.00 Beta 2 Change Log

8 views
Skip to first unread message

Morgan McGuire

unread,
Nov 20, 2009, 3:19:19 PM11/20/09
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

zybx

unread,
Dec 3, 2009, 6:18:14 PM12/3/09
to G3D Users
I have several suggestions:

1. 1D textures/NPOT 3D textures/Texture Array should be supported.

2. Provide a way to save float-point textures/images to files such as
dds.

3. G3D programs often crashes in release mode (8.00b1, WinXP, VC9). I
think it is a memory bug because if I insert or remove some trival
code, it can run without crash. Sometimes the linking process stuck at
'embeding manifest...'. Debug mode has no such problem.

Loki

unread,
Dec 3, 2009, 6:35:18 PM12/3/09
to G3D Users
About third item. I often have the same trouble. This is accompanied
by growning temporary file until it takes all free space.
> ...
>
> read more »

zybx

unread,
Dec 3, 2009, 6:44:13 PM12/3/09
to G3D Users
Exactly, I forgot to mention that. A temporary file keeps growing if
you don't cancel the building.
> ...
>
> 阅读更多 »- 隐藏被引用文字 -
>
> - 显示引用的文字 -

Morgan McGuire

unread,
Dec 3, 2009, 10:19:22 PM12/3/09
to g3d-...@googlegroups.com
About third item. I often have the same trouble. This is accompanied
by growning temporary file until it takes all free space.

We didn't know about this bug.  Can you send us a reproducible test case?

-m

Morgan McGuire

unread,
Dec 3, 2009, 10:24:00 PM12/3/09
to g3d-...@googlegroups.com
1. 1D textures/NPOT 3D textures/Texture Array should be supported.
 

3D textures are poorly supported by across vendors and are not supported by the Win32 GLU; that held up their application last time.  If it is just a matter of adding the NPOT_3D enum we can certainly do that.  I never use 3D textures, so I need guidance and a commitment to test from someone who does.

1D and arrays will probably come in with the 9.00 shader re-write, which moves us to GL 3.2 where they are better specified.
 
 
2. Provide a way to save float-point textures/images to files such as
dds.

For now, you can get the data back as an Image3 and dump it to a raw file or your own favorite format with fwrite or BinaryOutput. 

For 9.00 I hope to add 16 and 32-bit PNG support, TIFF support, and potentially OpenEXR or HDR.  We have very few active developers right now (primarily me and Corey), so low-priority features aren't getting added very quickly, unfortunately.

-m
 

Loki

unread,
Dec 3, 2009, 10:34:43 PM12/3/09
to G3D Users
I didn't report about it 'cause I thought it is because of settings VS
(compiler, IDE, optimizations, etc...). I incorrect expressed my
mind :) I NOT often get this problem but sometimes it happens.In "G3D
8 Beta 2 Suggestions" thread I mentioned such case (second post)

_____________
Thanks

Morgan McGuire

unread,
Dec 3, 2009, 11:37:50 PM12/3/09
to g3d-...@googlegroups.com
Does this only happen with your own programs, or can you reproduce it linking the G3D demos?  Are you using the latest service-packed VC 2008?  I recall seeing things like this a long time ago (and suspecting the incremental linker), but I haven't observed it in at least a year.

-m

Prof. Morgan McGuire
Computer Science Department
Williams College
http://cs.williams.edu/~morgan



--

You received this message because you are subscribed to the Google Groups "G3D Users" group.
To post to this group, send email to g3d-...@googlegroups.com.
To unsubscribe from this group, send email to g3d-users+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/g3d-users?hl=en.



zybx

unread,
Dec 4, 2009, 2:30:36 AM12/4/09
to G3D Users
On 12月3日, 下午7时24分, Morgan McGuire <morga...@gmail.com> wrote:
> > 1. 1D textures/NPOT 3D textures/Texture Array should be supported.
>
> 3D textures are poorly supported by across vendors and are not supported by
> the Win32 GLU; that held up their application last time. If it is just a
> matter of adding the NPOT_3D enum we can certainly do that. I never use 3D
> textures, so I need guidance and a commitment to test from someone who does.

There is DIM_3D_NPOT enum in G3D but we cannot create a 3D texture
unless the size is power of 2.
The problem is that the assert commands in Texture.cpp are too
restrict.
I just modified the related assert commands in the source so that I
can create DIM_3D_NPOT texture now.

zybx

unread,
Dec 4, 2009, 2:56:42 AM12/4/09
to G3D Users
By the way, the NPOT 3D texture is widely used in volume rendering.
I hope I can do some contributions to G3D after I passed the PhD
qualification.
I like this engine and use it a lot in many projects including
scientific computing
and visualization.

On 12月3日, 下午7时24分, Morgan McGuire <morga...@gmail.com> wrote:
Yubo Zhang
Department of Computer Science
UC Davis

Loki

unread,
Dec 4, 2009, 7:18:18 AM12/4/09
to G3D Users
As said zybx, I also start new project with demos/starter. Thanx for
patch suggestion, I've never heard about it. I'll try it

On 4 дек, 09:37, Morgan McGuire <morga...@gmail.com> wrote:
> Does this only happen with your own programs, or can you reproduce it
> linking the G3D demos?  Are you using the latest service-packed VC 2008?  I
> recall seeing things like this a long time ago (and suspecting the
> incremental linker), but I haven't observed it in at least a year.
>
> -m
>
> Prof. Morgan McGuire
> Computer Science Department
> Williams Collegehttp://cs.williams.edu/~morgan
>
> On Thu, Dec 3, 2009 at 10:34 PM, Loki <loki...@gmail.com> wrote:
> > I didn't report about it 'cause I thought it is because of settings VS
> > (compiler, IDE, optimizations, etc...). I incorrect expressed my
> > mind :) I NOT often get this problem but sometimes it happens.In  "G3D
> > 8 Beta 2 Suggestions" thread I mentioned such case (second post)
>
> > _____________
> > Thanks
>
> > --
>
> > You received this message because you are subscribed to the Google Groups
> > "G3D Users" group.
> > To post to this group, send email to g3d-...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > g3d-users+...@googlegroups.com<g3d-users%2Bunsu...@googlegroups.com>
> > .
Reply all
Reply to author
Forward
0 new messages