Index: src/sksl/README |
diff --git a/src/sksl/README b/src/sksl/README |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1427c219267a8490fd25e4d0ee70f32bf5027197 |
--- /dev/null |
+++ b/src/sksl/README |
@@ -0,0 +1,35 @@ |
+Overview |
+======== |
+ |
+SkSL ("Skia Shading Language") is a variant of GLSL which is used as Skia's |
+internal shading language. SkSL is, at its heart, a single standardized version |
+of GLSL which avoids all of the various version and dialect differences found |
+in GLSL "in the wild", but it does bring a few of its own changes to the table. |
+ |
+Skia uses the SkSL compiler to convert SkSL code to GLSL, GLSL ES, or SPIR-V |
+before handing it over to the graphics driver. |
+ |
+Differences from GLSL |
+===================== |
+ |
+SkSL is based on GLSL 4.5. For the most part, write SkSL exactly as you would |
+desktop GLSL, and the SkSL compiler will take care of version and dialect |
+differences (for instance, you always use "in" and "out", and skslc will handle |
+translating them to "varying" and "attribute" as appropriate). Be aware of the |
+following differences between SkSL and GLSL: |
+ |
+* no #version or "precision" statement is required, and they will be ignored if |
+ present |
+* the output color is sk_FragColor (do not declare it) |
+* lowp, mediump, and highp are always permitted (but will only be respected if |
+ you run on a GLES device) |
+* you do not need to include ".0" to make a number a float (meaning that |
+ "vec2(x, y) * 4" is perfectly legal in SkSL, unlike GLSL where it would often |
+ have to be expressed "vec2(x, y) * 4.0". There is no performance penalty for |
+ this, as the number is converted to a float at compile time) |
+* type suffixes on numbers (1.0f, 0xFFu) are both unnecessary and unsupported |
+* some built-in functions and one or two rarely-used language features are not |
+ yet supported (sorry!) |
+ |
+SkSL is still under development, and is expected to diverge further from GLSL |
+over time. |