GSoC 2010 Ideas

Index of Content:

About GSoC.

Google Summer of Code (GSoC) is an annual program, held from May to August, in which Google awards stipends to students who successfully complete a requested free software / open-source coding project during the summer. The program is open to students aged 18 or over.

To apply for GSoC funding, one of the requisites is putting together and Ideas Page, where we explain a bit which projects could be useful for YafaRay. If you want to participate in GSoC either as a mentor or student, please use this forum thread to express your opinions and to talk about your areas of interest. You can also contact us in the chat room.

You can find more information about GSoC here.

How to reach us.

If you want to participate in GSoC 2010 either as a mentor or as a student developer, you can contact us in our always active IRC channel, or send an email to the Organisation Administrators:

Organigram.

Organisation Administrators
  • Alvaro Luna Bautista
  • Rodrigo Placencia Vazquez (backup)
Review and ranking of student applications
  • Bert Buchholz
Mentors
  • Rodrigo Placencia Vázquez (raytracing ideas)
  • Alejandro Conty Estévez (OSL)
  • Kim Skoglund (Blender 2.5 integration)
  • Gustavo Boiko (QT, raytracing ideas)
  • Michele Castigliego (backup)

GSOC 2010 Ideas.

The general aim for GSOC projects should be implementing modern rendering techniques & improving user experience. On our Ideas Page there is a balance between challenging ideas and practical feasible tasks. This ideas list is a starting point for student applications though; you can expand on a proposed idea or make your own blue-sky proposal not mentioned on this Ideas list at all. Our bugtraker could be a good source of inspiration.

Our Ideas for GSoC 2010 are:

SubSurface Scattering (SSS)

Description: The task consist in implementing a shader with a subsurface scattering component. This shader should work across all Yafaray lighting methods and set of features.

Goals: Improving users' results when rendering organic materials, fluids, plastics, etc.

Difficulty: Hard

Requisites: C++. Previous knowledge about 3D Computer Graphics and physically based rendering methods will help.

References:

Adaptive Sampling for Final Gather

Description: this technique consist in an approximate method for accelerated computation of the final gathering step in a global illumination algorithm. These approximation schemes rely mainly on the assumptions that radiance due to distant objects will exhibit low spatial and angular variation, and that the visibility between a surface and nearby surfaces can be reasonably predicted by simple location-and-orientation-based heuristics.

Goals: Accelerating computation of the YafaRay Final Gather pass.

Difficulty: Hard

Requisites: C++. Previous knowledge about 3D Computer Graphics and physically based rendering methods will help.

References:

Adaptive Caching and Neighbor Clamping

Description: Radiance and irradiance caching are efficient global illumination algorithms based on interpolating indirect illumination from a sparse set of cached values. In this paper an adaptive algorithm is proposed for guiding spatial density of the cached values in radiance and irradiance caching. The neighbor clamping heuristic is proposed as a robust means for detecting small sources of indirect illumination and for dealing with problems caused by ray leaking through small gaps between adjacent polygons.

Goals: Accelerating computation of the YafaRay global illumination algorithms.

Difficulty: Hard

Requisites: C++. Previous knowledge about 3D Computer Graphics and physically based rendering methods will help.

References:

Energy Redistribution Pathtracing

Description: Energy redistribution path tracing is a recent approach to performing global illumination that combines basic Monte Carlo path tracing with elements of Metropolis Light Transport in order to achieve the advantages of each.

Goals: Implementing a modern version of the path tracing algorithm, with the advantatges of MLT for indoor enviroments.

Difficulty: Hard

Requisites: C++. Previous knowledge about 3D Computer Graphics and physically based rendering methods will help.

References:

Progressive Photon Mapping

Description: Progressive photon mapping is a multi-pass algorithm where the first pass is ray tracing followed by any number of photon tracing passes. Each photon tracing pass results in an increasingly accurate global illumination solution that can be visualized in order to provide progressive feedback. Progressive photon mapping uses a new radiance estimate that converges to the correct radiance value as more photons are used. It is not necessary to store the full photon map, and unlike standard photon mapping it possible to compute a global illumination solution with any desired accuracy using a limited amount of memory.

Goals: Implementing a improved version of the Photon mapping technique, more progressive and efficient.

Difficulty: Hard

Requisites: C++. Previous knowledge about 3D Computer Graphics and physically based rendering methods will help.

References:

Fourier Space Sampling Techniques, by Frédo Durand

Description: This technique presents a theoretical framework for characterizing light transport in terms of frequency content.

Difficulty: Very hard

Requisites: C++. Previous knowledge about 3D Computer Graphics and physically based rendering methods will help.

References:

Micro-Rendering for Scalable, Parallel Final Gathering

Description: This technique allows for computing global illumination solutions at interactive rates. It is based on parallel final gathering, running entirely on the GPU.

Difficulty: Hard

Requisites: C++. Previous knowledge about 3D Computer Graphics and physically based rendering methods will help.

References:

Support for Open Shading Language (OSL)

Description: Open Shading Language (OSL) is a small but rich language for programmable shading in advanced renderers and other applications. OSL is similar to other shading languages; however, it is specifically designed for advanced rendering algorithms.

Goals: OSL would make YafaRay a more scalable engine; more suitable for complex jobs and production pipelines, and more interoperable with other CG applications that implement this language.

Mentor: Alejandro Conty Estévez, Sony Pictures Imageworks developer.

Difficulty: medium

Requisites: C++. Previous knowledge about 3D and Computer Graphics will help.

References:

Blender 2.5 Integration

Description: YafaRay needs to be integrated in the upcoming Blender 2.5 release, using all the new advantages Blender 2.5 has got for integrating external applications, such as a render API, access to the Blender UI, direct access to the Blender Composite nodes and a more efficient scene exporting. In this new integration we would like to address some usabitity issues of the current exporter UI.

Goals: High quality integration in the refactored Blender 2.5.

Mentor: Kim Skoglund, YafaRay Developer.

Difficulty: medium

Requisites: C++, C, Python. Previous knowledge about 3D and Computer Graphics will help.

References:

Nodes editor for materials and textures, using QT

Description: the current Blender integration does not provide an adequate interface to explore the true potential of the node-based system YafaRay uses for materials and textures. Future support for 'external' trees of nodes in Blender is very uncertain, even in the upcoming Blender 2.5 release. An independent QT UI can be implemented, which could be launched from YafaRay settings inteface in Blender, pretty much in the same way the independent Render Window is launched, or as an independent software.

Goals: A more intuitive interface to create more elaborated and complex YafaRay materials with a much better user experience.

Mentor: Gustavo Boiko, YafaRay Developer.

Difficulty: Entry level

Requisites: C++, Python. Previous knowledge about 3D and Computer Graphics will help.

References:

Raytraced Motion Blur

Description: Motion blur is the blurring or smearing along the direction of relative motion of any object moving with respect to the camera. This smearing may occur on an object that is moving or on a static background if the camera is moving. In a film or television image, this looks natural because the human eye behaves in much the same way. Motion blur adds realism not only to still renders, but to animations as well. There are several approaches to reproduce motion blur in raytracing.

Goals: Implement raytraced & geometry based motion blur and camera motion blur.

Difficulty: Hard

Requisites: C++. Previous knowledge about 3D Computer Graphics and physically based rendering methods will help.

References:

Exporter or plug-in for a 3D or CAD package

Description: Coding an exporter plug-in to access the full YafaRay set of features from a mainstream 3D package or CAD application, to offer a free open source alternative to users of proprietary modellers. This exporter code should be able to efficiently export complex 3D scenes (memory-wise), support animations and access YafaRay nodes system in a sensible way. A XML export option should be made available as well.

Goals: Coding an YafaRay exporter plug-in for a mainstream 3D or CAD package.

Difficulty: Medium

Requisites: C++. Previous knowledge about 3D Computer Graphics will help. Other languages.

Notes: Any student applying for this idea should have access to the propietary application he/she wants to export from. The YafaRay team will help to make a learning license available to the student, if needed. Works on a Sketchup exporter has been already started by a YafaRay user, so scratch that one out. You can scratch AutoCAD out as well, since there is no API to access AutoCAD solid entities. What kind of applications do we have in mind? Autodesk 3D Max, Autodesk Maya, Autodesk Softimage, Autodesk Revit, Autodesk Inventor, Rhinoceros, SolidsWorks, etc.

Student Application Template.

When applying for a Google Summer of Code grant to work with the YafaRay Project, your application must follow our application template (much of which we have borrowed from the Blender Foundation, with gratitude). Before applying, please check with our ideas list for our requirements for acceptance.

Personal Information

  • Name. Please provide your full name.
  • E-mail address / IRC / www. Where can we contact you? If you frequent our IRC channel (#yafaray on irc.freenode.net) please let us know what your nick is. If you have a web page you'd like us to know about, please include it.

Idea to implement.

  • Synopsis and Goals. Give us a short description of your project and describe how it will benefit YafaRay users.
  • Detailed description. How are you going to code it? How does it integrate in YafaRay, and how does it cooperate with the rest of YafaRay's features?
  • Workflow and Usabitily. Explain how do you expect users to use it.
  • Temptative schedule. How long will the project take? When can you begin work? Include an estimated timeline of the project with mini-milestones. Allocate time to learn about YafaRay codebase. Please also note any vacation time you expect to take during the project period. Note that end-user documentation should be one of the deliverables as well.

Bio.

Who are you, what are you studying and where, and what activities do you enjoy? What is your experience using YafaRay or other computer graphics programs? What 3D or raytracing code development projects you've realized? What makes you the best person to work on this project? If you have any history submitting bug fixes or patches to our tracker, please indicate what you have done.

Some tips for students.

  • Start interacting with us as soon as our project is accepted as mentoring org.
  • GSoC is very important for small & specialised projects like YafaRay; it is harder for us to be accepted as a mentoring org than for big generalist projects. We really need committed & proactive students and mentors to successfully complete the proposed tasks. A bad precedent would definitely harm our chances to get accepted as mentoring org in the future. Be honest and descriptive in your application. Apply only if you are able to work on your Summer of Code project full time for the summer.
  • We are an active community; our forum and IRC room have always developers and users interacting and providing feedback, particularly in the internet rush hours. We will expect a similar level of feedback and interaction from our GSoC students. You must be willing to submit regular progress reports and be available for IRC meetings. You must keep up with the task and communicate with your mentor. Failure to do so may lead to early dismissal from the program.
  • Shortlisted students will be interviewed on IRC. You might be asked to complete a task in order to judge your skills and motivation. Your application will be more succesful if you can demostrate previous experience on raytracing algorithms and/or 3D.
  • A project can be considered sucessfully finished when the goals set in the student's application are acomplished, documented and successfully tested.

YafaRay Project Application Template 2010.

  • Describe your organization.

    YafaRay (Yet Another Free Raytracer) is a free open-source raytracing engine. Raytracing is a rendering technique for generating realistic images by tracing the path of light through a 3D scene. A render engine consists of a "faceless" computer program that interacts with a host 3D application to provide raytracing capabilties on demand. The YafaRay project was started in 2001 by Alejandro Conty Estévez. By general request from the Blender Community, YafaRay was added as a Blender plugin in August 2004. The YafaRay engine was rewritten from scratch in 2006 by Mathias Wein to allow for new modern features.

    The YafaRay project has become through the years the first and most popular GPL raytracer and an important reference for the Blender Community, averaging 10.000 downloads and 40.000 unique visitors a month in 2009. YafaRay is hosted and maintained independently from the Blender Foundation. YafaRay is an associated project of the non-profit organisation Software in the Public Interest, Inc.

  • Why is your organization applying to participate in GSoC 2010? What do you hope to gain by participating?

    1. YafaRay was started by a CS student in 2001, and rewritten by another CS student in 2006. We are honouring our founders.
    2. We hope students and mentors involved really enjoy the experience, and it becames useful for them in the future.
    3. We hope some of the students involved eventually become habitual YafaRay developers.
    4. We want mentors with professional and academic backgrounds to help coding new features into YafaRay.
    5. We want raytracing students to learn about the advantages of working on existing raytracing projects.
  • Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.

    Not applicable.

  • If your organization has not previously participated in GSoC, have you applied in the past? If so, for what year(s)?

    Not applicable.

  • What license(s) does your project use?

    YafaRay is released under the LGPL 2.1 license.

  • What is the URL for your ideas page?

    http://www.yafaray.org/development/documentation/GSOCideas#ideas

  • What is the main development mailing list for your organization?

    We will use our message board to handle communications between GSoC participants. Link: http://www.yafaray.org/community/forum

  • What is the main IRC channel for your organization?

    irc://irc.freenode.net/#yafaray

  • Does your organization have an application template you would like to see students use? If so, please provide it now.

    Personal Information

    • Name. Please provide your full name.
    • E-mail address / IRC / www. Where can we contact you? If you frequent our IRC channel (#yafaray on irc.freenode.net) please let us know what your nick is. If you have a web page you'd like us to know about, please include it.

    Idea to implement.

    • Synopsis and Goals. Give us a short description of your project and describe how it will benefit YafaRay users.
    • Detailed description. How are you going to code it? How does it integrate in YafaRay, and how does it cooperate with the rest of YafaRay's features?
    • Workflow and Usabitily. Explain how do you expect users to use it.
    • Temptative schedule. How long will the project take? When can you begin work? Include an estimated timeline of the project with mini-milestones. Allocate time to learn about YafaRay codebase. Please also note any vacation time you expect to take during the project period. Note that end-user documentation should be one of the deliverables as well.

    Bio.

    Who are you, what are you studying and where, and what activities do you enjoy? What is your experience using YafaRay or other computer graphics programs? What 3D or raytracing code development projects you've realized? What makes you the best person to work on this project? If you have any history submitting bug fixes or patches to our tracker, please indicate what you have done.

  • Who will be your backup organization administrator?

    Rodrigo Placencia Vázquez

  • What criteria did you use to select mentors? Please be as specific as possible.

    Mentors will be mainly current YafaRay developers with a previous record of generous commitment to the project, and in general programmers with knowledge about raytracing and 3D graphics. We will request from applicant mentors that they have enough spare time during the GSoC program to succesfully guide their students.

  • What is your plan for dealing with disappearing students?

    A good selection process will ensure that the students selected have skills, time and motivation to acomplish the projects proposed. During the program we will request from participating students to submit regular progress reports and be available for a IRC meeting every week. The Project Administrator will check that students keep up with the tasks and communicate with their mentors.

    If a student starts dissapearing, the Project Administrator will contact the people involved, assess the situation and elaborate a 'recovery' plan that describes the problems the project is facing and the best available solution to them.

  • What is your plan for dealing with disappearing mentors?

    First of all we will ensure that selected mentors do have enough spare time during the GSoC program to succesfully guide their students. During the program we will request from participating mentors to submit regular progress reports and be available for a IRC meeting every week. The Project Administrator will check that mentors are available for feedback and communicate with their students.

    If a mentor starts dissapearing, the Project Administrator will contact the people involved, assess the situation and elaborate a 'recovery' plan that describes the problems the project is facing and the best available solution to them.

  • What steps will you take to encourage students to interact with your project's community before, during and after the program?

    First of all we will request from applicants that include a time to learn about the YafaRay project (codebase and community) in their project schedule. Secondly, mentors and students will use the existing community forums & IRC room, so their communications will be trasparent to everyone and our community can participate in a constructive manner and provide test scenes and betatesting.

  • What will you do to ensure that your accepted students stick with the project after GSoC concludes?

    At the end of the program we hope that students realise about the advantages of collaborating with a established raytracing project. Besides, we hope that students enjoy collaborating with the YafaRay team, and learn about caring for a FOSS project and building a FOSS brand and a community of users.

Students Proposals for GSoC 2010 (archive).

Once the application period finished, these were the students proposals made by students to the YafaRay organisation, using the template provided: