FUTURE
|
Outline of ideas for the future:
- Open Source Software Philosophy
- Don't re-invent the wheel -- reuse any applicable pieces from other Open Source Software projects
- Allow other OSS projects to reuse SuperConductor code
- Give SuperConductor a 'life of its own' so that it may perpetuate if original authors no longer participate
- Leverage development -- if other users and developers stop inventing new Render Controllers and just use and improve SuperConductor, more development is focussed on shared code, and more users will benefit.
- Utilize SourceForge for hosting of project development
- Basic Design Concepts
- Portable, lightweight, responsive, non-modal UI.
- Program should be designed around abstract conceptual behaviours (find nodes, select job, start/stop job)
- All implementation details of each behaviour should be hidden behind API of runtime-loaded plug-ins
- Plug-ins will allow for modular customization, upgrading and enhancement of capabilities
- Plug-ins should enforce object-oriented design and access control barriers
- Qt 3 provides support classes for discovering, acquiring and utilizing plug-ins at runtime
- All specific support for a given 3D rendering application should be defined within plug-ins
- Useful Behaviours and features (study other projects to determine more) Not all are critical.
- Detect candidate computation nodes automatically
- Different OSes and network types may offer different ways to do this
- Nodes that can not be automatically detected should be manually add-able
- Detect info about candidate node automatically
- Different OSes and network types may offer different ways to do this
- CPU speed and quantity, RAM, available storage, mapped drives, network speed, net lag
- Enter critical info manually if unavailable
- Deploy/Install client-side software automatically if necessary and possible
- Check version of client renderer software
- Some computation applications may have minimal client
- Some computation applications may have heavier client but can use smaller remote-launcher
- Run client from Common network share
- Use admin shares and SMB under NT to deploy software
- Dispatch multiple jobs to different client renderers on client machines based on criteria (speed, memory, etc)
- Display abstract of job info
- Customize basic per-project settings (Start/End frame, etc) before dispatching job
- Verify scene dependencies (available paths, necessary external files, etc)
- Up-to-date node status during rendering
- Preview image in progress or last image if possible
- Verify integrity of output frames allegedly written (detect corrupt or empty images)
- Deactivate render nodes that crash or produce corrupt images. Reschedule task(s) to others.
- E-mail reports regularly or when certain events occur (job complete, machine die, etc).
- Group sets of nodes for common administration
- Custom batch plug-in set for easy basic extension to new software without new plug-ins
- Request screen grab from client as JPG to monitor status without remote-access
- Local client monitoring/control app -- show's current utilization of machine, inform Controller of (un)availability of client machine.
- Extensive logging of all actions for remote monitoring and post-mortem debugging.
- E-Mail logs
- Jobs can be set to deferred status to launch when criteria are met (time, CPU or network utilization, number of available machines)
- Launch-able by command-line from script?
- Gather usage statistics for all machines/jobs.
- Job priority, submitted user info
- Frame Slicing?
- Statistic Graphs for all participating machines: CPU, RAM, Swap, Net?
- Inter-job dependencies Job B waits for Job A to be complete before starting. Job C can run while Job A or B is running. (See item Q)
- Dispatch multiple frames at once to a node to decrease data load times.
- Specify number of CPUs to use for multithread-capable client renderers on multi-CPU machines
- Proposed target render client applications
- World Construction Set / Visual Nature Studio
- WCS6 now has network render control APIs
- VNS1 does not.
- Lightwave 7.x ScreamerNet Mode 2 or 3.
- APIs publicly available now. APIs are proven and tested.
- Max 4.x
- Status unknown.
- Max already has a Queue Manager.
- Some WCS users have evidenced a willingness to try to implement Maya support.
- Maya
- Status unknown
- Some WCS users have evidenced a willingness to try to implement Maya support.
- 'Custom' script-based client
- Not specific to any rendering software
- Allows advanced users to specify scripts that SuperConductor should run to implement each behavior, allowing it to be customized to unforeseen apps. Also serves as a basic reference for building new plug-in implementations for future target render client apps.
- Should allow for inserting numerous 'escape' codes into command strings to pass useful info (frame numbers, etc) from SuperConductor to user's scripts.
- POV-Ray
- Unsure of availability or appropriateness of any existing APIs, but application is all command-line driven.
- Use SSH to invoke on remote machines.
- Popular free raytracer, very slow, could greatly benefit from distributed controller.
- Possible to support single-image slicing as raytracers are point-sampled with no inter-pixel dependencies.
|