| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 Overview |  | 
| 2 ======== |  | 
| 3 |  | 
| 4 SkSL ("Skia Shading Language") is a variant of GLSL which is used as Skia's |  | 
| 5 internal shading language. SkSL is, at its heart, a single standardized version |  | 
| 6 of GLSL which avoids all of the various version and dialect differences found |  | 
| 7 in GLSL "in the wild", but it does bring a few of its own changes to the table. |  | 
| 8 |  | 
| 9 Skia uses the SkSL compiler to convert SkSL code to GLSL, GLSL ES, or SPIR-V |  | 
| 10 before handing it over to the graphics driver. |  | 
| 11 |  | 
| 12 Differences from GLSL |  | 
| 13 ===================== |  | 
| 14 |  | 
| 15 SkSL is based on GLSL 4.5. For the most part, write SkSL exactly as you would |  | 
| 16 desktop GLSL, and the SkSL compiler will take care of version and dialect |  | 
| 17 differences (for instance, you always use "in" and "out", and skslc will handle |  | 
| 18 translating them to "varying" and "attribute" as appropriate). Be aware of the |  | 
| 19 following differences between SkSL and GLSL: |  | 
| 20 |  | 
| 21 * no #version or "precision" statement is required, and they will be ignored if |  | 
| 22   present |  | 
| 23 * the output color is sk_FragColor (do not declare it) |  | 
| 24 * lowp, mediump, and highp are always permitted (but will only be respected if |  | 
| 25   you run on a GLES device) |  | 
| 26 * you do not need to include ".0" to make a number a float (meaning that |  | 
| 27   "vec2(x, y) * 4" is perfectly legal in SkSL, unlike GLSL where it would have |  | 
| 28   to be expressed "vec2(x, y) * 4.0". There is no performance penalty for this, |  | 
| 29   as the number is converted to a float at compile time) |  | 
| 30 * some built-in functions and one or two rarely-used language features are not |  | 
| 31   yet supported (sorry!) |  | 
| 32 |  | 
| 33 SkSL is still under development, and is expected to diverge further from GLSL |  | 
| 34 over time. |  | 
| OLD | NEW | 
|---|