|
Index of Content: |
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.
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:
| Organisation Administrators |
|
| Review and ranking of student applications |
|
| Mentors |
|
The general aim for GSOC projects should be implementing modern rendering techniques & improving user experience. 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 MTL 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 and camera motion blur to add realism.
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.
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
Idea to implement.
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. |
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.
Not applicable.
Not applicable.
YafaRay is released under the LGPL 2.1 license.
http://www.yafaray.org/development/documentation/GSOCideas#ideas
We will use our message board to handle communications between GSoC participants. Link: http://www.yafaray.org/community/forum
Personal Information
Idea to implement.
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. |
Rodrigo Placencia Vázquez
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.
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.
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.
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.
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.