The Nebula Device 3: Todo List

The Nebula Device 3

Todo List

Global Base::ShaderVariableInstanceBase::Apply ()
: hmm, the dynamic type switch is sort of lame...

Class Direct3D9::D3D9Shader
lost/reset device handling

Class Direct3D9::D3D9ShaderInstance
lost/reset device handling

Global InternalGraphics::InternalView::ResolveVisibleLights ()
: currently this methods needs to go over all visible graphics entities to find the lights...

Class InternalGraphics::VisibilityCell
: need to handle extra shadow bounding box

: statistics and profiling

: need to add visibility depending on LOD

: multithreaded visibility link update?

: add dirty handling to visibility links (e.g. don't need to update links between static lights and static objects)

Class IO::BinaryReader
convert endianess!

Class IO::BinaryWriter
convert endianess!

Global Lighting::SM30LightServer::ApplyModelEntityLights (const Ptr< InternalGraphics::InternalModelEntity > &modelEntity)
: set light properties only once per-frame and only set a bool array with active per-model-entity-lights here!

Class Math::bbox
: UNTESTED!

Global Math::line::intersect (const line &l, point &pa, point &pb) const
: Untested! Replace with simpler code.

Class OSX::OSXCriticalSection
: Add debugging asserts? If yes wrap with new __NEBULA3-define

Class OSX::OSXThreadLocalPtr< TYPE >
: Performance? Would it actually be better to allocate one pointer lookup-table and associate this with a single thread-local key as like on the Wii? At the moment every Ptr has its own key.

Class OSX::OSXThreadLocalPtr< TYPE >
: If this object will be used for anything else then singleton, it might make sense to change the interface to look like a normal C-pointer.

Class Resources::ResourceDictionary
: ResourceDictionary should be the base to switch to numerical resource id's later on. During asset export, an offline-dictionary is kept which associated actual filenames with numerical id's, and the asset export tools write those numerical ids in place where a string resource name would be used. For now it's just a lookup-table for the resource size, which is only really useful for console-platforms (since on those platforms the application has more control over the resource loading process as compared to PC-APIs).

Class Threading::Event
describe Event class

Class Threading::Thread
describe Thread class

Global Util::Array::Difference (const Array< TYPE > &rhs)
this method is broken, check test case to see why!

Global Util::FixedArray::BinarySearchIndex (const TYPE &val) const
hmm, this is copy-pasted from Array...

Class Win360::D3D9StreamMeshLoader
: document file formats

Class Win360::Win360Timer
solve multiprocessor issues of QueryPerformanceCounter() (different processors may return different PerformanceFrequency values, thus, threads should be prevented from switching between processors with thread affinities).