@@ -15,18 +15,63 @@ Dependency and standards changes:
1515* ** Boost >= 1.55**
1616
1717Language features:
18+ * New preprocessor symbols: OSL_VERSION_MAJOR, OSL_VERSION_MINOR,
19+ OSL_VERSION_PATCH, and OSL_VERSION (e.g. 10900 for 1.9.0) reveal the
20+ OSL release at shader compile time. #747 (1.9.0)
21+ * Structure constructors: If you have a struct ` S ` comprising fields with
22+ types T1, T2, ..., you may now have an expression ` S(T1 v2,T2 v2,...) ` that
23+ constructs and returns an ` S ` with those field values, much in the same
24+ way that you can say ` color(a,b,c) ` to construct a color out of components
25+ a, b, c. #751 (1.9.0)
26+ * User-defined operator overloading: If you make a new (struct) type, it
27+ is possible to define overloaded operators, like this:
28+
29+ struct vec2 { float x; float y; };
30+
31+ vec2 __operator__add__ (vec2 a, vec2 b) { return vec2(a.x+b.x, ay+b.y); }
32+
33+ vec2 a, b, c;
34+ a = b + c; // chooses __operator__add__()
35+
36+ This can be done with any of the operators, see the OSL Language Spec PDF
37+ for details. #753 (1.9.0)
1838
1939Standard library additions/changes:
40+ * ` getattribute ("osl:version", intvar) ` at runtime can reveal the OSL
41+ version on which the shader is being executed. #747 (1.9.0)
42+ * ` pointcloud_search()/pointcloud_get() ` have more flexibility in what type
43+ of data it may retrieve: you can now retrieve arrays, if that is what is
44+ stored per-point in the point cloud (for example, a ` float[4] ` ).
45+ #752 (1.9.0)
2046
2147API changes, new options, new ShadingSystem features (for renderer writers):
2248* ShadingSystem API changes:
49+ * New ` set_raytypes() ` call sets the known raytypes (on and off) for
50+ a shader group for subsequent optimization. This lets you combine ray
51+ specialization with lazy compilation. #733 (1.9.0)
52+ * ` Parameter() ` is now less strict about type checking when setting
53+ parameter instance values. In particular, it's now ok to pass a
54+ ` float ` value to a "triple" (color, point, etc.) parameter, and to
55+ pass one kind of triple when a different kind of triple was the
56+ declared parameter type. In this respect, the rules now more closely
57+ resample what we always allowed for ` ConnectShaders ` . #750 (1.9.0)
2358* ShadingSystem attribute additions/changes:
59+ * ` Shader() ` will now accept the name of the shader as if it were the
60+ filename, with trailing ` .oso ` , and it will be automatically stripped
61+ off. #741 (1.9.0)
62+ * ` convert_value() ` now allows conversions between ` float[3] ` and triple
63+ values. #754 (1.9.0)
2464* Shader group attribute additions/changes:
2565* RendererServices:
2666
2767Performance improvements:
68+ * Shader JIT time is improved by about 10% as a result of pre-declaring
69+ certain function addresses instead of relying on LLVM to use dlsym() calls
70+ to find them within the executable. #732 (1.9.0)
71+ * The runtime cost of range checking array accesses has been reduced by
72+ about 50%. #739 (1.9.0)
2873
29- Bug fixes and other improvements:
74+ Bug fixes and other improvements (internals) :
3075* Avoid division by 0 when computing derivatives in pointcloud_search.
3176 #710 (1.9.0/1.8.7)
3277* Avoid subtle use-after-free memory error in dictionary_find().
@@ -39,6 +84,35 @@ Bug fixes and other improvements:
3984 calls to ` getmessage("trace",...) ` . #722 (1.9.0/1.8.7)
4085* Runtime optimizer is sped up by avoiding some string operations related
4186 to searching for render outputs when none are registered. (1.9.0)
87+ * Searching for stdosl.h now works uniformly whether it's oslc itself, or
88+ apps that use OSLCompiler, and in all cases are better about guessing
89+ where the header is located even when ` $OSLHOME ` environment variable is
90+ not set. #737 (1.9.0)
91+ * Internals: Fix the handling of alignment for closure structs. #740 (1.9.0)
92+ * oslc: fix internal memory leak of ASTNode's. #743 (1.9.0)
93+ * testshade improvements:
94+ * New option ` --texoptions ` lets you directly set extra TextureSystem
95+ options for tests. #744 (1.9.0)
96+ * Fix that allows you to set a parameters that is an array-of-strings.
97+ #745 (1.9.0)
98+ * Rename ` --scalest/--offsetst ` to ` --scaleuv/--offsetuv ` to properly
99+ reflect that they alter u and v (there is no s, t). #757 (1.9.0)
100+ * ` --print ` prints the value of all saved outputs. #757 (1.9.0)
101+ * Automatically convert to sRGB when saving outputs to JPEG, PNG, or GIF
102+ images, to make them more "web ready." #757 (1.9.0)
103+ * ` --runstats ` is more careful about not including the time to write
104+ output images in the main shader run time statistic. #757 (1.9.0)
105+ * Rename ` -od ` option to ` -d ` to match oiiotool and maketx. #757 (1.9.0)
106+ * testrender: Automatically convert to sRGB when saving outputs to JPEG,
107+ PNG, or GIF images, to make them more "web ready." #757 (1.9.0)
108+
109+ * Slight efficiency improvement when you call texture functions with the
110+ optional ` "subimage" ` parameter and pass the empty string (which means
111+ the first subimage, equivalent to not passing ` "subimage" ` at all).
112+ #749 (1.9.0)
113+ * oslc bug fixes where in some circumstances polymorphic overloaded
114+ functions or operators could not be properly distinguished if their
115+ parameters were differing ` struct ` types. #755 (1.9.0)
42116
43117Build & test system improvements and developer goodies:
44118* C++11 is the new language baseline. #704 , #707
@@ -76,10 +150,45 @@ Build & test system improvements and developer goodies:
76150* Added an easy way to invoke clang-tidy on all the files. #728
77151* All internal references to our public headers have been changed to the
78152 form #include <OSL/foo.h>, and not "OSL/foo.h" or "foo.h". #728
153+ * The namespace has been changed somewhat, is now only one level deep and
154+ contains the version, eliminating version clashes within the same
155+ executable. You still refer to namespace "OSL", it's an alias for the
156+ real versioned (and potentially customized) one. #732 (1.9.0)
157+ * Symbol visibility is now properly restricted for certain "C" linkage
158+ functions needed for availability by the LLVM-generated code. And overall,
159+ the HIDE_SYMBOLS build mode is now on by default. #732 (1.9.0)
160+ * More robust finding of external PugiXML headers. (1.9.0)
79161
80162Documentation:
163+ * Fixed unclear explanation about structures with nested arrays. (1.9.0)
81164
82165
166+ Release 1.8.9 -- 1 Jun 2017 (compared to 1.8.8)
167+ --------------------------------------------------
168+ * Minor speedup when passing blank subimage name:
169+ texture (..., "subimage", "", ...)
170+ #749
171+ * Fix namespace clash after recent OIIO (master branch) PugiXML version
172+ upgrade.
173+ * Several testshade changes: renamed options --scalest/--offsetst to
174+ --scaleuv/--offsetuv to more closely say what they really do;
175+ rename -od to -d to match how oiiotool and maketx call the same
176+ option; automatically convert to sRGB when instructed to save an
177+ output image as JPEG, GIF, or PNG; -runstats is more careful with
178+ timing to not include image output in shader run time; new --print
179+ option prints outputs to console (don't use with large images!). #757
180+
181+ Release 1.8.8 -- 1 May 2017 (compared to 1.8.7)
182+ --------------------------------------------------
183+ * New ShadingSystem::set_raytypes() can be used to configure default ray
184+ types for subsequent lazy optimization of the group upon first execution.
185+ #733
186+ * Hide symbol visibility for extern "C" linkage osl_ * functions that LLVM
187+ needs. #732
188+ * New oslc-time macros OSL_VERSION, OSL_VERSION_MAJOR, OSL_VERSION_MINOR,
189+ OSL_VERSION_PATCH lets you easily test OSL version while compiling your
190+ shader. You can also find out at runtime with getattribute("osl: version ").
191+ #747
83192
84193Release 1.8.7 -- 1 Apr 2017 (compared to 1.8.6)
85194--------------------------------------------------
0 commit comments