Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

CHANGES, Docs, version bump, and other miscellany for branching RB-1.2.

  • Loading branch information...
commit b0673b832da91321608e0108bdeca86ec364f8ba 1 parent 602a40d
@lgritz lgritz authored
View
80 CHANGES
@@ -1,4 +1,82 @@
-Release 1.1.0 - Mar 14, 2011 (compared to 1.0.0)
+Release 1.2.0 - Aug 30, 2012 (compared to 1.1)
+----------------------------------------------
+Note: this is more or less the production-hardened version of OSL that
+was used to complete Men in Black 3, The Amazing Spider-Man, and Hotel
+Transylvania.
+
+New tools/utilities:
+* New program "testrender" is a tiny ray-tracing renderer that uses OSL
+ for shading. Features are very minimal (only spheres are permitted at
+ this time) and there has been no attention to performance, but it
+ demonstrates how the OSL libraries may be integrated into a working
+ renderer, what interfaces the renderer needs to supply, and how the
+ BSDFs/radiance closures should be evaluated and integrated (including
+ with multiple importance sampling).
+* shaders/ubersurface.osl is an example of a general purpose surface
+ shader.
+
+Language, standard libary, and compiler changes:
+* texture()/texture3d() support for subimage/face selection by name as
+ well as by numeric index.
+* getattribute() performs automatic type conversions that mostly
+ correspond to the kind of automatic type casting you would get from
+ ordinary assignments in OSL. For example, getattribute("attrib",mycolor)
+ used to fail if "attrib" turned out to be a float rather than a color;
+ but now it succeeds and copies the float value to all three channels
+ of mycolor.
+
+ShadingSystem API changes and new options:
+* Remove unused 'size' parameter from the register_closure API.
+
+Optimization improvements:
+* Constant-fold pointcloud_search calls when the position is a constant if
+ the search returns few enough results, by doing the query at optimization
+ time and putting the results into new constant arrays.
+* Matrix parameters initialized by m=matrix(constA,constB,...) now
+ statically initialize, and no longer need to run initialization code
+ each time the shader executes.
+
+Bug fixes and minor improvements:
+* Fix pointcloud_search to optionally take a 'sort' parameter, as
+ originally documented.
+* Unit tests weren't properly run as part of the testsuite.
+* Track local+temp memory usage of optimized shaders and consider it an
+ error if a shader needs more than a maximum amount at runtime, set with
+ the "max_local_mem_KB" attribute.
+* Add pointcloud statistics.
+* Fix derivative error for sincos() when the inputs have no derivatives but
+ the outputs do.
+* Bug fix to vector-returning Gabor noise (it could previously generate
+ different values for different platforms).
+* printf() of closures built from other closures allows for proper
+ recursive printing of the closure tree.
+
+Build & test system improvements and developer goodies:
+* Simplify the namespace scheme.
+* Remove support for certain old dependencies: OIIO versions < 0.10,
+ LLVM < 3.0, and Boost < 1.40.
+* Lots of little fixes to solve compiler warnings on various compilers.
+* Support for newer OSX releases, particularly if /usr/bin/cpp-4.2 is not
+ found.
+* Better support for Boost::wave (portable C preprocessor replacement).
+ Build with 'make USE_BOOST_WAVE=1' to force Wave use instead of system
+ cpp.
+* You can select a custom LLVM namespace with 'make LLVM_NAMESPACE=...'.
+* Symbols that are not part of the OSL public APIs are now hidden from the
+ linker in Linux/OSX if the CMake variable HIDE_SYMBOLS is on.
+* New Makefile/CMake option LLVM_STATIC can be used to use static LLVM
+ libraries rather than the default dynamic libraries.
+* Support for LLVM 3.1.
+* Support for building with Clang 3.1 (lots of warning fixes).
+* Makefile/CMake variable EXTRA_CPP_DEFINITIONS allows you to inject
+ additional compiler flags that you may need to customize the build for
+ your site or a choice of unusual compiler.
+* Add support for 'PROFILE=1' builds that are appropriate for use with
+ a profile.
+
+
+
+Release 1.1.0 - Mar 14, 2012 (compared to 1.0.0)
------------------------------------------------
Language, standard libary, and compiler changes:
* Allow closures as parameters to closures.
View
2  LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2009-2010 Sony Pictures Imageworks Inc., et al.
+Copyright (c) 2009-2012 Sony Pictures Imageworks Inc., et al.
All Rights Reserved.
Redistribution and use in source and binary forms, with or without
View
67 README
@@ -23,6 +23,11 @@ renderer used for feature film animation and visual effects. The
language specification was developed with input by other visual effects
and animation studios who also wish to use it.
+OSL is robust and production-proven, and was the exclusive shading
+system for big VFX films such as "Men in Black 3: and "The Amazing
+Spider-Man," animated features such as "Hotel Transylvania", and several
+other films currently in production.
+
OSL is distributed under the "New BSD" license (see the "LICENSE" file
that comes with the distribution). In short, you are free to use it in
your own applications, whether they are free or commercial, open or
@@ -93,7 +98,7 @@ find are different in OSL compared to other languages:
surface, and is included in the main radiance closure computed by a
surface shader.
-* Renderer outputs (AOV's) are specified using "light path expressions."
+* Renderer outputs (AOV's) may be specified using "light path expressions."
Sometimes it is desirable to output images containing individual
lighting components such as specular, diffuse, reflection, individual
@@ -178,8 +183,16 @@ The OSL open source distribution consists of the following components:
outputs as images. This allows for verification of shaders (and the
shading system) without needing to be integrated into a fully
functional renderer, and is the basis for most of our testsuite
- verification. Also note that the source code for testshade is
- currently the best example of how to call the OSL libraries.
+ verification. Along with testrender, testshade is a good example
+ of how to call the OSL libraries.
+
+* testrender, a tiny ray-tracing renderer that uses OSL for shading.
+ Features are very minimal (only spheres are permitted at this time)
+ and there has been no attention to performance, but it demonstrates how
+ the OSL libraries may be integrated into a working renderer, what
+ interfaces the renderer needs to supply, and how the BSDFs/radiance
+ closures should be evaluated and integrated (including with multiple
+ importance sampling).
* A few sample shaders.
@@ -202,40 +215,29 @@ Current state of the project and road map
-----------------------------------------
At Sony Pictures Imageworks, we are exclusively using OSL in our
-proprietary renderer, "Arnold." Multiple major visual effects films as
-well as feature animation are in production now. Our shader-writing
-team works entirely in OSL, all productions use OSL, and we've even
-removed all the code from the renderer that allows people to write the
-old-style "C" shaders. At the time we removed the old shader facility,
-the OSL shaders were consistently outperforming their equivalent old
-compiled C shaders in the old system.
-
-What's missing? Here are a number of things that we wish had been
-included in the first public release of the code but are not ready yet,
-we promise that we are working on them:
+proprietary renderer, "Arnold." Completed productions that used 100%
+OSL for their shading include Men in Black 3, The Amazing Spider-Man,
+and Hotel Transylvania, and other unreleased shows that are still in
+production. Our shader-writing team works entirely in OSL, all
+productions use OSL, and we've even removed all the code from the
+renderer that allows people to write the old-style "C" shaders. At the
+time we removed the old shader facility, the OSL shaders were
+consistently outperforming their equivalent old compiled C shaders in
+the old system.
+
+In the longer term, there are a number of projects we hope to get to
+leading to a 2.x or 3.x cut of the language and library. Among our
+long-term goals:
* More documentation, in particular the "Integration Guide" that
documents all the public APIs of the OSL libraries that you use when
- integrating into a renderer.
-
-* The 'testshade' program runs shaders on an unwrapped flat rectangular
- array of points, and does not have any good way to test whether lights
- are working properly. We will eventually have another test program
- that will render a "lit ball" that will be more indicative of how the
- integration and lighting work.
-
-* Currently, you have to write your own "integrator" from scratch when
- incorporating into a renderer application, which is less than ideal.
- We will eventually provide at least one sample integrator which may be
- used in a renderer, and outline what you need to do for more
- sophisticated integration strategies.
+ integrating into a renderer. Currently, the source code to
+ "testrender" is the best/only example of how to integrate OSL into a
+ renderer.
* Our set of sample shaders is quite anemic. We will eventually have a
- more extensive set of useful shaders.
-
-In the longer term, there are a number of projects we hope to get to
-leading to a 2.x or 3.x cut of the language and library. Among our
-long-term goals:
+ more extensive set of useful, production-quality shaders and utility
+ functions you can call from your shaders.
* Currently "closure primitives" are implemented in C++ in the OSL
library or in the renderer, but we would like a future spec of the
@@ -297,6 +299,7 @@ The main developers of OSL are (in order of joining the project):
Alejandro Conty
Jay Reynolds
Solomon Boulos
+ Adam Martinez
We cannot possibly express sufficient gratitude to the managers at Sony
Pictures Imageworks who allowed this project to proceed, supported it
View
2  src/CMakeLists.txt
@@ -2,7 +2,7 @@ project (OSL)
# Release version of the library
set (OSL_LIBRARY_VERSION_MAJOR 1)
-set (OSL_LIBRARY_VERSION_MINOR 1)
+set (OSL_LIBRARY_VERSION_MINOR 2)
set (OSL_LIBRARY_VERSION_PATCH 0)
# Version of the OSO file format and instruction set
View
2  src/include/oslversion.h.in
@@ -55,6 +55,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define OSL_LIBRARY_VERSION_STRING \
OSL_MAKE_VERSION_STRING(OSL_LIBRARY_VERSION_MAJOR, \
OSL_LIBRARY_VERSION_MINOR, OSL_LIBRARY_VERSION_PATCH)
+#define OSL_INTRO_STRING "OpenShadingLanguage " OSL_LIBRARY_VERSION_STRING
+#define OSL_COPYRIGHT_STRING "(c) Copyright 2009-2012 Sony Pictures Imageworks, et al. All rights reserved."
// Version numbers for the compiled shader format. The major number
View
4 src/oslc/oslcmain.cpp
@@ -45,8 +45,8 @@ static void
usage ()
{
std::cout <<
- "oslc -- Open Shading Language compiler\n"
- "(c) Copyright 2009-2010 Sony Pictures Imageworks, Inc. All Rights Reserved.\n"
+ "oslc -- Open Shading Language compiler " OSL_LIBRARY_VERSION_STRING "\n"
+ OSL_COPYRIGHT_STRING "\n"
"Usage: oslc [options] file\n"
" Options:\n"
"\t--help Print this usage message\n"
View
3  src/oslinfo/oslinfo.cpp
@@ -51,7 +51,8 @@ using namespace OSL;
static void
usage (void)
{
- std::cout << "oslinfo -- list parameters of a compiled OSL shader\n";
+ std::cout << "oslinfo " OSL_LIBRARY_VERSION_STRING " -- list parameters of a compiled OSL shader\n";
+ std::cout << OSL_COPYRIGHT_STRING "\n";
std::cout << "Usage: oslinfo [options] file0 [file1 ...]\n";
std::cout << "Options:\n";
std::cout << " -v Verbose\n";
Please sign in to comment.
Something went wrong with that request. Please try again.