Diese Seite bezieht sich auf Blender v2.66

Die Open Shading Language ist eine C ähnliche Programmiersprache, mit welcher Sie Shader (in Blender nur mit Cycles) programmieren können. OSL wurde von Sony Pictures Imageworks entwickelt und ist seit 2010 frei verfügbar. OSL wird unter anderem bei Disney genutzt.

OSL Aktivieren

Um OSl zu aktiveren, wecheln Sie zu Cycles und setzen einen Haken in den Rendereinstellungen unter Open Shading Language. Shader werden im Text Editor programmiert. es lohnt sich deshalb mit 3 Ansichten (3D View(Rendered);Text Editor; Node Editor) arbeiten.

Blackbox

Um Shader zu verstehen, stellen wir uns einen als Blackbox vor.

Aufbau eines OSL-Shaders in Blender

Shader basieren auf dem EVA-Prinzip.

Ein einfaches Beispiel

 #include "stdosl.h"
 
shader bsp_test(
    color Col_in = color(0.8, 0.8, 0.8),
    output color Col_out = color(0.8))
{
    Col_out = Col_in;
}

Kopieren Sie diesen Text in den Text Editor von Blender. Bauen Sie anschließend das Node-setup aus Abbildung 2 nach. Beachten Sie das der Script-Baustein erst nach der Auswahl des Textes Anschlüsse bekommt. Wenn der Quelltext des Shaders geändert wurde kann man die Änderung erst sehen wenn im Node Editor im Script Baustein der Text aktualisiert wurde.

Im Kern besteht ein OSL-Shader aus folgenden Zeilen:

/*
ABC
*/
optionale Header
 
shader Name ( optionale Parameter )
{
    Anweisungen // optionale Kommentare
}

Was ist aber jetzt was???

Header erkennen Sie an der Dateiendung '.h'. Diese Dateien enthalten Deklarationen für Variablen und Funktionen.
/* */ und // sind Kommentare. Kommentare sind nützlich (oder wie verstehen Sie komplexe Programme)

OSL als Programmiersprache

Variablen

Woher weiß Blender das Col_in eine Farbe ist? Col_in ist eine Variabel und vergleichbar mit Variablen aus dem Mathematikunterricht. Aber wenn ein Computer rechnet muss man diesem mitteilen welcher Typ vorliegt, da ein PC generell strohdoof ist.

intInteger; Ganzzahl32 Bit (-32.768 bis 32.767)
floatFließkommazahl32 Bit (1,2E-38 bis 3,4E+38)
pointPunkt
vektorVektor
normalNormale
colorFarbe
matrix4*4 Matrix
stringZeichenkette
voidFunktion

Allerdings gibt es noch besondereheiten: Sonderfall: Color

  • color(0.8) entspricht color(0.8,0.8,0.8)
  • Farbräume:
  • Wenn kein Farbraum angegeben wird RGB benutzt.
rgbRot,Grün,Blau; Array aus 3 Fließkommazahlen
hsvH (Hue; Farbwinkel), S (Saturation; Farbsättigung), V (Value; Helligkeitswert)
hslH (Hue; Farbwinkel), S (Saturation; Farbsättigung), L (Luminance; Farbhelligkeit)
YIQNTSC Standard
xyzCIE XYZ Koordinaten
xyYCIE XYY Koordinaten

Quellen und Literatur

Referenz (engl.):

This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.