[Bf-committers] GSoC - GLSL Shader Editing and Preview System for Blender

Miguel Torres Lima torreslima at gmail.com
Mon Mar 26 17:12:28 CEST 2007


Hello,

I posted some weeks ago an idea for a GSoC project proposal.
I leave you now a "final" proposal as follows:




Google Summer of Code Proposal
 ------------------------------


 Author Name:
 ------------

  Miguel Torres Lima


 Email:
 ------

  torreslima at gmail.com


 Project Title:
 --------------

  A GLSL Shader Editing and Preview System for Blender


 Abstract
 ---------

 This document outlines a proposal to implement GLSL based realtime material
preview and editing in Blender, an open source application for 3D modelling,
animation, rendering, post-production, interacive creation and playback.

 The main motivation behind this proposal is presented as well as a detailed
schedule for it's implementation.


 Motivation:
 -----------

 Blender is a powerful Free Software application for 3D modelling,
animation, rendering, post-production, interactive creation and playback.

 The aplication features many unique and expressive tools for 3D artists
like the node-based material editor and compositor, integrated
multi-resolution sculpting tools, multi-layer UV mapping and render baking
and integrated video sequencing.

 In my current work for the final year internship course at my University,
I'm working towards implementing support for improving Blender's current
material display in the 3D View window, which is limited to the simple
lambert lighting model permitted by the OpenGL fixed function pipeline, via
the use of GLSL programmable hardware shaders.

 During Google's Summer of Code I'd like to extend this preview capability
to make Blender a viable platform for GLSL shader creation.

 In order to do so, I'm planning to leverage the power of Blender's internal
node-based material editor. The node based material system allows artists to
mix and match material properties and object parameters in a graph to create
very expressive materials.

 Tools like Lumonix's ShaderFX[1] and ShaderWorks' XT[2] already demonstrate
that the node based creation paradigm can work very well for the creation of
real-time shaders.

The use of GL Shading Language will provide "(...) more freedom, more
programability, more performance." - Eskil Steenberg at Blender Conference
2006[7]


 Project Details:
 ----------------

 This project stems from my current work developing real-time GLSL shader
based 3D previews for Blenders native materials. As such, the proposed
implementation roadmap is as follows:

  1. Extend Blender's 3D View real-time material preview to support
node-based materials.

  This will require implementing a system to combine shader fragments
representing the nodes of the graph at realtime and to generate GLSL shaders
from these fragments, generating the uniform and attribute variables needed
for shader parameter tweaking without recompilation.

  2. Create a GLSL shader representation for Blender's current material
nodes. Since some of the current nodes might not be representable in GLSL,
this stage might require the implementation of GLSL specific nodes.

  3. If time allows, there's some extra features that might make this system
even more powerful:

   - Create a generic GLSL shader node, that would provide users with
template GLSL shader code in Blender's Text Editor window, to allow easy
shader prototyping and simpler integration of shader within the current
framework.

   - Import/Export GLSL code for a material node network, thus making
Blender truly a platform for shader editing. Unlike Direct3D's HLSL[3][4],
GLSL doesn't have an interchange format for complex real-time multipass
effects, so I propose to use COLLADA FX[5][6] as an import/export format,
extending Blender's current support for COLLADA[5][6] import/export.

   - Integration with Blender's scripting system and the forthcoming PyNodes
API.


 Project Schedule:
 -----------------

  The allotted time for this project is thirten weeks, starting on May 28,
2007.

  week 1-3: Complete current work of integrating GLSL material previews into
the 3D View.

  week 4-10: Complete stage 1.

  week 10-13: Complete stage 2.


 About the Author:
 -----------------

  Miguel Torres Lima is a Computer Science student living in Oporto,
Portugal. Currently he is finishing his Degree in Computer Science at the
University of Porto by interning at doubleMV I&D, a startup company that
focuses on videogame technology and its applications that uses Blender in
its production pipeline.



 References:
 -----------

  [1] - http://www.lumonix.net/shaderfx.html
  [2] - http://www.shaderworks.com/shaderworks/shaderworks-main.html
  [3] - http://en.wikipedia.org/wiki/HLSL
  [4] - http://msdn2.microsoft.com/en-us/library/bb173493.aspx
  [5] - http://www.khronos.org/collada/
  [6] - http://www.khronos.org/files/collada_spec_1_4.pdf
  [7] - http://video.google.com/videoplay?docid=847205086747563852



Thanks,
Miguel Torres Lima
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.blender.org/pipermail/bf-committers/attachments/20070326/f22c263d/attachment.html


More information about the Bf-committers mailing list