## Please edit system and help pages ONLY in the moinmaster wiki! For more ## information, please see MoinMaster:MoinPagesEditorGroup. ##master-page:FrontPage #format wiki #language en #pragma section-numbers off = CS348b Wiki = This is the course wiki for cs348b - Image Synthesis Some results from last year's [http://www-graphics.stanford.edu/courses/cs348b-competition/cs348b-05/ Rendering Competition]: http://www.graphics.stanford.edu/courses/cs348b-06/images/hawk.jpg http://www.graphics.stanford.edu/courses/cs348b-06/images/peacock.jpg http://www.graphics.stanford.edu/courses/cs348b-06/images/donuts.jpg == Announcements == * If you are taking the course for credit, pick a wikiname (my wikiname is PatHanrahan) and create a login account. Then familiarize yourself with how to use this wiki. Finally, add yourself to the ["Participants"] by editing that page (you can only edit pages when logged in). * Kayvon will be holding an "informal" PBRT discussion section on Friday April 7th from 2:30PM to 3:30PM in Gates 104. This dicussion will involve an overview of the PBRT system: the structure of the code base, getting up and running, working with EXR (high-dynamic range) image files, and working with scene files, etc. Please come with any questions. * A course mailing list has been created: If you have any questions, please email cs348b-spr0506-staff@lists.stanford.edu to reach Prof Hanrahan and the course TAs. * Instructions for building PBRT on Linux (the 'myth' machines in Sweet) and on Windows using Visual Studio 2003 are available on the ["PBRTInfo"] page. * The slides for each lecture are in the wiki. There is a running assignment to comment on the lectures. You are required to enter 1 extended comment per lecture within 1 week of the lecture. See ["Guidelines"] for what we are looking for in the comments. == Description == This course provides a broad overview of the theory and practice of rendering. Classic rendering algorithms will be covered, however, most of the course will cover current results in physically-based rendering algorithms. == Prerequisites == Attendees should have a working knowledge of computer graphics (at the level of CS248 and CS348A). In particular, you should fully understand the basic 3D display pipeline, viewing and modeling transformations, simple geometric modeling using polygons and quadrics, and hidden surface algorithms like the z-buffer algorithm. Solid knowledge of integral calculus and basic geometric algorithms is an absolute must. Some exposure to signal processing and probability is also assumed. Proficiency is C++ programming. == Syllabus == || Week || Dates || Tue || Thu || || 1 || Apr 4, 6 || [wiki:Self:Lectures#Goals The Goals of Rendering] || [wiki:Self:Lectures#Basic Ray Tracing I: Basic Algorithms] || || 2 || Apr 11, 13 || [wiki:Self:Lectures#Acceleration Ray Tracing II: Acceleration Techniques] || Radiometry || || 3 || Apr 18, 20 || The Light Field || Monte Carlo Integration I || || 4 || Apr 25, 27 || Camera Simulation || Sampling and Reconstruction || || 5 || May 2, 4 || Monte Carlo Integration II || Reflection Models I: BRDFs and Diffuse || || 6 || May 9, 11 || Reflection Models II: Glossy || Texture || || 7 || May 16, 18 || Light Transport and the Rendering Equation || Monte Carlo Path Tracing || || 8 || May 23, 25 || Irradiance Caching and Photon Mapping || Participating Media and Volume Rendering || || 9 || May 30, Jun 1 || Reflection Models III: Anisotropic Reflection || Current Topics in Rendering || == Information == * Time: 9:30-10:45am, Tu/Th, Spring 2006 * Room: [http://www.stanford.edu/dept/registrar/tcseq/102.html Hewlett 102] * ["Instructors"] * ["Participants"] * ["Bibliography"] == Text and readings == There is one required text for the course. Matt Pharr and Greg Humphreys[[BR]] ''Physically Based Rendering: From Theory to Implementation''[[BR]] Morgan-Kauffmann, 2004. Additional readings will be assigned from research monographs, papers from journals and conference proceedings, and excerpts from conference tutorials. Only papers NOT available online will be handed out in class. Readings for each lecture are available from the ["Lectures"] page. == Assignments and grading == The projects for this quarter involve enhancing a working ray tracer. We will use a a ray tracing system called [http://www.pbrt.org pbrt]. This system is a combined C++ codebase and textbook written in a literate programming language. The first part of the course involves four assignments: Assignment 1: Lighting design Assignment 2: Speedup ray tracing Assignment 3: Simulate a 35mm SLR camera Assignment 4: Environment map illumination In the last part of the course you will enhance your system so that it is capable of reproducing an image of a real object, for example, a gemstone, a puff of smoke, a candle flame, etc. Check out the [http://www.graphics.stanford.edu/courses/cs348b-competition results] produced by previous students. Evaluation criteria: The first four structured programming assignments will each count as 10% of your grade, and the final programming project will count as 40%. The remaining 20% of your grade will be based on your comments on the lectures. There will be no exams. Collaboration: For the first four programming projects, you may discuss the assignment with friends, but you are expected to implement your own solutions. On the last programming project, you are permitted (and encouraged) to form teams of two people and partition your planned extensions among the team members. Teams may discuss their project with other teams, but may not share code. Late assignments: Since each assignment builds on the previous one, it is important that assignments be completed on time. To allow for unforeseeable circumstances, you will be allowed three weekdays of grace during the quarter. Beyond this, late assignments will be penalized by 10% per weekday that they are late. On the last programming project, neither the demo nor the writeup may be late. Incompletes in this course are given only in exceptional circumstances. == Hardware and software == You are welcome and encouraged to do class assignments on your own machines. Although PBRT builds successfully on most systems, the TAs will be able to provide support for compiling PBRT on Linux (on the public Stanford 'myth' machines, see below) and on Windows (via Visual Studio.net 2003). Check out the ["PBRTInfo"] page for information about working with the PBRT software. If you do not wish to develop on a personal machine, you will have access to the 'myth' machines located on the second floor of [http://www.stanford.edu/services/cluster/ Sweet Hall]. These 3.2 Ghz DELL Dual-Xeon Linux boxes, named myth1 - myth29 are available for remote access. CS348b students are given non-exclusive priority access to these machines. All students with leland accounts automatically have accounts on these machines. Home directories on these machines are shared with other Stanford Computing Clusters using AFS. If you do not have a leland account, consult this [http://www.stanford.edu/home/computing/ids_and_accounts.shtml ITSS web page]. Registered students will get an extra 200MB of disk quota for the quarter. == Rendering competition == In case the delight of learning does not sufficiently motivate you to exert yourselves heroically on the programming assignments, there will also be a rendering competition. During finals week, a judging will be held to select the best rendering made using the ray tracer you have written in the course. While grades for the projects are based solely on "technical merit", the competition will be judged on both "technical merit" and "artistic impression". The jury, to be named later, will consist of computer graphics experts from both industry and academia. There will be several awards and one grand prize - an all-expenses-paid trip to [http://www.siggraph.org/s2006 SIGGRAPH 2006] in Boston. Total value: about $1,000. == How to use this site == Interesting starting points: * RecentChanges: see where people are currently working * WikiSandBox: feel free to change this page and experiment with editing * FindPage: search or browse the database in various ways * SyntaxReference: quick access to wiki syntax * SiteNavigation: get an overview over this site and what it contains A Wiki is a collaborative site, anyone can contribute and share: * Edit any page by pressing '''[[GetText(Edit)]]''' at the top or the bottom of the page * Create a link to another page with joined capitalized words (like WikiSandBox) or with {{{["quoted words in brackets"]}}} * Search for page titles or text within pages using the search box at the top of any page * See HelpForBeginners to get you going, HelpContents for all help pages. To learn more about what a WikiWikiWeb is, read about MoinMoin:WhyWikiWorks and the MoinMoin:WikiNature. Also, consult the MoinMoin:WikiWikiWebFaq. This wiki is powered by MoinMoin.