Skip to content

Starter project and GSoC ideas page

Larry Gritz edited this page Jan 15, 2022 · 1 revision

On this wiki page we can collect ideas for starter/on-ramping projects suitable as tasks for new participants in OSL and potential Google Summer of Code projects.


Improved oslc error reporting

One component of osl is "oslc", which is a relatively straightforward compiler from osl source code to an intermediate code. There are two ways that we could improve the user experience with oslc where error reporting is concerned, and both only require diving into the basic parsing (not the IR code generation or anything farther downstream): (1) Instrument oslc’s parser fully with the code to record column positions (in addition to the lines it currently records) of each syntactic structure, and rig error messages to give those nice modern outputs where it quotes the lines and underscores the particular words or sections containing the error. (2) Make errors involving unknown identifiers print likely suggestions (based on Levenshtein Distance), so instead of errors like "unknown function 'foo'", it might also print a specific suggestion for what they probably wanted but had misspelled.

Prerequisites: fluent in C++, familiarity with how compilers and parsers work (for example, having taken an undergraduate course in compilers, or equivalent tinkering experience), some familiarity with lex/flex and yacc/bison (but doesn't need to be a super expert).

Difficulty: full summer project.

Mentor candidates: Larry Gritz, maybe others?

Overhaul/enhancement of osltoy

"osltoy" is a sample application that ships with OSL, a Qt-based GUI app that runs shaders, lets you edit the code or fiddle with the parameters, and see the results interactively an a displayed and continually updated "image." It's a bit like https://www.shadertoy.com/ but for OSL, and it's a local app rather than a web service. It's a fun way to tinker with shaders, and some studios have used it as the basis for teaching introductory OSL classes. This summer task would be to turn osltoy into a more full-featured, slicker tool that can let people do more of the things that people do with shadertoy -- including provisions for saving results from one frame that can be available to the next frame, making keyboard/mouse input available to the shader to respond to, etc.

Prerequisites: fluent in C++, familiarity with Qt GUI programming, familiarity and appreciation for https://www.shadertoy.com/, some experience writing shaders (in any language).

Difficulty: full summer project

Mentor candidates: TBD, but probably could be any of several people