From 3076a8f2cb80498b33bddcfd93c9ee670cfdb1dc Mon Sep 17 00:00:00 2001 From: Stinkfist Date: Wed, 2 Jan 2013 15:44:25 +0200 Subject: [PATCH 01/13] Fix code copy-paste bug causing wrong global math function to be exposed to QtScript. --- src/Application/JavascriptModule/ScriptMetaTypeDefines.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Application/JavascriptModule/ScriptMetaTypeDefines.cpp b/src/Application/JavascriptModule/ScriptMetaTypeDefines.cpp index e1f9831d51..ee2989cee2 100644 --- a/src/Application/JavascriptModule/ScriptMetaTypeDefines.cpp +++ b/src/Application/JavascriptModule/ScriptMetaTypeDefines.cpp @@ -263,7 +263,6 @@ static QScriptValue math_SetMathBreakOnAssume(QScriptContext *context, QScriptEn return QScriptValue(); } -/// @todo Dead code, evalue if this function is needed static QScriptValue math_MathBreakOnAssume(QScriptContext * /*context*/, QScriptEngine *engine) { return qScriptValueFromValue(engine, MathBreakOnAssume()); @@ -307,7 +306,7 @@ void ExposeCoreApiMetaTypes(QScriptEngine *engine) register_Transform_prototype(engine); QScriptValue mathNamespace = engine->newObject(); mathNamespace.setProperty("SetMathBreakOnAssume", engine->newFunction(math_SetMathBreakOnAssume, 1), QScriptValue::Undeletable | QScriptValue::ReadOnly); - mathNamespace.setProperty("MathBreakOnAssume", engine->newFunction(math_SetMathBreakOnAssume, 0), QScriptValue::Undeletable | QScriptValue::ReadOnly); + mathNamespace.setProperty("MathBreakOnAssume", engine->newFunction(math_MathBreakOnAssume, 0), QScriptValue::Undeletable | QScriptValue::ReadOnly); engine->globalObject().setProperty("math", mathNamespace); // Input metatypes. From 2c453a869f23a1a0dec1733c1a05940e2c5d9deb Mon Sep 17 00:00:00 2001 From: Stinkfist Date: Wed, 9 Jan 2013 16:24:23 +0200 Subject: [PATCH 02/13] Remove ancient and unused PythonQt-QtScript proto scripts. --- .../JavascriptModule/proto/customcam.py | 123 ------------- .../proto/customcam_activeentity.py | 118 ------------- .../JavascriptModule/proto/customdialog.py | 69 -------- .../JavascriptModule/proto/dialog.ui | 165 ------------------ .../JavascriptModule/proto/qtscript_test.py | 87 --------- 5 files changed, 562 deletions(-) delete mode 100644 src/Application/JavascriptModule/proto/customcam.py delete mode 100644 src/Application/JavascriptModule/proto/customcam_activeentity.py delete mode 100644 src/Application/JavascriptModule/proto/customdialog.py delete mode 100644 src/Application/JavascriptModule/proto/dialog.ui delete mode 100644 src/Application/JavascriptModule/proto/qtscript_test.py diff --git a/src/Application/JavascriptModule/proto/customcam.py b/src/Application/JavascriptModule/proto/customcam.py deleted file mode 100644 index 33b0c98a0f..0000000000 --- a/src/Application/JavascriptModule/proto/customcam.py +++ /dev/null @@ -1,123 +0,0 @@ -""" -an experiment in overriding default behaviour by a qtscript defined handler, -using qt signals and properties. for the problem statement see -http://wiki.realxtend.org/index.php/Qt_Script_as_a_means_of_extending_and_overriding_internal_Naali_behavior -about qt signals and slots in general, see http://doc.trolltech.com/4.5/signalsandslots.html - -NOTE: doesn't disconnect the default handler when a new one is added. -do browsers do that when you define e.g. myimg.onclick via DOM in js? -how should we do it? an explicit disconnect would not be that nice.. -DOM has also the concept of 'bubbling', i.e. whether you want other handlers work too. -""" - -from PyQt4 import QtCore, QtScript -from PyQt4.QtCore import QObject - -class SceneEntity(QObject): - """ - a dummy entity that's positioned in a scene. - just passive data like actual Naali entities. - (for the earlier active variation, where has update signal & handler, - see customcam_activeentity.py) - the position is a qt property, so qtscript handlers can access and modify. - """ - def __init__(self): - QObject.__init__(self) - self._pos = 0.0 - - """pos as a qt property so that qtscript code can see and modify it""" - def get_pos(self): - return self._pos - def set_pos(self, val): - self._pos = val - pos = QtCore.pyqtProperty("float", get_pos, set_pos) - -av = SceneEntity() -cam = SceneEntity() - -class Controller(QObject): - """a thing that is called every frame""" - update = QtCore.pyqtSignal() - - def __init__(self): - QObject.__init__(self) - self.update.connect(self.default_update) - - def default_update(self): - pass - -class AvatarController(Controller): - def default_update(self): - av.pos += 0.1 #moves at constant speed so we can see whether cam tracking really works - -class CameraController(Controller): - def default_update(self): - cam.pos = av.pos - 1.0 #default cam behav: keeps 1.0 behind av - -avctrl = AvatarController() -camctrl = CameraController() - -engine = QtScript.QScriptEngine() - -def debugprint(ctx, eng): #for javascript to print to console - print ctx.argument(0).toString() - return QtScript.QScriptValue(eng, 0) - -"""the javascript source of the custom camera code - keeps 0.5 behind av""" -jscam = """ -function mycamctrl() { - //print("MYCAM: " + avatar.pos + " - " + camera.pos); - camera.pos = avatar.pos - 0.5; -} - -cameracontrol.update.connect(mycamctrl); -print("MYCAM: connected a custom update to cameracontroller."); -""" - -eprop = engine.globalObject().setProperty -eprop("avatar", engine.newQObject(av)) -eprop("camera", engine.newQObject(cam)) -eprop("cameracontrol", engine.newQObject(camctrl)) -eprop("print", engine.newFunction(debugprint)) - -def update(): #we probably don't want such individual calls per entity .. or do we? - avctrl.update.emit() - camctrl.update.emit() - -def checkcamdist(name, target): - d = av.pos - cam.pos - print "CHECK CAM DIST: cam distance from av is %f (posses: %f - %f)" % (d, av.pos, cam.pos) - assert (target - 0.01) < d < (target + 0.01) #with an epsilon of 0.01 for float inaccuracy - print "SUCCESS: %s cam is keeping cam within %f from av" % (name, target) - -def test_custom_cam(): - """let's say the default behaviour is that cam follows at -1.0""" - for _ in range(3): - update() - checkcamdist("default", 1.0) - - """now let's change to a qtscripted behaviour that keeps at 0.5""" - engine.evaluate(jscam) - for _ in range(3): - update() - checkcamdist("custom", 0.5) - -if __name__ == '__main__': - test_custom_cam() - -"""test passes now, outputs: -D:\k2\rex\viewer\trunk\QtScript>c:\Python26\python.exe customcam.py -CHECK CAM DIST: cam distance from av is 1.000000 (posses: 0.100000 - -0.900000) -SUCCESS: default cam is keeping cam within 1.000000 from av -CHECK CAM DIST: cam distance from av is 1.000000 (posses: 0.200000 - -0.800000) -SUCCESS: default cam is keeping cam within 1.000000 from av -CHECK CAM DIST: cam distance from av is 1.000000 (posses: 0.300000 - -0.700000) -SUCCESS: default cam is keeping cam within 1.000000 from av -MYCAM: connected a custom update to cameracontroller. -CHECK CAM DIST: cam distance from av is 0.500000 (posses: 0.400000 - -0.100000) -SUCCESS: custom cam is keeping cam within 0.500000 from av -CHECK CAM DIST: cam distance from av is 0.500000 (posses: 0.500000 - 0.000000) -SUCCESS: custom cam is keeping cam within 0.500000 from av -CHECK CAM DIST: cam distance from av is 0.500000 (posses: 0.600000 - 0.100000) -SUCCESS: custom cam is keeping cam within 0.500000 from av -""" diff --git a/src/Application/JavascriptModule/proto/customcam_activeentity.py b/src/Application/JavascriptModule/proto/customcam_activeentity.py deleted file mode 100644 index ed91890480..0000000000 --- a/src/Application/JavascriptModule/proto/customcam_activeentity.py +++ /dev/null @@ -1,118 +0,0 @@ -""" -an experiment in overriding default behaviour by a qtscript defined handler, -using qt signals and properties. for the problem statement see -http://wiki.realxtend.org/index.php/Qt_Script_as_a_means_of_extending_and_overriding_internal_Naali_behavior - -NOTE: doesn't disconnect the default handler when a new one is added. -do browsers do that when you define e.g. myimg.onclick via DOM in js? -how should we do it? an explicit disconnect would not be that nice.. -DOM has also the concept of 'bubbling', i.e. whether you want other handlers work too. -""" - -from PyQt4 import QtCore, QtScript -from PyQt4.QtCore import QObject - -class SceneEntity(QObject): - """ - a dummy entity that's in a scene and which updates. - has he update call as a qt signal, - and the position as a qt property, - so qtscript can override. - - in the actual viewer we have decoupled passive entities which are just data, - and active controllers etc - most certainly want to keep that, so might be - a good idea to refactor this to reflect that idea. - """ - - update = QtCore.pyqtSignal() - - def __init__(self): - QObject.__init__(self) - self._pos = 0.0 - self.update.connect(self.default_update) - - def default_update(self): - pass - - """pos as a qt property so that qtscript code can see and modify it""" - def get_pos(self): - return self._pos - def set_pos(self, val): - self._pos = val - pos = QtCore.pyqtProperty("float", get_pos, set_pos) - -class Avatar(SceneEntity): - def default_update(self): - self.pos += 0.1 #moves at constant speed so we can see whether cam tracking really works - -av = Avatar() - -class Camera(SceneEntity): - def default_update(self): - self.pos = av.pos - 1.0 #default cam behav: keeps 1.0 behind av - -cam = Camera() - -engine = QtScript.QScriptEngine() - -def debugprint(ctx, eng): #for javascript to print to console - print ctx.argument(0).toString() - return QtScript.QScriptValue(eng, 0) - -"""the javascript source of the custom camera code - keeps 0.5 behind av""" -jscam = """ -function mycam() { - //print("MYCAM: " + avatar.pos + " - " + camera.pos); - camera.pos = avatar.pos - 0.5; -} - -camera.update.connect(mycam); -print("MYCAM: connected a custom code to control camera."); -""" - -eprop = engine.globalObject().setProperty -eprop("avatar", engine.newQObject(av)) -eprop("camera", engine.newQObject(cam)) -eprop("print", engine.newFunction(debugprint)) - -def update(): #we probably don't want such individual calls per entity .. or do we? - av.update.emit() - cam.update.emit() - -def checkcamdist(name, target): - d = av.pos - cam.pos - print "CHECK CAM DIST: cam distance from av is %f (posses: %f - %f)" % (d, av.pos, cam.pos) - assert (target - 0.01) < d < (target + 0.01) #with an epsilon of 0.01 for float inaccuracy - print "SUCCESS: %s cam is keeping cam within %f from av" % (name, target) - -def test_custom_cam(): - """let's say the default behaviour is that cam follows at -1.0""" - for _ in range(3): - update() - checkcamdist("default", 1.0) - - """now let's change to a qtscripted behaviour that keeps at 0.5""" - engine.evaluate(jscam) - for _ in range(3): - update() - checkcamdist("custom", 0.5) - -if __name__ == '__main__': - test_custom_cam() - -"""test passes now, outputs: -D:\k2\rex\viewer\trunk\QtScript>c:\Python26\python.exe customcam.py -CHECK CAM DIST: cam distance from av is 1.000000 (posses: 0.100000 - -0.900000) -SUCCESS: default cam is keeping cam within 1.000000 from av -CHECK CAM DIST: cam distance from av is 1.000000 (posses: 0.200000 - -0.800000) -SUCCESS: default cam is keeping cam within 1.000000 from av -CHECK CAM DIST: cam distance from av is 1.000000 (posses: 0.300000 - -0.700000) -SUCCESS: default cam is keeping cam within 1.000000 from av -MYCAM: connected a custom code to control camera. -CHECK CAM DIST: cam distance from av is 0.500000 (posses: 0.400000 - -0.100000) -SUCCESS: custom cam is keeping cam within 0.500000 from av -CHECK CAM DIST: cam distance from av is 0.500000 (posses: 0.500000 - 0.000000) -SUCCESS: custom cam is keeping cam within 0.500000 from av -CHECK CAM DIST: cam distance from av is 0.500000 (posses: 0.600000 - 0.100000) -SUCCESS: custom cam is keeping cam within 0.500000 from av -""" diff --git a/src/Application/JavascriptModule/proto/customdialog.py b/src/Application/JavascriptModule/proto/customdialog.py deleted file mode 100644 index d7a7050d25..0000000000 --- a/src/Application/JavascriptModule/proto/customdialog.py +++ /dev/null @@ -1,69 +0,0 @@ -""" -making a new popup-window / dialog from qtscript, -within an existing application in the script engine host qt app. - -to call basic qt library things from qtscript, they need to be added to the api -- it's done in qs_eval in http://qt.gitorious.org/qt-labs/qtscriptgenerator/blobs/1ff84cc76c56097a73c66bc9e40ae3417fbf1300/qtbindings/qs_eval/main.cpp -for an example js code only widget see e.g. AnalogClock.qs there, -http://qt.gitorious.org/qt-labs/qtscriptgenerator/blobs/1ff84cc76c56097a73c66bc9e40ae3417fbf1300/examples/AnalogClock.qs - -didn't do that yet, am first testing loading a .ui file and having .js handlers for that. -this tech is similar to http://doc.trolltech.com/4.5/script-calculator.html -""" - -import sys -from PyQt4 import QtGui#, QtCore -from PyQt4.QtScript import QScriptEngine, QScriptValue - -app = QtGui.QApplication(sys.argv) -window = QtGui.QMainWindow() -window.setWindowTitle("Naali qtscript customdialog test") - -window.show() - -"""exposing ui loading myself 'cause don't have qtscript bindings at hand yet""" -from PyQt4 import uic -uis = [] -def loadui(ctx, eng): - global uis #to keep gc from clearing this :o - uifile = ctx.argument(0).toString() #expects a single arg: name of .ui file - ui = uic.loadUi(uifile) #, window) - ui.show() - uis.append(ui) - #return QScriptValue(eng, 0) - return engine.newQObject(ui) - -def debugprint(ctx, eng): #for javascript to print to console - print ctx.argument(0).toString() - return QScriptValue(eng, 0) - -engine = QScriptEngine() -eprop = engine.globalObject().setProperty -eprop("loadui", engine.newFunction(loadui)) -eprop("print", engine.newFunction(debugprint)) - -engine.evaluate(""" //the javascript source -ui = loadui("dialog.ui"); -print(ui); - -function changed(v) { - print("val changed to: " + v); -} - -print(ui.doubleSpinBox.valueChanged); -ui.doubleSpinBox['valueChanged(double)'].connect(changed); -print("connecting to doubleSpinBox.valueChanged ok from js (?)"); -""") - -if engine.hasUncaughtException(): - bt = engine.uncaughtExceptionBacktrace() - print "Traceback:" - print "\n".join([" %s" % l for l in list(bt)]) - print engine.uncaughtException().toString() - -#~ ui = uic.loadUi("dialog.ui") #, window) -#~ ui.show() -#~ #ui.setupUi(window) - -else: - app.exec_() diff --git a/src/Application/JavascriptModule/proto/dialog.ui b/src/Application/JavascriptModule/proto/dialog.ui deleted file mode 100644 index 37de28a823..0000000000 --- a/src/Application/JavascriptModule/proto/dialog.ui +++ /dev/null @@ -1,165 +0,0 @@ - - - Dialog - - - - 0 - 0 - 367 - 245 - - - - Dialog - - - - - 190 - 200 - 161 - 32 - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - 290 - 40 - 62 - 22 - - - - - - - 290 - 70 - 62 - 22 - - - - - - - 290 - 100 - 62 - 22 - - - - - - - 160 - 10 - 46 - 14 - - - - TextLabel - - - - - - 10 - 30 - 251 - 161 - - - - - scene objects - - - - - - - 270 - 40 - 21 - 21 - - - - X - - - - - - 270 - 70 - 16 - 21 - - - - Y - - - - - - 270 - 100 - 21 - 21 - - - - Z - - - - - - - buttonBox - accepted() - Dialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - Dialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/src/Application/JavascriptModule/proto/qtscript_test.py b/src/Application/JavascriptModule/proto/qtscript_test.py deleted file mode 100644 index 5d6f2568fc..0000000000 --- a/src/Application/JavascriptModule/proto/qtscript_test.py +++ /dev/null @@ -1,87 +0,0 @@ -"""a pyqt test app that embeds javascript using QtScript, -defines qt properties and slots in py, and exposes them to js""" - -import sys -from PyQt4 import QtGui, QtCore -from PyQt4.QtScript import QScriptEngine, QScriptValue -from PyQt4.QtCore import QObject, pyqtSignature, pyqtProperty, QVariant, QTimer - - -ps1 = ">>> " -ps2 = "... " - -def printhello(): - print "Hello." - -app = QtGui.QApplication(sys.argv) -window = QtGui.QWidget() -# Create our main window using a plain QWidget. -window.setWindowTitle("Signals") -# Set our window's title as "Signals". -button = QtGui.QPushButton("Press", window) -# Create, with "Press" as its caption, -# a child button in the window. -# By specifying a parent object, -# this new widget is automatically added to the same. -button.resize(200, 40) -# Resize our button to (200, 40) -> (X, Y) - -"""old style signals, works in pyqt 4.4""" -#button.connect(button, QtCore.SIGNAL("clicked()"), printhello) #QtCore.SLOT("quit()")) - -#new style signals in 4.5, must upgdate to get these -button.clicked.connect(printhello) - -# Connect the button's click signal to the QApplication's quit() slot. -window.show() -# Show our window. - -class Python(QObject): - def __init__(self): - QObject.__init__(self) - self.setObjectName("python") - # Does not work as expected :( - self.setProperty("app", QVariant(self)) - self.t = QTimer(self) - self.t.setObjectName("timer") - - @pyqtSignature("QString") - def hello(self, name): - print "Hello,", name - - def get_test(self): - return 123 - - test = pyqtProperty("int", get_test) - -engine = QScriptEngine() -engine.evaluate("function dir(obj) { for(o in obj) print(o); }") - -py = Python() -spy = engine.newQObject(py) -engine.globalObject().setProperty("python", spy) - -#app.exec_() - -print "Ctrl+D to quit" -prompt = ps1 -code = "" -while True: - app.processEvents() - line = raw_input(prompt) - if not line.strip(): - continue - code = code + line + "\n" - if engine.canEvaluate(code): - result = engine.evaluate(code) - if engine.hasUncaughtException(): - bt = engine.uncaughtExceptionBacktrace() - print "Traceback:" - print "\n".join([" %s" % l for l in list(bt)]) - print engine.uncaughtException().toString() - else: - print result.toString() - code = "" - prompt = ps1 - else: - prompt = ps2 From 49f23484eabb70e149d925d9a71db1b144704ca2 Mon Sep 17 00:00:00 2001 From: Stinkfist Date: Wed, 9 Jan 2013 16:28:31 +0200 Subject: [PATCH 03/13] Remove deprecated/out-of-date dia files. --- doc/dia/NaaliDependencies.dia | Bin 9430 -> 0 bytes doc/dia/NaaliStructure.dia | Bin 7008 -> 0 bytes doc/dia/OpenALAudioModule.dia | Bin 3451 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 doc/dia/NaaliDependencies.dia delete mode 100644 doc/dia/NaaliStructure.dia delete mode 100644 doc/dia/OpenALAudioModule.dia diff --git a/doc/dia/NaaliDependencies.dia b/doc/dia/NaaliDependencies.dia deleted file mode 100644 index 81ad1d65f7a556ec5a296ebaf2e5250923bd2fbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9430 zcmZvicT^Ki->^ZHV8MVWh$sOB5v7CD6A(lM5u}3@X;KuB&}&et(t9sb1a7MI4kFTf z3nifwdZ>ZQ4pW!;7Vw3Vo?_?5%0y3O|~nFi+SW_M4n+|MFP0 znng;aTz6P*uRn7ft5bJ_P9@EjHt@ImIcsH*-4`bHtNX&yf2_L|Vrm?#G=81Tv%n-T zn+cf;ETX3RiLyrv$15$ecKs{$Lr$5^LhtImcD!a0u=xS6)*=MY9_H)^58FZyg);nT zpoAHnJB#;#c?yt6k>f{f_4~DGWrEG`X5paJn5%LD=G^CHiN~^o;RkbtiCq zg@i}dYnKUR+B^4miZ5iKieylM^h}!A!i$fUT>VnRIYSt(hj;U ztv0Zggb{XvQRv4_!ryplm{B~1=TRh`o^v` z_N@^=vyh_%ha>TodYj*&pcyG2O++p9348*A|L`JN%Zezjg{kH46Dc1sGgeD$Yh22puXDh<-kC6p_`ab!}FWN-`{YT-UDVf8$Lh()o9=h z8~${r>3+#^xO=ro8`5WS{$8159CJ8GXycuPs+pz5SdzLSajdCNv*w}%tI&X9^A-t~ za>LO`plW*@a)_)K73J%HrF?27(%+9wP+C-QUh$t+pCQ&C%mkj6fV)cYEqpBD(Pm`x zScJ}A-R#qy>3FMej#;)_nN8noWU`YikDO&nUJq1=95?cz{8~TPXk|3Ao*ka#dRAun z8>&BTLlT7``O%J{#{L;e)yJVbTYJ;WJ+rpq$H!BVr#bDorA{V|po~#pOt|vR*GLP8 zHwV50i-U%bGQke!y7H&emmTmv>C>Txdnr)DVX6PA?ZM)}@RtF5Z_-})fVZ9y>R0i+ zi@@Bwc4`-5AzI+~Kvvg%JU`p+b$@sNDhhK#sB%QHOl^@JS0bE`MP{p_-AFPwckh;`kMN zhr@2%E&rT<(QDCAWcoFu{Vv&QMy0_yN2}An#*$>Pc)(fbPQ0|=&ey*+wf-sy2hmlR zJ5Fwh4sRdouNIRy&oVpJ*+W>&l;D9~UI82io+_Mi_%lGlKwZGU5%Ba(Rys4AX?Q(M zG;Sh6#NQ^A)h6^>$y$nC+`~OnRh-RSDcO@k$bsu{8^6+Aq%zO$_lz_3u{^4AV1|U4z+H}6AG4C^6UOF1?B}Vdl@B9cj}CC zG+&r3y!xS94cFc&Mtur81CjxhK*|rw66^r-H-fHH1~$22TL#8aw;ycq;TO{{@;er+ zQZm9~i6Jk(P!6*&YR4Yzdk==p7#{addR?JV%04I#A}`3CJ8(i4N(;?}?RZCA(ej7>4yfX&xoK2r zo8zv~a@nfT%5b@>&{AMLG>-zTa%9`zrRfRBOtZeSA1o7sODL6eK@}48<%pENpARlb z#$5@Jn4OF)D_Ln7{DSx0&idjHwc*vDn#}%@nE7I7Vv)JSXG!jWot65p(i7P7Oqojb zTmTLbjFWES>WGoe-=5EBrCu0RcPAT&c1A+rLRA#<#3SmlVa%HE4>a?IO`1G^T=F={ z$L0Jc#nE)QDtNvjBWboE8f}(@&aSTRCLL@v;ps<#n}8D<0yQbXUmlVJ`Wu0l2~vFT+`@;el_q<<+nzBmQO@GX7^Mj&enp>JKU%>Y{U+ z7jiDi-w1d>^^XY6zcgc@E3eua2~64vN(+$aY-N0$^f-g^EO!+DT#945#GjQ4Q5vyI zGeGr0XBS*y`G%66?7QFRk9tceJgQ^v2y{T!s8Cbw(qO5H0e&6eH=s)34B$@$Tp)@^ zgGm~U{hcDds=RU}jo20$w1$WjDuPZXH^epxyW8%$Pq+i<*y?wtI$G+W9Bq#?4sO*z z#qf0J17I!0LqAkSV;XXjBxFfm^8Wy703m>A04|XDgY-AT3=kT5d1qf#_AVM9B$)f# z1baP1MBL!fv6r$)po(x1dmGs70HCNGlTK7<|DFpJ;M#hdc5 z%dhvMPcOrSAt|6iAPR6Ci2rf+#{W-*eHa{}Ey8W6MiqUa%4%53o*2HGY`LXP^xHI( zv3hB81llo!oann2jActno=|ioc&AqAHYu2?{G%R>djCYsE^HY*luYr{eNlpye%J|N zu72+BRa^A(>pA%g0hg$5P(7g1p(>)%q|W(UELG}If#uiC);W1iU#Ci9g=A!&MCraf zkGU0aP1N}SGTrR&N2xLHJFUO?h{_wbtio~WGzwn<1D|^u&^{#nY6(LG{jX&7XKtcY zhM8TFKYP;4=s_pQ#006&%rqwW!T>87j9G>E$Oik~_s%M=wS&*CQ0z?E73n)P_F<m_fUi85<1Yl=TuZm@_3-Rhe!*z1#RYbG4=O$Q{?qY+^5C`p_;J5dOVTx* zOD0Hr#UDV1IYd*DD06Rlr{1rS+vxTPGVlOWhyNQ$C1?h?3&7G4KmLW3%F4y70i+kf zQC^~3hrSC}_jXTL@#5xBnv>&-YI=_8m(1E{+SXrmI~`$fY(OrJ!sG`2%zE*hpJ7`5 z4+=2|ijwpz3HP4+)9<~((AkN#R7I3L+v$jzKY5-gF*ofX_R8l2?;O1 zq^WdCD$bFaTi|zO;H3OqD(Nbr;I`DQWV?swa{YD!Nf8E#3@3c%frH~c@{|@y=TqqU z7~nU+MBvtslQ-VNaw+UD{z1U66W;(;*m^^;Bwc+#!{&tQCC>=Ijx*_5yf z1P;F#unI*gj$C(pA^JqkNb5I(@`2-kEhlw?;)P8rLeCXKyR=c(^`WjY@(3E=eidu& z`eD(sel)AurNFKKppDJ7Y1L0X^`;v7G9tB}zhTb(bm%Q;V3u35CNX`7jiPOvs> z`cS(Si{n*+>_P|RmgVdoq*=Wu@OvdHbn7Uz7cYn`g#Z4Q$nq1?P$g2sm_q{Zaa@OQz zc%o6{H&OYjS%&}@`M$t701r@=JwbMDSH6G#^>9?w@N8^Qc=}vwf|N{LrFCS~$gFu# zm1bVNq&4qCvwuLvZ2#BWp$lQFg)7?M>2#$#{FcBUKn*|y08NAYNczS0q5+|8wT1QM~MBSCMAC)}qArv^;XW#OT5R=Yt+Gf%%j(jHVq>)D3Q zLlF*}KY_*%eI^MrPseU8DKz|JH|wLVsm|J$<&geo1mckeb#l?6jHuyA_vGmz5`KEPSzXr% zwKR)rK(x)2n?+_<-<6hWynR`r24m8U5Z6dQCm8@E&AGn&`irrEiY!djd4w5+v~un! zOb3<%41rbbR&u@GF&K`2#X_4^>*i`*BgQ4b<7`Mt742a)Xi&-B$YAMY$cmfu%Z6qe z%+7Caq^Ug;;V&e2Coo(YUvPfzlcB8Q!yjA)x6C@`l=ggX?n}rJy;t1!?DLyJZ?%j| zkKL1W+0#7NjSHC%B$^sgTHA2WJAzY#Z_+@ipDHZAd9?v9K*%%n(|1Cb>uT-PPFct5 zsweI=FK4ertbJBHU2WY-PI`wo!7psm!1o~u?e+TV_&V7#UY;hbLT6|Y@FM6MnA=z7 zH0FSFS@CZ{Uf@3Cyt*Vj7$K>i(Xg>=>mVEOdLUI}FtIUiq5NBaKE&TLGyWZuOCx5( zRmu0ZCMK)Q6Xb>snThuX`H@2sxa&=o>Vu9PSP1^{#tndU^98N)$U|#foc0z*jz{N6 z(fu*L5vye{ek^gXv2vu$x+gwiP0H!DYNwWHht`v!YMJiB9<6K04Sjow+ER9rr!}fg zakllJgq=bS%ev78Q(P@|-t*^j$(Q?Rh2W-kH9BO~a`7JNPi|JpJ7EioIb&BwAIjq7 zTApsp=l!Q^O)3r?l{fl)f_uE-6`H-mQdI4bboo`{4mLN7^u=+RPK;|XO!#hR#QzR_ z=*5)lNr~uWuG6sR7G=47!9O$T%5*EcT=v*PHqs^-CxX81Q`P(!z_fl!s3q4Sj(8dD zWUEvx6H0BcOzaGSHF&Kg{6&r;bzlAf`kr$tPg18j<=^O}V3o)3WL&OX7@=o8XQsU- zSevq$vgtFu|J1ca2&ZIHw^U^(79uHPG9a*n@lmWfENi>MXm{g``fMj}>GH>oOltec_d-wq4 zah%o{`$0^|Im@vH=BEQj>w;M|pd-rb#I|yl9**PIiu5{3=e&a<5G6&uB>vlnwW@$l zKrrwU=sNhmujXmafx>d&-=giO_UQ_dnhnsKdGPi)|55Me%j z%A?zQ!X7ny zOcj~~v2ivBQZg%QwAlx(LhiBcEc+(y4@@5Doyd7D5f++{zpXh%%P;$69@ZPKCMA!z z4-enMDYm_25d~R+dwpZ@9LEZ%z(GJN@E>ti10_b&>lySXP>%J)fRtGUFv zCT{S9i4xy;NMjf4qO~cNmB3z{=GuhMb`vY|HT>Nc|3=%RtXi&uwEc}pto!w$Jp)aP zd}uYI@Z|GkwQpYXPOSo`U4ss5q;_LvjPLrBquuG)p1=#DZ7vmb&zlk&0TS_c(R2lM zV%#aWOENTZ8)4Awu@LP5>_M%Y%B>lI)=2HR!p!A`7!4YC4VHnml=M+Nv@37DjyJfK(|DJ6 z_xTTW*34a?@r)0t*fyNDiQQFh(|Z(?v!ehHEC-kX|10*?;Njqwz{{Pr)^{R!hv=-5 z=!#FnSS|SSENu)MDyUY+k0zx)rl0wG7B|1*D`RbhxBw0ruu(5&!k^DtiaT%b1M1b< z#KyLUl%gHS2gEPp8$RtM%$eFKGp%Z49p9@~m#G8kfzHe0jYf^{nl$zo9OAcNjpy1JcVK!Ni!O(U_b22eJ|Up3O%$oOk;{${^2 z1pl=G#+JmT>yCEEOiRVQTU1{|HbXiyg6RU-fTGStA7c@;ztj4y^KP#-+iAv%Y3OMr zXLv{7T&(w4y`p!=o7P#ozBawfq-Yu0l0h;u;aUj@qv5(5Cdu)C1i~M>mM^09X+E@L zBn90&NP6cLB@h}zVSOeaU^Rh$4T}u@zo=FTsZdI2uC$Q+|G&rjcgxlOdK*r2of*a6 zeWT9-x?P{ineE>tz=-HsYE&`RySeuUw5=cH;>Ddq!PTYdIp_)o;5&TZfQ3ORz(D|t z=J?}3*#3G@f(8S$m?nJ>Co3#ycKE87R_riY@D2s$p6z(V6vaLK?&rMJOR2~6*@9|- zbAY`-tO7B|ZxsA5;$~!fuPU59v5)SO)#q|M<}hm*xlmwflZ^i<)oRkyU;G;2a0J!f z;aGRlu@9M6=$V%8m2I9@hz|FD0OIoK@fbuE&y$5*Y(Mo*>+ag}kQ7?E{4@@1fyBh! z`$?cNL)iXs`jL~PMG~1uI#3Z2*Z^<_uCRB>h50bxIM51zi-oK%xf^~fAb8NFGMV!l zvo|x;EV!+IFld7_Ltinc(W%usJUb$nm^{Ot z-@18B4x;Z&rf+Rx8g_De<|)&LA2zrY_wL@agl^^mx#C^=r8n)qasxFHFbgo7_5O&1 z%(G5*aXDM>(UY7lg^9p#0Ciy6zhdvzL^ya)LyN06|4#V3cm_fyPq)isQKhwrGYuA6i;lijg}uHYDk2lo>t#yJNHjh z_3)s7(OHtZTB{E({Nw&=zIpw90Ukhrzr(W#MoTvf6r5{@QJMo%a21dAXdEq$g-rkO z?-~(To3%)16zPQ?-dxu&#OzKmYLe40N1v9#my)z;|L>6j6iVbJ+;@PLCJv`UT>Cd2 zEPs(w%;GcncKEWL`MS}yNsR|d0(r8|4@Q(BaMK6SCY`%8V*P7d^_Ne!5cBAqn1|x> z<)e4+G-VCn(1HT{o_JFsNBPsuQfsQdZl(E%fKh{Gps%&bYoB?3sw@&R`)u?K4}ZT+ z^ZC!}mnFQ4bO<$-5ZI=0+3fPpd4bN&OloJv2D;UQzsPJ+oNUni2Rl6cVY zkt;xl+JqQOw8XPEuO!#q?3QBqJ&E57q)2RiL08=>(=XUa-KoYiI&ZH_auq$?(U3&N zScD2AT&CS@1FU>~0?BWq6`5)MAl0XgE^nTB0ON$L?;ClPESj6DNA51tJZcQ4?G!wS z{T#)!COm%*)eOA2dCCO2Kc*LT|L$XJow0Pr9}yy!=(@{utqehF`8Iw^#A#mc9ONGj zO~-NvF&#qs$-EOsAh$<7QlPMl9QOiJs4UL?@4)BFMO*3f`7BC9HEZi_!?wPm+RLA&_z}$UDeEcg_0<_@zSBZHm9>J_ht}Iu z;(HT_4}YA!sD7N>#;@|~N2|4f0pX7vjAMD@hDb{4(Q)pX}2&trn^!SxrGJU>*c zekKO>%L(v|4fXlD-@#;nuxtE#uX10k-!rh7{u;_XO}Cs)3Mp8KfA8u-Dj4LIZD_qV z#5zN>`<>!dP8)Oc_WrzJA#ZVK4AVf+kxkeo!BqX5MU2vG7&_~5wJX2p{Sx7|7uvAw zIJJ*-3s3}=R+x1wP){1!Xe#&MP zjn*|D*5lPht#oLdjG|QDLQFzPWC1j!jP-klu%dPky+mUpO7&^J@bZ)H`){S*;`jIq zn^}nJu92|}L6@bD=m`_<+|ZDey(<^*k+fwC=UN|wd8NwcAOYbdLgd5lHAV~@#Tnb@ zFt&rb)%uiUQL!!57l>y+l3VlX#l`G%{w@49j#@uEN^|gwT-8rL%hYPeB|%}Q*_{1r z-D*CfHtt=>_YB1&_Ys>YBfIF=#b9hVNZ(gO@HI3 zi$Ra&T4~PaCpsp%#If0*b*)a0pEx(w{vN7vj3qza5EgNkaf_*IZ-Io?n;eFadZ-nm zK_jyyJN!*g39eJ_D6l00pnPti7r>^@oqTEDTLR*>Eu)rbYbBF9Ja$P=Q zIEH=B1;v(7PvCzAj%Q(jIu2X3EYhJ}g zU+@4z*|IhoRsDy1e&^(qjcRlnVzKCTG<48q@Oa*dE>U1wncwh`ALKba1e+XkJtFBo%4|sP zZBm$~uX6l-uTnNEB*zY|p~U~A(&em?2GSjzMj0aC^POX{8IEJDxw0%|1_4LtoiJn6 z0}`jv4$|1?OVS#Gpw`GN`E;i@NRG_~OFuuMfJ~zQ&{mEiBy)?GHTCc__Rsg#p4jZ5 zz676}%Q!rFwo~rryhm-MbxYz`;%gttYdcZzzYO^Na3$+%XQ1uA98;h7H5=+bYn<*Y zY|!K~SeYakzH})*1%D8W^v@ue$D7cb5<8OcsAz#@`*|^D z;*d-I<>>@kwaG8vt4m8q+iVilv%t+`LzraI0g|8Hz|E-EU#drmnFp5ATSao#EAyLQ z*t$PMJ|?N;#XGVzq$f?!epP<=$i3uC{$v9@X?$(BeWB+OoR90w+IUqw-A1yx9op}E zALg|Gg4J8hdSxU7*BQgcn^u@9swUsz9#~n$|`GJ9zFCExj&Jja4DxE47 zciEIb&791K#6l>=^N(y7`?(-tazC3JH}2wmewCZoH-`WMuce33AjC&yLAG#?PeFBo zCV{WN?Pi(;awnkQ!w)+8BAaQK*|tE4@{i{57+?5-=hU5{Jf?$`5Ajb9C&x1|4*4z8 zsC5z|;`*!C`!@-?h^Nxig)_qs@8O4~je%yyJxB|PP#X3YkK6rX#pg&p9ydmJP3_RM zrUZ;F$$opdlf{1fPqr*AW-FR}7oOJiHGI(h9kxVmj`o2mqV8K1I{(v4WJ!*8QBHV{ z$7A`VEIQk=Ya1)lGF%)j`V+pNZ?XMa!{d}re}9NGZ<&Gy+(EVplZBp&lvUx>_nxt9 zvfl?LJoC66BipnZu%>Xt;pN(+;E@r?^}Cd!t=l+^#eaBFeb39Hj^%5PN$_e;PaDJV zEE}thtO&A)2oFW`eANp-HE$Jaf@w>vYvaEx`5efdvikzt7D0R4q|w4b&@E*ljv(tF^yHv>Ezcf4S#PUx|=gN-7W9%m_)k&ID0112}sV) zq*YkhF6}bgq)k*p0)8o%`OH%8#8&F{&GFrssD??}Tj;}^Q#5)3jVJ2q6K(ZA0(NQa zA_jbEq&uqZ!oo@lCh!-Hti1{cT3^=WEup&WoJbSe8$l-%1@2_HXQOl0QHFPx`k7MU zc*ULuZAt~x?D~WYWKsOU7CMzGRM42REM$T7+`n_6sTM^%!z3He_Van{XUlDK*?ZP_ z*gRS*on~ODR=rwI~cWo(F23&2gEgKEH{LbiL_#Vk8Dbrm820w)$+BFN>G&McOPkomILq9G^<-eHp*=xk+LE zLf|2^7V~Dp!YaAKej)yN-T$=MfZcncphvK*cOCt*@t511Rtz4F7~5aF+x4brutnXG zjG>{o?uSz?EmYdlV_-^0DWngF!}7c4_}kTmAO8t!BOtXe^7K`qye36`5bEo~UbhJ2lYscKibQ)E8GW|W zn$W~|zGXT}R4iyugI-psKse;}d2%5;@(D)Qq*;1RH?DgYnGwf{A>~_%_N;HIO&&}& zHczp6dFN%YR|9JO@}?DvV;PZN&oxDYLkE45HOz91G%MCl#;GVgfx=9*vcV*-N!^VGMA_Y<{|+s*abkFYYTt z9wwF@nvC;}^rwFsyRi3^7?h`i?2O?rxpsMlQzTZWa;3R$-RUPz1-v?LDtCSA_zJIo zxwNM!k|!I*Q*Q_qc>^nVjf;9C2JT~oY!leTs=Hc3cXo$-O@ zO7QW?;)pW8L-mm1lKd($R+PyPD?0C)*x}=;`Sh}+HX?;;Te&@UV64nxf zH2>5D_iV0nF(;o;Ki`<^_04?l-#?E`GNN6hJyo~gL0(56aB1tc zui}MHM{cZrITER#-YZNd5KV`jh}zXu^mJ`p?oB#2h<^v~;t@!LoI3@{#yCW=Agb>Z zN&0hF`Lyvj&s=usV3;?PdtLbER6od6jX0u0~MsT2@gw6l$DNh4`Q%TbpDjk(hNk zP>^VjHBA}*tL#{hdX^~1Ymb%e9RtH?gzXZ|1F(ltL9blNfIokqI?vdyl^-TC;9h_r zN(|s10$LeR2FMYgE8SQi$|I9z`qZr8WG2aD%cSO`t0%r^d*p1UMR>EzBFm|YfyVMs%6E)P{g)5Yongh7M*SSwgdl z3b=R9!Ue{_0{jns6qMF^?c$urxD;dk4z+*(oqnCu=j?3Fo^a^hNn=;-l;#ehGo%xX#|_Xd-c+c9a!SpZ|9{1${ws0xt&uS%=n9Cs6YHskYlr>Q~> zY18hRq#*f-FuSLy%#0_4g5ROoQvMrFkI0x_Jt~ph7oz`JnL_EX8O@tcXRIux+akza z;-hLvJ7AC+$yepy!a8&^sZIhw`)ykW@Z_H=O-vkG#1#e@x|-=%+`#0| z`jl3g%}oLCzo%PP;*m9n5X$~g#_DVn;PBDQpls$U34i+y&3|P0joR4P{+~?+Yy%+% zYcZ#sc4NC5{5&Lb5b{lYtK<)8fA!OSVJ6c6U^J3jbBLQMMYRTl3GfFGc|~wN0Gna2 zIkY$A0w0^0MR86WSXIEw$4!Pud=!yW|88-PRF=U5F&M1Ti6x%OkqSrd^fVJ-g5(?v zsfE7uHodt-_y2W%$Vi#k(`{_QBV8*EMg^mG69N9mJ}rZ$k+qTOJhp6tHGn*am1U}g+W-I=rJY$uK)U;-HRR-=_00H!s98ml#brvYYX1} zf+0xFI=I%)0$PDJyte?`&?v-G9mlZum^13}^a?;X$a+AKh)niqo$pz1rP&L`xE4<3 zNyBHY+uHaq-i_u^_$!qlMB9DM?YbXVWL$`zrCI*`FnLb)V}W>i5Wr)j21R_x(;|{!wmedA3)1?z6@qk&*g7@i_saCSkA$!JwM#qT8^r zkaaqi@`okR7D3roDmcE43DlyV4$f))ALv0xd;iM@-0xs?NYCOQ@Zwd%i#n z^U70NDBQRy$6>7fzJKNT$-QhFi)UTB{_xq2%$BLHyInj*QPP~b$Vs=EZsb!!%Vmt; zWLccUpn05{%}E)`5#~Jw8nB1NKiolkP>yrlIT*e*oyqDbXM1#fa54+vjj1CeO6J1R z1VX<`-jAIPtmBn|U9774@pqx;Jr2;jALlcd$C$|sGf*Wl_O0149dZS|erzBv;9ty$ zkayILzUg;EGaq}Pu+z8~cIg9$# z<|Z)TqD5(ZahZ4RHx9!KpfJKKbCK+|i4VdE_*eTNycJ)Y0PO^9YF+L`1@au*GECH zoJ;w=lPi^;^3T$tO(u@sI(jFA$qwLetQ5i0U93zGR001{X_5loH{lG!sG4shNSsDR zlUJV^G%E)x$IM)zVn?PfAEVyfml6ILR<3N;S1WARo$ZKH`!UfGab3&jX_K>^Pu>!I zq@>w2QER(JQ1cExb*W?o)|N+v#7^D*J=YT|I9dmQv6$nrFQ^ncB7(62D1YdzMnSC# zDMjtY*g@4m)wn z;J0)Qs{-~;)WWdt$ZZU%Oxqahcl`l zhC)>c-zBiIuzY~vNi!o$Vh}S9cwM)2S>g``;T*$Z<@XbhOyUm zVXlg8p=DRgs4{rWXY77hFLc5&CYMq!>Ye9_F6JBIR!odkSGq4M_573rTkev;zhUY{ zJ=t9PLKGE%^`|T%qVCpa^6mtdy0?<6wXXwX88Q;;UI(t&nMk!maIX+kk$6m<%C&*k zBPUqKBS8c^zgF@v=KRpd*{S1`P=>~Yz<_%lB^OM}z#r9~? zK5TuVu7N5i)LseD;K7nhyBX^Js=_?aBp82dj*UV{Rl-Whhc;%Ku!9e8ET6G#cVVk7|i#i+<6;ubIF7vA7#A(bhf5B zl}yu%!w57X9yMv@Vv-ySMh^`}z5U8}GNP7brB<|u767PF%F5KSag}0*rP|aoK2rg> zqDi9soAU_N%B3FQqsU<7a`KQBzm(Do^Fl2Cgbc*!)kf~Ip;~2yIi$s3Zq3n^@2K(O z?%L-~!|+|ZM9baH8g;{+R#&l=hm;BcSfH@VgMdLfP@4rUIn9K0L zp4Hpi8SvX*-?`s7#0jfaT@y^xl}i}=H{3eje7pL57P|L$!=0GRjoi_qzq(vHBX=t~ zT8;A@F+h6IY{-UzK@Sc5!wAn2_sUfYz?s9a;yfaP-u8I-6N0mppY8$n?_kVt)C0IO z)Nt{hp9|QuNJKq0NG*gY7iM!i$g7 z_z3Hi&~(+ops!sCLy%avM-W4`NjDYcH4Quaq#Tx zw^w--u?q+sR=~Z=Jxwrx)Psf;D`>!?%U2o&c|XPF0RGTXErl{kjq^lrGaEDOC3ezq zW9-Y9*j?R<8=H?VXjOiXP07IiUiq-wd@rjm9PupZ#B8y6LrhSqhZ9uyGUZoGzsq8b zX9>&4>RAQ{ICc!mzY3&fMC>q>uuyw=g!i!wOA zA#j7Wc=_T;28@X%3x4*lRj{^goA2|@DULLUrs3i>>YR7!bP1fbfU3Xx9L%|mf5Pnf zsbctIg2?47$g}(>*d5~QP=r4V>wue zujB&m`|4|+ujx)w*GpQbE^ehI)wTr$Jgls>9V0CaTvA~^ehRy|E`d)gCH~Tm_R{~A z#ZI=~xz+QKj@v(FakI1TL;{0dQtd{gOqjql#FaBh`ar3EoAp$TQ@t`H$rv2_UbIKo zP}_-3OtQXw<-JwYfQ}zFo__J@`eaH6Z-D=^RQbQ9%SzHYZ(Qe^kOwZk445kRyiiOXmBg?!(_yBN4j@E*LxxI6dr^ z=#mgU=@(pFrqJBaquKsDOU?9Q7QMe#JuVB@#PP&(f)ozW#583%1fwEZY}-y`f7YG2 zzFKmzHYJGM4|yL67oWK_o4a%o8}-)v?n>(sQd$0bh`55|B24*_G>1~Ru@DF%pUW@y zkad~WzAWo?iznM+t~C4KUwHYHvS}_Vx6e(dTG6Y{g_0w5mBLCUbw;tJLCz_C_(^ol zN%O0v@P+(mq1;g!^I=pIA~f zA5=1bj}xjq7IXi{{ln1?MNF;AvMy-YZF1Im0U$Sg5&v6&@vKB)?}JxFg0D%mS+m{B ztviHXyN_LtV!;9W^dva1&en<*0=2>)N)Q zKZI5`^3;*+*$L=EZ0XOn_Xhnaz$tCmn>TADq%K>mu+Ra7`xzS7$I1*14`jZxG}DU@ zU(6^{i5%qE8{yQC!_AG&;62x(uFIp{oVC%_I!9x88PC%_KU%N4BsGzC?fX??*$~TZ zy2{Qz9C{vJq((5YEPt6dJX~YfE@CtcC7+6}9+1_8ImSuv@gy1C!YjOcIg2WM=h>s` zVoJ(~oJI0Pzh@${^m$a9R9&+k5I?>3+4^{)Q}!~=%h@GbaOQ&VZ29bt>yvWy!2R~9 zMPrv}0A$tV`OEV47S7v=n0UFQ==Z5v>ZgU-{#pF+jl3$)J$~YeDoDh^YUVQ6<_wqL zzFU>2s9aWk_$*Vm8&6&M?`!6^pqI@Q^F1Sz#L#nYi)2B9H1uaqUsz}z)obEk;?6$e zGezr-Jh;<&A*^&9L6K_iJY9V?vg1hD=^*DPMPB<*gla{3rgo6a{cb=> z_zDru^BwTp?sTpn?d~)R0pLIOK@Ybf&E*HPhhlCW{8`Nrw1hAReUX^E{B5*p9;rf z)mpvRM7S^77jgxfbQLZm79S(mgT9y**n;*058fbKkB1%?PZL?ohju?*wqki<2%%B^ zIOGmX%%PQM_=uhoxl!X;!j!r_k%Z}b*|5wu{U8GSUp3}CsUzG=vbP57T&;UD zFDM~Rq$a&M&8RZf;iTfx%e3R}sYFyjJ9Nv#x=-HwFNI_c1(k>rJQ=Jfeno%nx3~A< zwqNkzA|bS&B(6(1mL;93Bt?%sOw=JBU;Vn+wWhh)B{ZMOEPvmA_L!8VNJ0>z1gN051m0BX{e`+JZ6r;!7MJ3ui`KN}|58Ha>h!6ym~5|` zaMl(Flvi%MJUalt^^UVsB1(AW@Ex2afP9LPH?<3PTLOk#N`S?e3l-%rZU%hQl1-Qf zYx{2hYgUjcEo%Ulu4yCTU@!*g3T!FEZ&j}1&V92SHN79%?;N*D$UwH%9{&5RI8?8`?Iv*eR+s$Bf0?=6AEdT)1OrDS5IV- zS;Tsrd;wy4DrLA(+`Zm+9Y8S?Greu<8GC~J207cZ%XM;!h7IcajK>ebz?q41JGn;Q zLbJ-vQ12<{{3N!Iz7Tg6?tsXOy?u^XH)?kf;AUxN?hbbJ9EK#c9lee>$aG1Gc#fj1 z`qnYkBj3%qB~>|3Ua?*pUMJyd`VIg ztK}iZ^s9=@TxRl=t{RuHNGdAFzE$l64WEz+*U~(Y6`+M^Xk@zr`1nCgZ?G&W;T(0J zpN`~-rF0$U-pRryKN=XlL#JSc%dD_hKgn)Q6dpR;uWthst+l0U(?2`<8h8287g@{1 zBP{&PXT%OVY?MVTZ|%)Y*Iv7w5Z2A~tiagnMaKhF{D^!wmwX?=K!uQTG`FTRG+$Rx zEwp>Mgod=dhb-X3^}c&;e8jBR9wO|Lbo_oC#Ld$|xWh8^6lx;%JbKYB^BZAzUO-OD zGcm(MX58`M^uAxm!1=Bh2WGo^Lpc9pCBwA5QzXXb!pcgDiDkn538IT-W;fdC`_QF} zo_~vEO5wg&vg5&Tr}My@vhvWP)7|w)z4_slNk=xQ%Uc|(MM7L(Keg&FyhDkJi%ZKQUR}s`buv1)-+E-M}y%RF|Yu<8VZZPQhxSCMvw?1YA=y5dc5VcE|yNPk)O%Z^(Bq7?wWu-irq zX{89Jxnw@){RP?c`&$G7gRde+9T43k!C%9b1xfW{q=Dq#h~A!~c1603@@|@HD{Rlq zC@UuNlw;Tt+tj(O;cPrdOjen|T`_YkpUEm3Yx^16G!#24<;GO+v{r@{XZ8Bs;!Bcp z{CzCz9<;`L%4~s5K(ae01ND^Sx19&5j`xu^9b>X8tD@R6OW=oKaZWg4J#Ipw8I!8x za#f)9)h3s)R5wF2_dlMPpr}paXlSeDHqSghr=0>l{7q}VV`Q3ogb;k!pu8{eLDV}rZUn<{jdA}>Z~57Y&JYL=ZFr)7IRM3ieh3N zwdb3n1Ko?6$Oow|7OEW-Tf%RV`&mJ=P}fR$1QlsIALk~k&gi?}0lbVYh_PP1jlSBy zuw%xf^Qo(QwE}!Aj6T-v(6y__%`aE4tg9$;)Y{ zp{#Ty(A{KtCW)z8Oe0l=PXA8?QxBfpiz#iN zf_~NpcnDIb0y~s-<*E-=UBY#&z`$!qCh<`=zI$!TtXzsa-$nOLSml>N&X?+&>f~90& z`^T{6_3H$k6`Q-AQR2|Gte@ewVicSTHxt!4Y}6}EB^G9Tuox33EaM7XJx)9adZ?=h zc;4rSw<~U*P748XXmISC6sA<5kM^oN{N6Oi2g6Kc#ZmWt}(GOK785!?u|64XjC(iUq8lH+bck? z52VF_y)9TYs$n4NILw7WxAOuPVwHS)Wa{k~VnZOljK$wg>6MyGjCX8 zj=OkCNqsZUn?L2PvrHiaJN`Te9quyL$ZH23GCV2Kjiq-7V;*N)LRO<5nCf9ySE?Zx zHj>0xCLXcJfDJ4a)ocrFJ7<>3wua_P@86pac5gy02L8rZU`q$rJ{;@E-1`yq8;=-E z6Fuy5xNEx9A3AoGtd>odyP@=-a0w9qhJY@Fk4O`r$1vF4cw6{%wB9xI4 zB=b*USdd~&GCqW=T}|NoJ(&q*Ya>B3oj^3~IcvsLVz+@7rD|!>$m9F;)DoO|3v2JN zeP0u?A6fEo>?3L~>t_f1*{{2gmeN8U`0St(CX8XTIX1Hea*TA{+%!+9J_%YM-9oUR zSu&f;IDN^X3cbPj4`HvX#)d#XG6|n>DBiccCDws`mF7<~w?+2d@rYH{JKNK<%Pffb zkeG$#3>&|-#;%;j4Ld2)_kL@hxBgN@Rp2UUog`h+cOjPb@bV(>gO5n#4DNqaPL zV8M@-iD&U0BQ1$npUG7{%cFpr=-|kHhWd8TqyXKfKgekDlo?7hT@d;Cfajd+>r-ik zv!6k>hrKoYj!WstFY(gVcr0)5F7gB)Gcrhy9?EgEM_EKUQGP=)_9>=`S-2b)ryfTp zaa50Y;FDa;tm1vj=NZ~kJ~R8$g3EqhUlQK9(QO>A$VT1Gw@oU2Dcc5|obquJx#rva zWQ+bD?Ku5_TSVq>8+|E+9;Z6=C=4CUYh{}Bv4qqS02)S+6H+j62pCE}Y9*0pcI*8_ z8*D&CJfo_=<^xC0ga^g*9m5E@+=e zpAdLjf23I+z`x=2WlNAtk_@zVzc$$PT5Pj7Pbs12&oA!hQKE1*3{I%>^SETGUbW69 IDv^`@2S}->g8%>k From c003cb6d8ebc82929bc03c33dcb20900435b1f10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ali=20K=C3=A4m=C3=A4r=C3=A4inen?= Date: Fri, 18 Jan 2013 16:39:54 +0200 Subject: [PATCH 04/13] Fix duplicate console print in ConsoleAPI::Print. --- src/Core/TundraCore/Console/ConsoleAPI.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Core/TundraCore/Console/ConsoleAPI.cpp b/src/Core/TundraCore/Console/ConsoleAPI.cpp index c468beaec5..c23446b869 100644 --- a/src/Core/TundraCore/Console/ConsoleAPI.cpp +++ b/src/Core/TundraCore/Console/ConsoleAPI.cpp @@ -199,12 +199,11 @@ void ConsoleAPI::Print(const QString &message) ///\todo Temporary hack which appends line ending in case it's not there (output of console commands in headless mode) if (!message.endsWith("\n")) { - #ifndef ANDROID - printf("%s\n", message.toStdString().c_str()); - #else - __android_log_print(ANDROID_LOG_INFO, "Tundra", "%s\n", message.toStdString().c_str()); - #endif +#ifndef ANDROID printf("%s\n", message.toStdString().c_str()); +#else + __android_log_print(ANDROID_LOG_INFO, "Tundra", "%s\n", message.toStdString().c_str()); +#endif if (logFileText) { (*logFileText) << message << "\n"; @@ -219,11 +218,11 @@ void ConsoleAPI::Print(const QString &message) } else { - #ifndef ANDROID - printf("%s", message.toStdString().c_str()); - #else - __android_log_print(ANDROID_LOG_INFO, "Tundra", "%s", message.toStdString().c_str()); - #endif +#ifndef ANDROID + printf("%s", message.toStdString().c_str()); +#else + __android_log_print(ANDROID_LOG_INFO, "Tundra", "%s", message.toStdString().c_str()); +#endif if (logFileText) { (*logFileText) << message; From 67988c6d06145b77b7506edf7a8155f7006b11d6 Mon Sep 17 00:00:00 2001 From: Stinkfist Date: Mon, 21 Jan 2013 00:41:20 +0200 Subject: [PATCH 05/13] Remove legacy OpenSim avatar files... --- bin/media/materials/scripts/avatar.material | 36 -------------------- bin/media/models/avatar.mesh | Bin 2660800 -> 0 bytes bin/media/models/avatar.skeleton | Bin 101048 -> 0 bytes 3 files changed, 36 deletions(-) delete mode 100644 bin/media/materials/scripts/avatar.material delete mode 100644 bin/media/models/avatar.mesh delete mode 100644 bin/media/models/avatar.skeleton diff --git a/bin/media/materials/scripts/avatar.material b/bin/media/materials/scripts/avatar.material deleted file mode 100644 index 950ac61bae..0000000000 --- a/bin/media/materials/scripts/avatar.material +++ /dev/null @@ -1,36 +0,0 @@ -import * from "LitTextured.material" - -material avatar/avatar_eyelashes : LitTextured -{ - set_texture_alias baseMap legacy_Face.tga -} - -material avatar/avatar_hair : LitTextured -{ - set_texture_alias baseMap legacy_Hair.tga -} - -material avatar/avatar_head : LitTextured -{ - set_texture_alias baseMap legacy_Face.tga -} - -material avatar/avatar_lower_body : LitTextured -{ - set_texture_alias baseMap legacy_Lower.tga -} - -material avatar/avatar_skirt : LitTextured -{ - set_texture_alias baseMap legacy_Skirt.tga -} - -material avatar/avatar_upper_body : LitTextured -{ - set_texture_alias baseMap legacy_Upper.tga -} - -material avatar/avatar_eye : LitTextured -{ - set_texture_alias baseMap legacy_Eye.tga -} diff --git a/bin/media/models/avatar.mesh b/bin/media/models/avatar.mesh deleted file mode 100644 index 8b8ecf007a5eddf21f2c67e3970d6c5ec6d16a7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2660800 zcma%^1$-2{7w?noqQzYc6sHu20^ONV+={!GB5i>J#T_nIDDLihalg>b4DK$)p%jX{ zJMWjhclZzaeBS3h=96>soz0w_oXI4a*|I~@v<~XrC$w?r$gtq~aXDr{*;GRR~kDYj%JIY|dCWm@R8_(V!C zXfGTgWeVsNuqI`C=o};`@rLv!xky%MDYHOlfzAe*jbukE?vcfyNrN~vz69D&8Ww;^ z(=d(9d!i)uzbs=VV}yT=8pyDrwls~ZBey+WX|42{IG(cC0YTT))v|qy$x|M_nmuKTpyfRyV*UCFDZ0FR2sX|)jQWc zKJ&OCnq6J)n%VdsFE?wS7(XeAR=R#XU)lPcSToO|ea{}xpMN?mvX9y8YJC14pS#Ww z6)IQPuFs9sT2e}DkRzTaD}PwLZJS(sI47PTTXsn#4Bh4$nmnFQ3Og#29_y~#;I`s`__(e3Aa25n8{#9Z_#h^3D<+7QuwsSy2rE8_gRtU&_y{XL zh?}tDhL{K|CWw`=Vukn!TYTJBd=L|1#RRbuR;&;oVZ{eA5mrp>`~U4v^ml*q{#r~w z-!4Bt(@!_GBHnuU0R{Q0Xzh=@z0B3|yR<VrHEDJzp?tAZyU8sq&Zodueeyo ztak0Sd*Ch?&wQ!qA9;Hj#7CqW+ujVi`ANn^d`C#WM5o)@Wlf;`ZT2ZWA$a$(Rg6ObT!F($67QDSz&k@o}$5 ze473nA8iKWLlB=O#36qYsGKbLts zOJD4qOyT4Tdnuek;gkxeQaH83G6weg(<+=!;q(e;P&lK)a$dFD&#Z73g|jN0P2ubc z=TJDO!rlt!QaHE5c@*|hIIqI_6wa@(oI&mFFQ{-Kg$pZOL}6criz@7=a5053zgzxP zN;_CxAB6^oMJ6ZjWhXmFs*>}hGW2nJ4!Ps>I6Y4;KwltLNC$SDRv~R!2Udkt2eoC@ zprvffs?w^oE%sMMiHopsoOWQZA8*+gjAUA0n zq|zRF9lACvO|L^#kC)|%+hSE!C-7JK9Z=*6&;AKL=h%8%3zmOBtBQ$nYt?TM6U zpxcu(^fb!XW;!)UD|Q;xiUpI?G??7Nr>E&Hk^=cwY%wh5qixCJehP@;Je9dNq&m9*{fNvU@D?;|7Y!RettT%Ku?Cp(w zDVhPg6l%$U++xxex-D6PeHo~fOXvr>5_SYE2eFl~yOMOK3qewD2X|uIQSWwAlS(h% z(VCDo=|x2K0^~t*fLx?EKnKYUkc*ZDN$H~dsR_NGx`+uG$xP(x!R|_eeKZkE#9Z=t!H--f&e zt1X}nq!y^xfb2*N2Su={aaA+p|in z1LQe;evZb{4%j!3&L(Z(*=*9C$hu}j&ZTu>dplBHx}A21?v78SoQ?XsL3W31!)B9J zklo;K8@38^6%B$6LTiI)VkTu_l9&b2)zF2>YFdVsVXNsH=rwc}wl%a4?Mjc)RgkM- zu^VdZ3fUd{IqgJr7RsJeDI0^=(#ABDt)=Ur*U_UMSs%JSJxipl16>E!q+A2N1~#Q! z4IPBE8a5iEd@x%{4?-TKHE2f`%%rRV>#IpeSYJ)nqLy&Bnn)SSbk-AEN}Y8gD`-!T z>_j%uW^@IWas%~e%b=z7XIp6#x{OM>l~!h>NCcI)auKu^bS+vGw{f-TO6ZkzDOm~` z%$Aa1wg9OkWJfliO1YZMhbQ5naMU~>HO)uOD`+w7UxB)ckz%A7>M2H+(M4ntWE1En zv^Z|0n$WteIH}A0$W!VE{gnFRR__LG_MXxkNDpZ{XenDk*JVxMXI)mAttad8X$~Ycu+biJH{@>GmbQVGa-WAA!q#r2wz!(xLa!uk z@aak-P(q-LlsTZ+ksQdaBTqo_NKdd`LM|S%2ewP}1mp?&H#tFHK!%gQ$qO0=E#(WE z2geH95+yFtv@{Uu675L>A)i2BqT!@BjtIq(y&-!*htgg|T86|Hk6aIO-&5m#)E`Rb zlcOXQsRFG)cOX}RW`y2BGNP^>BoDke0sR6ccfhAmq_o)Pqhwm@4IKz6J-I`?=@q0q zw1?UR28`2RX%K^vk+RXvG#A@Uvq5H~-^e%endD-hi8q@>Ka)w=`PNK=_X&iSNR-}~HeNo40vJ*8+d75-Xxo+$<{F6TUBke-k z3Aqb$2ezH~d^vA7W0<_F0;9>)A6)8D*|1F5qL2kjl;5=j)Ye!$Vd_euSUYJ1mw~prDIVv3rokokOi~*8 zQaENNDaCwQI;={nut?@2RiIt)AuHA>HQ-SVRuQWaj$paz-qMe<{j#E%taeryJjaw?rcW{|0vcc-HKEYK{P zm&}2dG7>_B^bpdQPN98iQS6z4Jw;(R5%$c&%$pZB z>R=AeOX|bI9OTwPu7j;hWF6+#OPEz_VAj1vq?``zfILVYusfX=WF?scatJBO3bG$$ z2>F4!q)ZH*m_$PMrIBbw9+nt;^PtQxY(Gdr_6w;eqV9_pM&ca!q31or5s7g&BGCtb zBG(Hx^5EF?$mL=E@ObhU>4!bP@R+h683p+Z@)zkzMj`gaK}%T>zOBUkEu{lK zH)oY-6V{wHVGdRYE6hli1X{{vqz?8iBT3j-x{Np=9Vj)Ad`0<6bRLniCb%GEC0dYH zqIZC22`W`L8*wFr+j%J_%$^b`nRQ#2Wt$J&E=HY3wn;tsrZ%R;(r~NK=3c z(!*HwOIZ+hvp`F^2X^;DOZ$xNMV>K}n1sQyNz%~s*wWA>>^xFBnhr7&rA*R{HAA@w z$OzUHTLAX#rOlxC(g2bLV^(5}0kgLf@Tm%}_9VC(eaLKFmr3YsT&c5Z zZphrYex-Ecs$M~yxWD}-^k~6S z@N%?gIa;=yIMJ@N`$xgGf?DP@r zJc5l4MCLZYUI1hOEzim!1)%OSp8RG~hHgTV{%=BSyl4}$i4=zPqJ`0#LR4CPMpM&g zu$vm`5$vRf?FZPmfjppr*qa&oK$aP0Qqxo@of$_xLyo|=RPc+C9FRFMD-m!K@&=C! zQn5Ek?~yXo_v8baguNe--jl}AQobjd=|*TNGsFHGvXMv`$R5ypbPej>K<>ehGN27; z!v<2GZ6ZyPD?^)-hR_Z1`8~)rRd-Y zK(8acnasDu9dd8hk`}=lvZvVVVyz# zDAgHq5A+`L57`GTd5NLs$Si3*D6+ zqxEoKb_{#u-eb7S3t%Bk%C5NAqbMikcHDP%ftIqa=dQL3 zNL|QXCNAVQ(rxrI*+?s}ZFCdva690Rw>{egxe50c8=*VlPGckTv7`dZZ$-&i;?F9u zt+;2~2HF4%{*d9&ok%$D>N=5^py%`@a_b?VV>?RMV>^l#oh4n_QI!1~^=?DCzft0E z=$Et_^m@pbkYTJEWLFl3tt;9dhExI(31B7gRaXF`(3B;^Mp+k{3~3A1KwHo@4e~P4 z(AK}P?=tzD_QJkukblE^80&>C49E9EN`_B*;kZNe80pS5q+{d|y+)3a+T_0(@;L{=~ zSsbz=jiW8t98!|ZAuU)OokP~*E50QznsSmyc?gKrTCM6C?2N_5wLrXc34yUQeWFqBodY3#wx#2Vu=7A3|Dun`NKicFBOG~85@b9q zj;8le$7t{ql9`RBPf&MemYEHQZ<*OZnu4W(bdVIxL8d}Zm0trhFOrF6f=mXTjHE>Q z6yVHAqv>dxiKT>2$?l@UzTL@^_~PcmZfeUcuz zi8MX(`PnFFDf6=oYz!R*+hdRh&}ce_N;!b$W-myzN9KliIYCmUMhgbwygWdX++8wh|6@Op)@C=Gn9@e zLuo(AezXs^el!c|gOnM6C@>AB^WaYfrXjuaNN;Fw*q3q&^c2)9WiIGk@JGsM=xC3x z(fCt=2V@{p8dw@iKf>B{BIQRCg+Bs_g3gJQ1KUS@o&#w-zV0s+Ku90V_W!?M_xF|G zvEa@(O`~w+3WlcFLi1ncWokFqqTVkQ4@%wO9c!<0t?}CC?ziD8-+gnlw&~7tv8&7_ zj%U;^dzs)n_hWVh#`3m5S88v3n~7%uSGm`-ahhM-KpfX88}FHOptaefX(ae%k$q&zj{kV(YSETRCZz zmNDmb{#V7$8hp?!A3mh=*F?l^zAf7+Euww{aVqQ{AJ^)VR&q|5I9Bs9&${W5IQ+b` zXcqgBk6wOO46Hg|9PzV_s`&X0J_h!>u? z9Xa)ar5guica^A8_-on0q3zq`-7=bIpE zW?Lj`{z%}Hi>&;k-l9cTh$1cS@rrr+3csO?g;$LmeAnt!f7EOD)9zbfN>h8eC5|7e zmCXfzG@Cz~<+)WlQ_VW3_IBZ%{%#A--S1f0eL%m`tbT=ar&;F?=Tx)KY0C0-v;kLN@GVqR{NUeRfYy5QkU^#yN-e2icLQLtE zSNYBvyR|u0qD9rR*EuV8T#nE7F+^Bnh`qes2aGen%VeD%C9)lg<=MM7)=n?TqCGHU zd73%X|FAFH*lFf9Ud!$Bj1^YC*vX>W&-oYl-g|p6b{eiioi6Z&j>Fouk?XXyaTj^7 zo%dZ0ON`d?^H?4;JkW)K>Y=Eo^#~Pac*`!}uwz@l&>CRhBz^UHn5Wq1qZvY`n?)uPdM(_j(eOYxFDrv3d_} zcgs5;x@q0CL6!DuS1LW?bM!KzfA(1-`O>@mg3nF&ls0=r z&^_*2anJ>SG|QhvU#`bgIrWtP>i6=G z@qfVpw;1F5fJepF7Oj@G71y67@I=uoMeD7zwC=Ox_}3ck1K^ux`G&S=R$GQgtkY=J zUA|`FVYiIuKhq!ZEHi(4@@BOJKBrx4fon~(uC?&5&tsn7dCebW$SKlSpD7OSisz>b zj}l!$T&hGNmrO$oE zcea@LN1Thgy|fEwAMx=Mjtcv=jB!a=;}Y7gS#8G{qFH0emP%#B@QM$3&JzhTwk|8S z7=K*0@#pvWX^)BhTq8chiVymd%j!$^bB($*t1kPvS0nclZT8-Ky!yo{;^?6v;)}S= z^>kqniU_!O|#;LIBQm%(XWKnuh8Fw)!#Oi(8To@ z_jrkpOZT9k3#*^o$7=MY0IM&}DUg4kAs+F&YkvJPmfHJ_{hZqSq`l9~?>tpRM_=V} zB`&xM-1|%TOuWuZ4%^~N-Lb1!d*(8~8S$4^?m>HTv|cR#GJ2F}{5e+rGIwv^;K|1y zzru4b+M>-klTphvGnV(cGE}p#>l&`eFW%*e1@Fv4L0k{a^L8hyAy>u0OlNKOb4G!M)0E)(~FY_uJI9Fzqydtti1I9)6AQ^Pq9Rv zm{@uHSc*ACSaS--d0~z7Xrr*&XdhRxo)56r^U{7ZuUKAwe6$=hg*9eI`$uXmGv4Me z&u`U`7gqjN%eh*Tz}q}@@B}UGx}UDlzXc0eW}OX zdwihl%H~=kQ~mpVW1qSr`N;NAGXF8}(R-8l;TI^@kB{fCSHE^Y__9$e^y(&m+xoq$SKu72UmvWE zeRgQhW2?oG>+yV3Xdltz!9K0vxCgw`#{L?vso(2!``XMN&ng>-YrY2)_+dEQY+sCa zu68_c{me_YQM1};Utevy<)uw+_<;MCc`e6(VU7O-Q`Fbeg+JhPT8lev9H-O z=1it_9sYbs6>OJ~M&uN~)OFlV`}IV(&4P*=OUulSU$QDRcDEgH!c z$1iO0bKgo^Pa9h36;JS`Zp^KkHMgRSu*$61QCACj`I5KqkV&AQ2&Fs@Z0^)C+UcS9`O)qtggCNN8+_*p*ON38HKs1rA{*S{ohMe1 zeN0$=41NmBPxLoo^*0$G_uw}?)#vXqIPbzb@312*JBO17izi+Qe2>=|4gQPY{^Qu| z{28C2pV83wgw^-ZXN1*f_FY{sntr^;KPK%b&_-dk5p#;L<`ncLVf7{S4Po^S^ci9G z8Js&|ojbH$SZ$a7FUt6aFY58q)6dg3e9n`tx$(z+9Qu;5`Vy`$w{?AC{UfaP53Xfl zUCZ|SL|h}nx<+tL-PSop-~N4HV_#R}TnOu2pkKMIeucgytiFWvE3ETtw_~5bFm4EI z+(18ZTm1xUKex5^!@5FP>k9iCzT(-*LX^4AuhshD!W<;5IjG~xjjk4bV)@vr3q0dP z!@9BjMUhq7lr{sjdLu6Ll#O}?*q>c2?K4;NFMFBS**M9CW8K!Va*bX2+(n+f$Qli0 zgjELhYF53lDJ+|3?^f0J;(5!4A)T~4)2C}|-dy2rTI_KZdUZeM-q|a>VX;kezp(bp zIcr4tWqxx1a&6m>e4^1v`1W;%XFYH2$9(6u<~z)T!kPzBUbD)>et>0PuIDYE?aw-H zOj+-`UOATU9y|Vz=NqzLz3O+7f79I>=6%hY_oobMD_%$6$ktcHQRZU)_{>mzBpHB&<0o?pkTrgv;?fa^g!ZHSRm&#>Mfe z&34JT$!*O|c&?&Z&s9)HSY_Uf$|*{Jf5o?zPUQCfigj1y6W*xsZehO%#D2}%k9%IX zb5=lLqH zbSM6pMa+(Q#aWRYV(_{%;^Lure)UsuK$4w!-qQCrzvX`83hdg*y&&l`o^jGi%~3Vb zJ-FN>zR~}whWSfa^H-ICW1^JzJ-(|{9&JeYE^)jP?mJdSX&cuq#~S@HPt#(MmZQTO zQ7_dqK4;r<*P@kY#hWe(d}p3t0qHNT7BkM`dC|?!?o!TWV*9nnd}v6NaG%L8-Z#F( zC!QSVy0l`r*#7GUh?E)+M@se?_R0> zt0f{G?jzv!%zbXK+5>~7b6U~Z={r(y;(X5!*@7E9?&5DogSH^@_ z-2Zz7=K4D^=LGi>lxm8$m>+D54v{^kK^6_RDX-8Og zc6ZvPxd-0o#_Ber1Kp_AUn1mR$e>5@6FMFG^_t0hQf*=VkN9tp|5IIU&TF+ zX5Hh+zEQRG6Mm;3Y6B<0XJN$|>rBmBXCk&P zE4GMvj1_aNzdXuHeS_TTrCxE?j@dc<|AS=TA9 zcg?!q(f2f~@8R0ltZN@@49!|&U<`3tV+gKg&AOIxEePvcz?h&}V*;*g&AP79&o!%` z;~LkjYaC;d%NmO?wrJMaf-y(4#vELC!n*D}_eVo6^4Jr5<-FtWHvc03QD?hWJ9vrs z@%a)D)gQU!_XV-vFY;NKn{p=$(6(i{&Igo;ck#&!wT--2 z_0-mMNU6=;bd%3)9OIdr-kyu)$-ed1P{wVQvDXVbnq>$63(J4l5tbeKor2Xy%;UnE z$L-I}Fo(LWIn>@p&wb*5F)TeXA?A3&SYC4eL^;p?{w@Ri1FZcwTD}j+zvBjv8g*97 zRXm^e&(s^dO|IP<_Q%-v3v2&_n=$UOvv2Sp8IEblyR1CsV$GV1vu>WE6)$&__gpqo zLta?4E-u`8J?c1p-TK$Jl_@X;wwP^=V z3Rl+zUU3sDEj358=F>sX++y$dM|^L&%kCv}Yir$;KF4#&x!UOtbw%9X7raoFrdpP~ zGsKd-&v~oDPBACZOyM{0IhXA_^5Bf9SLgvB+wPaE;=`e0<-iv_ZGx8=*JrXwAN-6* z`F0g^qvzo}q}x0?bF?eO>wws?=K+7ZC9_D9Vup5m{xg0#ro84D7_E&={gj6_o-KY} zxgXGF=?gyK#y(NI@Z*4syb2!+yulXt5RIdB(`qF7Lxi*v|#J(=i`SS^zU081fSnCb!*R1`d zk^Ii}-~SRTzjH0uZ;99z)!7sk?;2-j^feoh*+#9p4aBBZi;WNej5kU?3*$2@R5aHw z%fvJ7-}y(GVgV0?fA$cwQc!|k;BXq#tPyCo`mkQ#v%7@&-Xp|3L!TO9<SrE_Phzy+Gte-EuX(gwEhBSke~+CLQ>Ph&X7}Uvw%C2Ze(fOIxDai8)qH}H zG*OWGAx$!~^S3BHbDYIbjb>*&!8M>cdvs`+<7(Sna&wo{@$mgT&i_rFT zH=gQk;D1s051;un_&gFm+wISP+m9FgoY?r7WUyiPA3k%-XT(;wVmrj$fp5w0G=%qa z{r0TE{K2iGqW0kOdc6*B^{8~Kjf2-4@~{fTEIas$IQF46Z+6f^m zdCRYYUcRf#EV`(K+33mxt!*}cGfk5GW}-%=^cvH2GiQrbF;|k!(?y@Yri{5hWSstq z4e-QmVTC4qXpz)rHnWmB|HD3`S&?MCG`8$WMjt~xf?$TH}HaejVx zbJv;!#^eIc#nxlp%@?r?jFxfT3`gt2=Dn&#d5y^R`eXB)F*?I6edPPLfB1lPrRnlp zDxT)KVeHvn*ZlnDm22?itbf$I>1G=b3i6_bsMF zUCtJyF`pf7D*fR$e{{>ALn-p}=k-hJ!=rU`i&sHjm{-sPgI(sHJptUO*J;E5ehM>p zU~k@~R0^YP;38vQ-5$J#_dFy0qHyUCm;RhwB`JjM$o1ACqO?)M;zh+d)kGxv*b@yy*)gOWO#e^qp2bWs||? z(x%Of_RqBd`xuKcO0&kvTE5kJyAnCfY+s7X@$>io?yXuH1?x^TA}93ZPDdJZ@O_ur z^owCAV~A;uA@=fiA281RF5?;#Y}Q?!%e5l#t$w%uCjH!}=H|%GS9H65*~X=P3YsHU z271N~E5AA2P<{N$f;_{Ea(s2BYe&=_=JPYW&!LMbJYx^jvka z^FGUb%?8n(&D;z2YANGx8CvM#;gY%zz&a`0Qcn`DS-Mu`#+azdmGwaVPSJ zzA-){FO~D4zOk1-|Hm=baI#u_>7&$U$M9(5m4APpcKs7~+vxu0^tYppmbaD)_``p| zA07T|oIch#x^j^|sdM-rF=xW%zb8tS3L8a+4wdb|*{HeR|fu5oYY#MQ$0-5#fE!+tub7GT&=hFLTYP zEe5VNV-c>kv$)nuEKFk*?$?jcY&O(*^I@0k&G16zqSckm+WC5zJvL@AvVGoW*vC)! z6O(3#uXz&wm>~nrYgbztALl*RS~TfvZj7624Dw0pd5)R5NLT*($4$c?=g^>kqhKx_rjf>pqOS;vU?C1K@s_%Lc^ye2TTK_SY zj&IPL4_G`|Br3PoDBd%bNbp^5Ot=_n9<1A(*C2C^;pHD2=ntmVAM8FLKHQ2A;>Km% zCMCw9P=jGWYz~uh8GjHUIUu%uB}Wx6f2Di#5q)qMw^qKevz7+ORSD z^6*7^{W;<0lY%+i8*|jw54{^~+Q(9RpRu1)d!MxTnfz>+Nqa<#Wb3_*A{A%2i{Jcc z90}-PejJ?I{FQHtzR#$^A9pQaekihCw67fKS*y${US2PHX^1D^x=NVwv+5vz=XeS| z^_wB){(cF&cTpUWywD zzWi0w0Di1%0WRCp3vKCIWw_eO0esS! zE_#!Q0_M8o6-?xfs{iF>JWEHNGoB_6_l(b0-aeML@~v)0U`{#psi++14Qrf78%^29 zJ|mY2`?!kryjB3~`O#R0h7 znIC}s+d@ISSmYj~LAek5=N}98!*kk+nGtZVq)9j5!}9>X;(X?F?dZ^qt*5P z=B4oS`dYn#S$OB=Kh|AeQ?%d@^;-JO$-fNWdQG`C#^M^$tZU@(tnNHXii7$;-qo}; zY@Z&xzM1*y;W;CuQ$v1!F5^+fqIA+Yoc~O*)>yKqw|?rw5X{r1bwMpnlF)4oQEujs?m9!kYO>B&6p3fu71crY%+ z6MrjjAA8?5ck$-uw&{~@W-z_Ke$)p?wlyE1-KRT*@?ythjqmH<1bq46&!6?qrKQ_n zlGjMsY+R|7-n>^`H&1=&!Xv)@)Q&`6((UVB``XMN&$5-P@NT=`YReAzm_fDs@ljP; z82QgtGm>??ugf+LMjP$xtJ0aS=*o~#azGh>4V)Zkvo9fd_b@a5|S_}P1Kaek}Qo%U&-q*mKrCW2><&nMhm5=5V1+-k_VHQ&pUZj>>Gq0H8YaoUBX>G(TqnMH=&L7+J%}$;_irJqs|%oK6Ei;K|0U*O?7=BAJ)2;r!CG0 zod46OuxY=KYnthbA^Xxx^d($h#)l6@xq<5o>mS2f|KM6St!vr7uEsTDTGt3^vB^kF zzI)E8{l3P&uEx1At#griRBvM^`qd%yEA%DP>PtAkM*siLuicJ){=&FnTH^-#iDC5< zto;n<g`R(~A3yc^u0FL%X4C%c;_UZ&{KJ?8y;hM!#(=O8V-JqqcHo9SaA>sN zZCF+wy}A;=`@No-X>5X?7-bSKs>Un#_c8r{WEIs1`$dq$XB<3I^w74z~`HApvLwK%Q zetgLgZg>Tj!`gA7@z3mk=O#Q?;ns5%lrgO`^M_wBmX8eMUgu7^>rV7Fu{hR;hU75q z_kh^X<^IXok9%Ijy5}7jvR+TsHNs5PAcuZ>M>>AyDdpGpz}g@FxxGyWyI1FM%Md>jHPF~@WZF;89Dn7GQG1^HxgxdDt@f!W$q}n(YQ3Ghu9Pp zVqAQXj`uxZi-+uKZ`5q`m!90WH+S~mh36E(dLZVno@4r%7akWgHni-jmmJu^tTUsl z(EGjDubOqttqE83_||dy8U--AaXw6+?NXEi?C+&!FwMVE~;-6CH$W;D3SB4A%eJC>HYGU+t#_vF=@LQ>0kCXuXc?v5G&J-SUo|k5ECwA z(f~2B-(MppT*kyZ(^Fx;UqgJj6(8BJ?q=)6lZQXnBkJ}v9(?rYd}Bd#L87lB7SFww z6pYYc9WBO-4lB=#zWb;R2}{fi#Wdyl3K!OcqdRl!9u4Qnl;@}=&e5{&gZ2E*I{Juj zk!H)!jE^YMKu_4+)LeSJH9t_kg%Pj4GB&NKVy62zTVI$xJ^xVrgfU^;cm2n*>b&sd z{`^$!(MF5-Q37+TZq2RE@?re@h9r9Sx5tbI6&~WsJYyU)e79a;ViRt3ziHqa(d9Lg@4_iJ`mJvDTijFY@}Alc_tc2Fb_6m1 zyHJFVHG^TT8DPh-?9_fU%D6MNj-Iq>q#2mDo9;k=SRNW-wC%ajwP98MOL;pbxO)G|ol__HtjaV5O3maBn#XXK8?{U0wk0bj=vO^`zQ+^f9m1jGc zs}ScAh%?3nxN?M%cLF*jt) z6McT^ZvQener`0@*cVjPQ}2{K19|ONL*%`%``&-|!uESByKiW_+t&8q_ma3Cxph6_ zI_2^@_4%6L!1d0p>m7YhxB6b?fgQNK_H*Leubn?BmurlkSYu!e(c}LcLvSr~>srRO zV9INuE3O5M3H&_9gr{d4i>Of%yc(|SWSM6OV?`A%`}tt>b6n%PyvCDUI70)8T$VpN zVN1-t5x&~?;%&{Dy@`pun1*~T@?$P*`pt|L^?(WkWL>&dSKwvMko)UkKWv)PW?9(0 zes+NA)p4Z$wn~22&4_r>XiU_)qDL*$`&UjgxM#e! z24(W1jJ;mi;nGgNn)zMuUr+U)|FEN5cF;zB1=<*hHewz(4^F{^tzLKnWLPG^~*K08zW!8(Gx`%Xl zrjao}UtXe+@%@f&HfU0W`>f6?c1<2)7U>nK-OpM^@0Z9Q_tM4qFrQpT$n#3(0h*D& z?6AlvGdfD2yl}A5aCLBWO8 z@UFh;P58+zKTEz0H_KKXYi!*xU)nb;`|g&9468i+$8&*y{YQJb)n3vlyWVSX6@GDJ zZoXz{cYbyGK4W@~*TT3S!868hGj@G31!Bmp7#1oxn9sRT(+FI&R)jSk#P9wHHV*u1 zCJ=va#s8?e$0*mbv3@;Cn3=nMq%ruxIjwoy0Ve$9($9DBv%h~gv&NR_C?nnFpGyCJ*7V{}jkpMn|knD^}eHRyIR| z^KqXXmo%(5bh+LrhV=&ab8G+q`)6b2PrKTGHrCGazth^;p|DfoL<-Ae?Z+okSpICR z{d4)Vv38a}8*69zi=K9tKO1Xj`LnThmOmS7XZf?Sc9uUIYiIehv38a}8*69zv$1xT zKO1Xj`LnThmOmS7XZf?Sc9uUIYiIehv3Aa;u>9Fr`{y|n#+T}UeD1AqE`@U|EPpoE zZr=x-gq%5D_rISN&g9Fr`|T?6@@Hf1EPpoE&hlqt?Oa0Pk_wknxU|A$6fUc9IfeZdF0XI}g)1tI|Kk3K z|MJhT?Cp_{mhCJb1=yJ@TuI?Tg)1vuMd7LnS5vsU!Zj4Gsc&8?c-q|h5IVpPvQOw4^ViZ!h;kZ ztnd(phblZw;o%C8P`+3LjJWxWXqCKB@32g-k8jc_@=_Q6uzzS9fj|L?ekfj!uJ%8SNOid4-`&N z_@Tm&6n?Dm6NR5D{7m8J3cpbJrNXZiey#8uh2JXtPT}_oe^B_N!k-lWtne3wzbgDq z;qMCnQ23|9zZAwFWB<_~sKQKP2iQIzIu%Z&aAFU4>C)xD`^6+4{@?v$QiYR&?ek}H zg}oF`p>RrtQz@KU;WP@TRXCl(=@rhPa7KkQDV$m1EDC2;IGe)R70#h>PKCV{&ZTf} zh4U!vqi|k@^C_HP;Q|U5RJf4Bg%vKMu&=^J74}oOn8L*sE}?Kqg-a=1TH!JZFPb%nXYl@tzCxU#}k6t1dpHHE7yTtnfS3fEG&w!(E3 zuB&j6!u1rcuW$o}8!FsL;l>I#QMjqX%@l5~a0`W7D%?up)(W>#xUItN6mG9@2Ze(b z?x=8x!krZEtZ)~FyDA*2aG1j33U^buyTUybjsV-&J3STdrEqVBBNgtWa9@S{DcoP- z0SXUPc#y(_6&|ASP=$vnJY3-s3XfEHl)`^0JX+x~3XfHIoWkQ3j#7An!V?vaR(O)a zlfiO*a$5iQ`ScVIW6|^9`eW*UpIgtfrzt$$!~a{a%<%C4)+;j=o~7_?h36MQ+T<;D->R-@G6B@E4)VGwF<9Oc)h}ZE4)GBjS6p4 zc(cM=6yB=vHifqQx59fA{zu`x3hz@mMq#(YLSaK;Q{nvzA5i$9!iN+- ztnd+qk1Bjj;o}OQQ23<6rxZS|@EL{ADtu1i^9o;3_@cs>6uzwR6@_CJzN+vwg|91o zL*bhW-%|Lt!gmzDt8kpc_Y{s-_`bpq6i!h1p~8<8eys2lg`Xs|R9Lnsg{vxDP2uVa*HE~o!nG8xtuWrY@ke~?DjcM6 zJ%#ahk3WvbyFC8jh6*=QxUs@b6mF_;GliQg+(O}&3b#_YwZd%_ZmV!Rh1)CKLE&J9 zJ1QKaa3_U3E8Iolt_p`L9Hwx%!rc_^u5b^9BNXnba4&^>D;)Vhu2c(OwgmSN?i(Cg z{9n~Rv~zH$0;!f=_0m}Er4FgN;wxGzZz7^xf+Q(*MK;zuJOpf=o+Ru>*19vf8ljV zPw^6#r(`YaiG#frNYU88mR*Frh>~mBQxb;H!|=L~wRrhQf8_g6w+?T zIJ%0h#4A|>oU33hz&Qplpj;1*f|ha|YVD5~O|E3)=>W1GufQI5(^DgCk6-x-A({hhnv-6-fiNTVEMs6T40j3kd7 z15c!-KxY7CfO8yP6}8lH6R(N7$<~pZc=4f>(GK|n#AwHS)E(`Jf{a4l*_|ehV%brz z%>QER*e`e>rQ30Vy3t}OudyiPuCeh*2O!5g4zL8IUNixgqES~AyUBs}bc@}9r5yAIY)FeYa8wR_a+hX6$>xp>NX<}pGaR#(Qsh^{ zv#s!Y2knIyrtb2{xeoan*13-BsP#JP&qHLcCA5@TX&$_0Co4S2Mp`-=J5qzBY>Zk` z(9}dqS)Vsa0r?nO$_%Kp8eTlt%yAhp--W$ye4Y}?jTfe-f=-1O8A+K2IuBlYcb#n^ zyQq|#pf{1rOv=g7m)T^z0Pix}O0KX&EH%#Mct?Wc5b_C*WR6}m87P$}cbTOE&!nkP z>r8r?U19H_ui(gc$m4Z;(67iR?0tooCVyhSB*Y=*XBOgkkMx)|*6d#NCkVSh356*j*@e?yvvml1zwUsyQ#!loiWmA;04#a?62 zYxa{(fd0v*(6=Zvg??e*@m9$x^gCXP#vD?9$LABF!^s3T5&2VeB91vlC$Kr#+{n#g z^Pt_#ME(>tQT7yGur`qelMjf(d-j2qMifeuk7!wGG8?U&jrw0f&Vrr=e_liWfcyb} zenQTMoQ+y0Kt4jfkH{R>1nCiJLgt~?xu~%TaYN2Uy>ppBYJykxO@VF-9puR!q#@3^ zEW|00>OszA^_(HjnXCmU#CeeBgv<%{b9#H|AoT`&J9A_6cKSj3IVa=Of{+EBlbDo+ zpeM0H&U5q}E##E16)uF&Lr6jAd0NovOQkFd?MsU~gWyL|*a#wi&MB~SkWOJ!*g-lM z7IJ$m7sauY*g5*tanfw@*rJMvE&3rsQ`*_;r*ywL1(fP zG>@}@v$?aSvo%tCkL&>5-r2!9olR#QP-;3#%|I&PoWW+W0?uPd(Wo&GWC7Unfj&Vy zc#aQqhT_;z*f~zy!oqPJJp*zE%6}rlksOg-QLo#7rC1|9AUb3SoAafIRc zCyw^cj?mLtN2IREPiJkNU9q)wPGwV(KTfB@>NGYD@)#m94fdx(?uXouNOeZpsgPZu zpE$ZWC3itiQb(lD&Ql~D`V?Mrw#CuPvBfchIw75o%}6iVX6To!k0Xtv4|D^k%%yZR za7uX)oD%Ig$dZF1X>z1bcr|fV=OQL4VCyAw zI_5y8M7}3pC>u#rLK`d+IRj-5vZJgaWJ6~IYzYR_Qu?RJxz6LlEVsamJ)U?sW*uk!~GI*@LvpA)7yOxnn12=ATL}0)-7Yh*UzVPl47_PQgB$20xaZMo0&lNe6lsctJe_8z}G^ zp3~E7L`Zc8(DYcP84yM}F(W*}k>E4Zkxn0RBrZzd0{?f5I#jua6r*tc@FSOhZ`V`@X6W5Rz$h!vd zE0s0KyHe>%lhtc@N>(2#*HnSmK_9BuQQ|}OCg^npQ1C0sEzp(Znll!t-cX;TN#IIyQ{4nA@FvFh zp_&5jp*oa`+EPHbkU>=713V8vom)_H3`)$4(ui@PfwMqo(I6!V_<#f{4{)`0UR=BV0QvJeF(aNMQBp=F z8_9-?4YT2j-fT*Cfhaq>a#TqV%#P8_p=8I^!#VJrj^x7i<(Yx$FzUyYT#$idcs{P& z$5U?Laa^{T8?gm(@o#P=C$J!}Ag+4cK~kwZ$qrn{zMCwd<<)J#ZMYJ7o-!ZTd(K1H zN+v5)ac$>hgw13#F6&HIHscz~yttM*S(yVm2iG~4QN@+PWz-U&<7o+1aO3HAI-c%y z;w8{PvXfq-p`ZfSkw6kk*OGN)nX(q#G9{Ewpk>r$$^_&pqfS7Y@rVgU9`U?ES*8S% zY%0pZ)u~IBEy`A9J8-+QgYKZ)aWU@>`jWiD=OrLK?NsFm_=}8()_R>9|JC!|jFHlkUP(|H=I7QuplJ}tOS7Z;uNu+v(GEbt^V(NC~ zFnx-ewkrak;=1RT2qr#nQ6p84l0Zt;K%@zz`+-l%e)<;Q?Wco52ctbp(2K$NZiy2^ z$r2@yhT{7lN+|LiB|q?dlzhj9_InV%179HS1=*tltZfdQZ=Xn-0-gMby0wxV(jp%1VRu9rQA zZyTty$O+^gj`#rNuBg<<#oK+9iMX=353V_0Li*xq2`+E#r%uMFpIT3wi13>ZB}2(X zr0b(}Rfm#_z&^@Q(iNqMr#DJHZ76wz66)Cu69$+D!FU(-47`Kr5-fPFzHN)kSo+ z6IC*ss-y>=RP>++?WD|G>xP8)+?KxTq2AdOLPXVl&q zwRQkjQ5yq0sO>>JAT&kV#%fiq3HT;zWvwY_Wt86(IGr|CYXEC#GiX(@YYaA}Ay=3_Q(kC@pgt2@GMjBPj2>d4cb)&f>X9o@iH)oQ5@)Kpay=)l$9 zl~K1qrp_ZZw948%^tJ|&p|1jKgF1i=SQoSwP;j*{kK$5qflD!Np7>6nJI2aa*++K+ z-_dNEuaZs64$Q9YquI5?b@1!K?cU(bV5_}=h_DUflE_N@3w0+c1xc2%JF6!|12r|){M9C;3Gu>n6XL0PX`b2->ZSce_(409oZ2w;ywaHn z?1M79k@Lz&T)2K-=?3hB*!GC;i};VkPl;3f@a-VgQ}a=L6i<}sqcp+gZu<|X<%uje+TXzc}CJ`&p^{?ufhMMufhGKX|%lfh<4;f%e=I2w6QZLC%C*?8uThB z@EzLs4sH90@D3%OSB9xSXeaFpX-j_4FDUH?ZA+%opH6&@=MUsHog3|y)0ATty<)j{0U)zpEf)yU(9G|TX`8u*ns zlrz9(^bGxl%e>D5&(O1|?H9`bfakNw5eZC#8VajvklPKo4CODQqJ%W+S>RdZFQ87P zBj{9GRu$NmlvT^BZE-DlSzIUH6xft3#dk~TdYVC9PnXi7zzk|pTz}nxcAy1GQBWVy zg2ac$0pmzpnhPP0qGV7@p&d(UDYXPC1=^I9Kx>k0}laBhmaO8aI&JVw5TnO^OEjKz)8v`Wj(0C63Dq2xE_~L zi#mz`7b}A>^Fnq9shzYz>S$mK)G}JFptc~Rae;OVQb8SzoC3v#+9PnS_F!Cno(0?_ zWrTW7xdto(T0|X*3)hRNS+$W$R_zCws{SBZwW(^P@&lL8M=Dd*Bsv(SRX{BcEs0hD z_8>`A;8*IQdZ=D%YvO^>T(PJ;)uJM2i9k<7ot1aEBH_3k2SwBb1_K zgmMSp_fkhFt${^JYf=<>2ck?5pojWd`AR=49_m+GjC@v#k*;|9taPQr@aalxs>2Y* zsegfvL-yZ6Dn`N|PanbeA$`EPlj|gh`kX$e zIn-zLCFnESOnd3XwxI7xTdkS)p5#~CYFB{oNjo*abA;PD(NArsepLDpKeadYQ$?BX zq&G_Kjc3%4G3t%h%tDxs@p(zxYS|If7T@-!ZB;+D8uE)Ws;S;6*&8)@qsIIg*RRxD z^VWKU^VXV!_Ewu~Z4p`k{ZK*+%|r78R>PAA&_f%7QiiAv@$n|rfG-tq;*Bfb+iK{E zQW97awU^XlX?8UheHHiu)B|M>LT(Qy4$^w6J=H#0$0u zwhi{Jj`~8W1O5fGHmJbN>P>o`JV&nUB#hpM-x8%T!iex=7|Bg@!K=wda|3hJ zs^qMa(}~|mPFh0yhUXI6B=n;!u!NQw<(CDP)t-~g>T`0FJ}39+O?nUI3cL?`AN2^# zfmS^y`P6$zQ&zi3E&@w{me7iWo>hu#os|ltr_vMnn!ctLNP6`(O|RZX-n*dpQQlpI z*G|lb?_Se<>J54W_?+B8saFv$0xy#0%2nE2xj_Y9z;`$31#%wrJb8uCQ+Y*uDzE7) zlyC!>h_>Aa-bXEI)kI(gl2#SiSxJkS&PpfH_aqT%-jilp4x|y-OnXLK!3Gpmr>esh zf!#s7tEGs*HlS_P!bD(8(3WatCw2twsHSsbNzjsNgd#8_XeT8?$*6WhD1>@DDTUN0 zXoys7qA|YEr>vL@1<=C-s#zbUax@n<`(F@kC%##Y^d{ zesQ9gGMUuI(_}IgRN!RtOEHwGz@e(4{8C2IQp#vDijGxFDPz@XP8g91hw5 zVYu2r4WaLq5ZXXJK|`?P9FF~F5HJW&0^i}gcZx_+N1H_&VBgmOxhrXPG=alW))-nz z6F5p8iyhw>)aeaw6s-g*a1IKsc=2A*Yla2oFgPd>)cK_&g;0 zlspJ6XmQel?o*1BvY>~RvZOe2G^1rnInoTzgMVle`(X%1j4$$)tf zc+WW__sAWR3F)GMSwOQOoxotFHH`%yti*!PKxQiElveZ{S|o5A=r&~q+Otjh8}x4_ zH`@2NVu9vEu#_mYDIYMOq5(A}6Ux`{82!?Dv&5D>Irrtek`Ee zLmLHBB@|M0j|dD^?vnJNcQMm#q(_`>VaR0SFI}{(;g)d4N4`8)Yr^1-F*I16@nsg1!SzP$#Hw=_k-nbPB>u z>}02?GqJm!4UAGgAz2eIY1sLy|n{q!)H>3 zR3?>xl}HZy7xhpYDSy#MNXg?y*P3uSMYGv@`rqu=S zrd6hOwd%AobpyI-4M{`9y;T|_*K4IF!du{5r4p?~Yk;c(u0N@PQmfH^N@c2R{gr-7 zZ>2W%2iITm*ZLt0B>j|uq%u+rB;`Mx_z(#k32XgSc*z;bjT z0i_jaX>k5p1z;DTzgC-e(fqa2N*8dYm2O%Wt(#UK*acXD*4L^4E6^$^r3y+cP0OIP zD)_Dpp1WxSNPUDdNH>5~P|DB>N;xN%1nomT$r7ymU7((17hSG+lI6-0P@OKJI_=}c zaHQ))!<7Y~3zS0$?Z_e8j*O)OOVF{j1TE=AA5xO~kb-#fAs>{2^aIwRz?q;kA^mPx zfz7cJ>mxMBx~-2V4?10`k5xP!t9cW!Ft9N6#%|F1WD{EFj^Ih$X=8Anqz|Yk>TirT z9YU>*X+wmuz_F;eAgI6wp!HE2%0M{=%5evZwC?yc#P{w91~i008bDvv2VWnwBFRfz zX{ksm(n=eo3{qNYgbY#$>4Xm<`Di{$$PgtT9irUDXNWQwI9Sn$Mg}WQHH|dYdXp1s zS}lWiLd~EZQI7!Afu_@P;ge3gsN~Xu5PL)oQe%`O2q)ANz+hmo8lVIyX^}HPxdIx1 z*ajp(X+UC?Si}SX3(zaz3Q!;IisGZC#m7e*hP1 z9Z5&!3Z6PDmq7(~M4M7;2ED8lK`_wnB52_?+LIJPZ+a5(+!K8gPq%0r#NMLepttZG z4nCijM~eVP(2Uwu^@_R&pDXG< zauy-`5mN;1YXbg?+Js(Fud1y`6Dshk+CjOBQadPn)EL@9X+vV@9+dt>i9rjV;5n7{ zLnnFX%^7$;56_WY85fxsi-}(mId`PJZAxlS{Um4K;NUK8cI2+enGkhkfq~D-H05= zb0cz6Jr3zPiRTbi(N3zzfFbH82bAW_#S*d?LD{y;PYW* z@@W|{S_d$vCsD#@dJ?$_+DE`2L>)vsj#`LTK>a|b;=JnvDWHneFM$PAaZXkcd{MOk z&e=xbG_5FTS)8TSqIGCJr4~XBqLW%wU=31})>U*T)}(cmGQ^M6pc83XS{|RWw3$*K zp)s(r(g4^%sfcgO(~9_10XGroMMbE>Z<`0k3Y=BssAMk!4| z1>(1>S`+-9wK~E&wK~FRDliaqG!0ZYg4+Pxpx#zCBCZKirbZpfs56=RB5!KqtBuA} z6K#{4nuuH*)lJB;*@?H6&8pIR>Oe&qEZm_x7+MSVwBl!)^dGA@muWI^NauDaaEdr`NB>7*Wj;Bk@xJ| zn{2{@x90U!m5k-yx7e)Pt4!B&T+4S&k8(^|4$|W)n?LoMvR;wir7zs2FI@Ho?fjD- z{o=A;Xb*R3&!6%|nazrYv&)4x8?Jo1ug&oo84cL{Su%sp1_?}j|v zE(c#*@)^6+a-p+r_m)MnEBRM&+QT$P*G*)Vl!fjUdRO9&PCsU!cOK=H_NO+6ok(D# zR-NPR!#C^8d=pu%zW3liyx6&9*7ft|fAuBT@RMd}x%+JFhShxDO4H0%FoK;<-0sZV z5Alz`TD;{{f1~{A1XiW|QBHO==f%DyU|vq}|Bh9qdSPtdt8IM6vFm23{86mn!A<VWvdp!`_Zp-9 z;@I1#fx7G1VthKH37$I5k%L>sE!jA0<+|DIA_ri){D2K?Z~ zcCFRfu4q$RsrMK?9zSH`JYSnwJGxvuH>-^1k1Ic5={KJ>u)cJ;zL1{F^f8+^8<)mC zWu4a+FvR#*3=3n$P41M989QIH1Mh|z|J56=b0^oP$Q$<{oV}THQLH;%t~;zR-F1DH zeVV|0COvZ2CChQ`yC_H2>pDk%T>_0>jicGSQI$-rBVFn`kzVRX*Lc^ta2+4AWh#Gz z>+A>LXkfV3i?ysvJsGusJI|dnhTR_?prc+c>vgS5@KS%e%A{*KBF(QGDa>&wS=9AM zhDE%TPuI2l-}Ni=Le6!mV_nBVl;gUlW#NprtiDlFZJ*=mUg+zPHrn_Jpby+OO(Mi z>mGZYHg2mUj13u{i6gHr^ER22hAa9lHoWi&6Xh7P98s@Kk2Ho%BjPnBnjQOk#VKQw zul8_;p)9%223G53y7B{dW#ikuqu4vQ!_M^A)|&%H(8 z<-36&c^b(|M?MX$P;skSRE=RD(_iICZ^-nKU5@c?IUllhg_$v?S_p5uGnUow&vnEb zG9GK$kZW1=G5lL38__D<+0IB7$u4z?LzYgUE-3IG% zZ6jFt%)7kdszcmo&12T*%t0M}(Ovr@+brr`dH5B3HL9Q9XwE5qyhI{3@f_QU2%tHRd9{oL|g~F6ZU?!M^&oJ+bW8n=q07&z!oJgYpeoz8ad}>{I7HE4~G? zusFn!HUi^s$a!>a+ma@o^-}o~*{hKzM_s0@YglGKqtKjWcB0KW?wS`q7?(a+!!g}B z4M=1iKON*~k1qR#Ht4bqD2K~(Ty=$O`v2&+KYCTPQ_h{My@P+nr7sGdXs+8I!KN*b z;E(}B%7Dl#=lb}~fjpnzUG{3pbsg)S%k_?UL&hg{@i4#pgfU--#^dv>(l7bnWoef$ zG>*FW=CwNAWtR?raIYMl*>Hod2t3{0KziLJy(!Zp4VP)E9T;bfeRrSvc_g{Fiyv=} z@!aQ^A;@9_1 zFjAf*v8*Y<+|{>CoppmzyJj2<9JJcGpSl|m?(|{AIA`;D#9p%7{OPR$deF=}EbO|) zU#090?U?gEtDdlr5A`{0_@qx@Wmi`<{JI4htwyJ?UN2rbb*#N1mhBv+SfvL{cJB|L zb4dPgd~Z-?W5Uj-?8eRmMylNP&8>&R*;dD8-a8dDjeC)7aGJBcR>!U8nle$$r%#Bp zU&qTtvofWl{uK}ZgiHSfYuS`*IeBPnqtMWJ_Tc1YTo!)vm(4+Z%gx4oY3fAwXx>g9(%#+JsVA^%#OC&z)#hXPz+Zcv z5PjNB3b9dHeazOh!4vMJMuI4iLt#a7}-BOXPqkk#Tyq~ug?mL zVN>5%=6zUZL7uh_;y(dNJ{H}!eX9y7cA8J=oOKVw8pI9v2% zfwP@WbG%^QB?I}Qy-Und_3yK-i?=!BFXRemCufB43sslu-R}&CGa?A1g4)Xg@iT9jmsPFL-yHxA_{y-emQ1w&(DGdn~x`Rk6SOlNb9w zL+<--51FTDZ<)xt`W)kxPgy)MIDsu|w?yA~Wu6f@D2^3Axyf*qjbjO^j1i~f+4V)g z_chzGpY2ul_P_e#D*s}QjDy^g>Nc-#Aa7?*TVjs5oFlZ^kZs2NnsRo7-L&XH>y z#P~>kf_XRPyg&ZLjn)ei*yC))^%K9+ay4r>JE|WP{){308Tdk`^o2w@a;^n0=jC~; zGe*0QvFuU7(mG_rkg|dG#pU`6y&Yr(SBzo#lyW-OnjzQP%7#67zEKa@z+9YTjhJ$c zK(bGblvws_PCTi=o2pW3D%1)*GrT5 z5_-C7_gU7*`-HxAm--g^flK`$>XPfxtHgYBwEHX8cW$x?JaIFgorn&2T7<)TuiO^BH)R`iU)VI)kT{-R~Q)kEXPbup@@F zBd{-qv@a`8d3PJH6) z8+)3Su12%0hZA{=%_B|U6*2HV9z%~7)T0(AuvB@j@c7b4IKW4Dg6!XrwqBDD)h_K7&G)1s~A+!gimEi zp9=9@#_wHK*f^FaoSnTh$NYdH8`=!8e8}ZJ?hEh5FpsNW`MQF;-DelQ&-R}V74|}x_CoBIS)={t+k651n%{sZ%n0 zx8yFz`f``+t7h6|#)M%JtmB-m=EFBf-Dgx!Vw=l{Inyunzt6&M9_3z#W8A+vVp#C( zw|w`eEyj*%5828FHF^B}ZAPYfiLA`@5T`#Z)32^NOaJ5-%Mu#j+6cdu)Z4~@q28pu4aj0fpg<9Zfo_4m9byjyx%!ivR|RSs_KhBhqL{y&+(J9 z4!Hkv#ImJDzVm=%#r6B&;gd|g%R98sZ=6oJ&2pxl$Xh4JxqnX#V+~&a_J^;`d&=If zIK_{(S?}KVd;*&icb9)p?58Iky3Ib%4dKlkwG8i9Pne!(2j7-=s*x4)_PA<#F6JfP zhJO;clot-oV0gZcXTzpO8bY?Oe!RyzzZ%P@zDsf+**lqK8+x1j=UZp=D;v%Byj)^- zntaOmXL&r!{BeigcXL5K{`5VzZp?75zMW+>LSLGkXWXNGZT)MeWL#%=jl0^5jedcK zaxM|$R+Eq37i8@F8O7$Dz3pD)*=}Rm*+}O1BEPs(K^ay00V~@1J})-(fKjn~G`oH< zr7q5U4SC*s`N}~(IWCSxyt>SHCG9X4HjHCgnw$y6Ij|wmfpJ!B$g|>Ii}xBzN*pT^ z{Ql&iY20{|C7!L$m0sWWeVZQCJBC$wdzF_Odd#?1GM=S2o4flScKpJCx_6U}y%W?j2YOG#sF?4CwTfAz+5M#=wIM!%hZuhorxzTcB z9P8aR23NSBHKfm+pBIZX2c#J`&4(Ji|DA4@3GM+jCqt7B@{`->weT z51%{hJoCR>p|#$$N-m?>q6ci*(5w9L=`BW%cQI^yk!qpUhaEGjsn}1s9d=J{7i^rV z8OwS$t*e);zu&l$7|9k--|7CO=Mf{eM--d&a;bYIwU?3J`yn$M9OY|oo-lknMYD&E z-1VGcmGvdT4_Vpp8itlqe!0J{`G5tlzt30nedj);NF*!zD3<@VYQ0ee zy7#dCJhXT}f8+VUB-Ub92tTqq#JH0^k^M?FJw(XNiC+=80y~aRYv7~befOAsTz!eV zp0OM)ct@|lJ&KL*e3@TqHP9G+IF@~QbBM1vS;FwB{fIT~ZSyPnM;r0G@g8C6E~gCl zxO$KI_+R5q@*Oskzeckox3}qdXJN>97NXt~lFODE zW!}fJ4F02efte?C-&=`n)h>%0lMfni`b4pYx7z4)7Njx8&Pih9UR~m!#%(sztc+yt z7nRV7bE5T-eGx37!g;=mawBzk0^2gF!pSP@P8oj1ai;g9u0ADuVSP)P7*_gIG~ZJ0 zf>H5c0-JR$mp;DZGQAS)?9(*&c=oOR^w23!*_b`%zs3+}N`^dB!aFrXzEh)(PP<2q zjAWCFNAdgZ2OHNWB(g@$ck?49_qw;w5XFLeM)1q+SLs7wyARd7Ep(kJbsh9osMJ@` zKc>__(Cwj8x5NI1O8X0a8!GiJ&Lu+SxrD3V3%g@Vy90f0N_`GJZ%RE6{clSB54&JW zyC7sk+9TMVP-%ByvqGiKg5D05dK)??RO%e)87}n<=E9V7fw48^*kT+^ISv?~P&qyr z!%#VfSVy699f|hHHG;KZ%C#WIO3FF*+NRuVLsm^GtMD02=`+9wFr^Ow-^P@_4SWn! z`WTQ0F69C8!=?N{zi}7+=6wGp^xNT9r?@YRW%X`$(4pVB)NjyfT0e>(bGi1RAGp*Hu*;!Rhlu%-x&``* zOMQiPXUcU4J-!wmVe}?N!j~JV(P3DvH zK4Br_RvYjixbz?3FLCKF!H?q7kAe@zr4I%_flEID=S5te7s1Ei(#L?W!lkbQpC?rM zJn)6M^o4RIEeRdd_V;<97^{b`qL?)xiVtYBF|>M86ifaQ0pDq@x%CFlh^F4=2Quz4 zvkia6qAvH)e|m+Qefz#-ud5F=@Gg?ecaeO@9A34=GuADz4i9g6lxJ)Ih^5JxUB7#O z7oT4HG0Qw>yVDOW+w~=*Yr66${*TQzQ7@QZ>3)3c`1-tRmltfp@M8R9snmR6^Or33 z`mDlF=F(5by9_ShWgMtfn&(>Zl0ExbRfpZ=(r&`en$pg~E}POW4%8&rJn}d z9V%@%_8q3&cfeOSrLT@Xg(>$Gu#a5YN7y)1+Bn!>F6}RDJ(so~wt!1p0Gq|7&4OJs zrCo!)*2zcQtN1wYM{ej5BeQ~G=GAx-H+!Y}30FRiE6;oc!pY#PJaY;KK9Uj_RS zQ|@uFZwi(BCJ`_FdB~)@lu5{;yOcvQR#HA8le&~i_%>YnHt;dH^fBPuaOvB)rh(k* zQf?v7x|CSwqi`=UITmKP`MYz-r1CU zXOZUbTH&l}kKNq04I*Cd#a!pbH6D8|Q|`I2&obpc>%Tfy{(iu99$nu@U|kz>UAyji z;m>pF&%-z4(l^6ifXlrA-uoN!y+78wA=f+fgCX?;bh06JGWH-`?m?iF4XKl%s|~5E zp>uSpbFeqza&Llt4VU{G?02}_??9g$QlCR_8-Mh6vyFz-?KrJ&W~*v9=Ewb)>nWGRSexp-1#e0o zX}C<2x4{e}XP5h|V%O6qcrN+sUuN^^e#vZSs)Ibp+-uBY>q!qQi6V7h;s&!clZXQ40m*NdK&Vh(Ndl+~_zh+n$h*jRZjo-H~b%sXc|qW{?R zoZWr1nooCY%WvI%#%{D5DdJ5Tzp~5u(1O|v_Li;TOL`6B_v=1qbv>%`oKGh6=QAI% z@AFsi?$4I;gm+I^=`Dr%=e+y$?q%+?#uw)E^R<_AH;)H+m%WIiZCtkPZP)Zh$9VKh zz4EVjVL{n08UKt*U@v;j(i;Z!Fa}(_$Hva|cJMzb{=s_1sGWsLBNVHuzNr8}-!#;npYtj*wAdi@sr z^*T*b*gZ$A@uqS^<96~rwqe{qym>-ye)?xPJJ2VH_sxFHID0&Xg*SKTKVNbq?}QjO z*juA%!O#S@9)m;liRN`vmU~4!=5J?cz0&VcW1%o2%c+L6ifeZ11}TYkh>iX zXU6SK9QB&A-sV0Xji|y&Y-k+bj~96!dVc9`Hmsj5#`Dh^^{*69^F-Wzwxibp@tZN- zYjPx85xPkH#>tSsahhFkUuYQ48>_P8d{W7*hF_`YEVkQHzM%42qhD$K24i=Wd2U<_ zJ;S;%_M!hC4w*zhf6FA=ugmsBuDFydmmfvDi|+aepjZ z+hd$@pwdn=d#l^{J?&0jZ~12YHYJR$$he84FQ)8^(4|uMit!;^B3O^QXPoC|^8Fpw zg(24kvP5R;>p9k!yIfz;&wtJsYu5@j>ZM6!em$B9c{ZgyqmPE{{h33=vHo}o_+sZSuE?ovL*e0}*8&6dYL=c%gi2u;iw z!@e(g#=Cn}b>D$A=W;uLi2icf-;l8__@WDmEPKo@J}jb^dmP>`)XeycKiK@ry>Mg< zo6`Cd$9|v7{r>2&1$9y_hIL4J!9TYyrrY5$?9GgKLf08m*X8;<-o4(zSk~ywC+@iV z&b_KkENX#80&&$PW)?9x-ez0Gnyk{tU%|P`qPzUdr!{(}i_z@T^;>*q*2VhHBhl>ggS-Fw zUF(R?CG?-+u?+fN=w3tW-hd3xLNBzAU|q3a*q&paUU6a!YmqaNFZBP1&wGXUEafNg zHz$_q8&b!xTbU#Hyfn-88hvBf;c8L*<@m|ETW~bn5D>-RpIL84rj20@)`szDJ18_3 zXCt!&;7is@D_U$P~ePy*$aG zOS#mg(6L^evbA7H4!^p3%Yn8q)qkZyQo?!_IPPXQ77;7d>o9 zJq&&8F7++!HJA1pb{uQ)w;jisEthAuu+d!FXxMHpZ8zSDbNNnu$Lh2E4SpLu;zy|d zdPf1H>?)k4=h`98thhY0!nqcg=UR9d%;mda*hDUEqUXC)JgF08VCZxm_LNI|igQ#h z&rv=09^qLFNxA?V?-TK#KcsEhz9RD;nm>)e9%PRTi z5bv)I`TiOl6_;Vkg{UJiT8r9Fk-Fr?nVx-jLsfc`h7 z{>Pd!<(k5}3zh2*>)Md(8f!3Au0gC>Q?6O8@ld(O|D!kDrQU#k)1`jH+BfCehpq^f zx&pc-RO%MUyt|ZntOZ@J1y}zZvK{Io+o4jnakgW~vmK15A;(kf7o=Uryclv`AoHe_ zd8`Fft_7SU8S)$nb8X1EhTmmMzYAl|<(NaR3@KNzN2at#&@+bAGdPbm<$0`YUmydf zlmX~=L+W@}nv!FxJWzNdo>b1B1K6S5g?7vUY&+VgzsI#07{L@dj?B#L7n zYRG*k>=%6CKlaOz_6vT3Dg6Za4}X5k4I64m8=ARQWj!S&mK7?HDD12u?JWF8L;8(K zW6CtHzpF&sxNKY87=OM>k7Fqh4~f5h`19L5{ASXWznMh)b=m$3O*iPryT`DhpKf#4 z_bkwLrqp%Nji!rkG^K8Y?lq+Dg`PB}o)qIL{R-$_Q|ewJ!_voqem13khCVl?J{Phi zeHiF-Q|fcr1ykAu*aCNH3tWGb5Bp-e*cVgU7uXs1R^Bkg|wQH5P zM)nC{QzCyjz8fo^M|`Ql2cZT95Gi7vK5lE=R$!SFD8-JKG}flx-oFc44SJ z{*Wi5Ph0S?;>B#&a$L)IO^5DDU1S zuQ9Lm?d%J)GT77Grf0VcmT=C|f=}IT{~w>MPuG8#GiFa_vy0y5?QGSa*Wi?c|M0YL zR?ASYR!S!JBYQi0(_BxZQL8IFYQ$uFu-4OfnX0`#^i&2rvVJi()6>)FyV=v(p0bBl zJHB-sAyYhCn2Oa-m?E6RgS6>!v8eorWRMP6|d&+X< z#duEZwA@;%jkfa-D$XjmDs9}q(8ykzdKEt#SfABfTH5~aSY=fw+e5$o3w8$Eb&mF(-&w0bpkfd2*wtCrwg;(L zaMezBNXiaJQ13#H=BI}`XX;HzMUcGnG;T1H<$u}-qkvW#@Hm^PVSOfpX{B4&h;8O=T`Sy!v`#H&8 z5MIOXefWpfpf|De9Pes>^vGzvDD%-N!~a(~P2UDuYQ9n^svq=*#-%73{wK+UR|^G8THY ztXuc@C6@3ELYk4Z(UN}DlMpC{X>UYy|0h5GqS;K(3|nrq$R5zm?K9v%u!Ly zQHjaiA?LJh$_{H7#=k4Z-!*;n_}Z+M@fLpor83ceDd%HtmF>lP3B-B{o|S=#^_7J6 z<=Xx<$GbASQAVpu*^k!$Yy2yYYh%{g!dQmjvUYD{h)W%s_A|G!tW1R^hH-qVSUXIvqtmrY*;RVR8~+@t&s^i9+{W4> zeRrha(W^bXTAs3mjSZda;`aBdwue&3DKpLI4q$18xv_} zA&qEHkIv!N!TSB3GA8*-BipkRf2FnS6@72G^2_IZuy$QYV?X#*&6z&WdmnpR+HB5p zUZyX}N(Onb6W?z-4vooZ*UjQ?x4Jonjq+L^ded~{{oZx3svaZulGp86?N%-9c_q&~ zcHDYmefc!pUU?&r)!_Yd>)z6zjt+}++dsUE+kQ7k+fQCFYkSVNR+CmO*j}XXh4hEW zcza6q!v^_SakevUp?C)w z*w^m4buj+kIhDhI+i}aaocqby?VxF`?KhbZInT&sAD2v>=NPRQV{XB9o#ov2?QP^) zJH`HQyexms{WwR^dS8~jBiJ$9ue}{T=ctwb^F1qnmHI3t^+@aO?SfAGQgQruo+smE zXPNt>6Rf}=ee7XV=UKf`R|VAN%73~(i8tuo(azg2wLK%sc1%cEW(Cgkw?~sXj=Are z*qLW#u@eJE*w1rrb^Mh!mw~=8(U-AVe)mPTS&YfsiBs6ZH`9#r-%Hx7W2>_cZY!-u z)*wf!YJO~M>TeF$F&F9O{5~z|Wj>gGgn#}y*&ekfGi&X$%TdqpuwCcWwVdYPOR|$F zzj=X`RvFKA4&S9M7%pI9uo1Sj5!w6Yv*kRxwyk!J502q`Qdx@L%`UPgvpuKHE_mV| z_IUleqh!}*Jn_Z=+chtIu#?gUGjF6e+kD#0XH=PDqdnGxs(vg@ns1JWjn-Memb752 z(1vyTb!$VH-{oLl?7?Y%&x>pN<2{g2ckr*6+p9v>9QdNA z#za_`9T8UdhAnK!06Pg8C=VGBeUx*Z@^q}-r&e0)*+V}E*1Ij&JK~v)Z@+P!l_gVc z`$gHJcB{1a94G$DY7PC|hecN%ZAX?);4|{hwaV%h*qV3G`H!sbZ0yE$jv`1O^E_j@$JwEif;o7{C-4UYf_e0gw2sM_lC6iw zda^rJTd~!7A}n4o%mJNX3;l5Fw|@A;Lq9lHK|g$een5I#rg!UF(H`OJZdd=go`YwC zKmThzKfiCMqiB)BeCPh*PWkse{KiOEYqHQAw$K}oEjRvnW(_u^V4!1PLUDV;+AQqa zt9{mzfChH2%oEu5FTU2&G(8P%&qTH?|4BaQOEIUXwf;Z%ImdR^-IYyP4h<$*@ zIv*-wO)lhT5BspsN-Fx@k;|`zT_t=Bv--8QW@RYr$g(bgt$6v5VQ2ikABk+R&@m|M z7<+ZK1jpObsaZzV-9Gm$$x-2WM%J`(O*W?5ChOetGLB|rhuNo4*d$%2D1a9kS9a%ljo>_4W z%h<7^H8ERPYkf#o)~mr~hyRYc_Pn6RcA=y!R_)wwHci{g(c^ki$B7|h?fPFQuzQ`) za)!84N&)7odZ#c!A{7oE&Jl;8TZ?ZTIi4>Nk& zBLg!ymVfbO9qMJU+iV?d&w(Ae06T*HCX@S3udu?*dt$P6cTx#^QQOii`=H_0fc$mr zJWa>i-95)xZK|B*LWgwgmBHS8qP^JP{mFYGZ)YaqL4b42H}212ySugdS6^J^U+AKA zb9&lyr@eHBQb!Ix`iqdm54kL&)_)sEbHTfrg5Y9+?% z_^O;%jcGmkcZ@^s8Xv5q|Fa{d60=*Yu-|_))We2ux3}*9t=lKJEp4~^-yFHNLClfV zC&u~=R!_|PI?Q{f!5!J(d%`WZXIrde=QG(|M%=Yp-Kb+f{xqCzx%u0lS^fQ{C48Z# z@P%CGT8z1zm$?-^*=D}hdUZaFkPQ~mXpGgh>RFEUWrhB4eJ!6=nXTBk&GDs5X?tq< zA#4@a+Fw{}!vZzCTb417_GNs;8nNUW8OB#ygCN_FA=_R-joGTiELI@aQC^Q0EFIQ} zTZZ&vPHi!#Z&UAb%DmLQqHR)VLO0q{H$vaqLf>vk+tc_F(a7!v+4F_$L7&({pG@8O z#@vhFH-})ov?hmm!*m{wEcXkuQLh>Zee397?7QP#`xbVky|1l$&<{_h#yIPh>+$Bh z+E)0Nv8>_2$`XNj`i36iR>sQ% z9GNck5c>8{ns(JTIi^8ZcY&^U)yb~$2i9h>U;NL$G#^yl)?1f0j^X?y|5?-WUbn^C z1YLUI&T7l?Kb`z(bcCZf?E4njchLr^-|$<0d-T4RcB%ZMtg$VxTF0O>zsIFGL>j4Y zq4#X5_gvG!mf6yliS%-93SR0Z*YR{6=iRL`+tPNp&c)w<<+1lZO=VxqQc&10OW3cv zuwTW#owC+%XzX};qaVvWSF@#kEVuKal@)g6)4pdM_QfIW%k#MT=7lqLZ0;NB==(W? zttIy`>ca*VfDNKICmBBQOFuS9?HmVbH^n$#th9s|>@3btX4f3m$lG4~%+21mW0u1{ zk;kr))x#dJ*xRmt>LGVe%x52U>&-^pU1HRj{?K|dHKSeV+&{d3{dP7lm}vRp+$PO& zfBW4cZ&uoV$ZsQk^!8cS0+cfs<+zsbTJM}{ZuYVB+pSjx>)I*%c3Q&USOtH>_8-W^ zerh51Qwu(fR;KDsinam;ufhkemU-!)M2cC|IW z6Rzl18**3|RunOZrgGC_4_60P6j8Pv0UPTy?OvxLzjEh?AM4?tzg&Lo{xjj-VAHYW z9@q0Fx1BwSLsed*tPU4*nE79dnin&ES!Y%Xm99-@l{!b1&h{nHRBZRsn)Bwg4%=AG z6iz(L(JXt2TAJaHJzp62eBr#eRySvj%&Y2mtO`ZatL`}GMKYE)B}?~J)niKPEn)ta zSIS^hb0JqX?p4xJ-ig)op#}AOVN6R9f`W;)ozh9+CSYSwM983-K_=Ir%OYTcn4`f9;V`d5+B)~BMqOzVkv zoOdQ}va&SKVS<|$Fo}6mE9z5SRrZIs`NA$+{U`aT;^j&jza+Qyj~-Rk^X>PoZ-o=8 zXpGskX?p4de&1u;Aoh*95N!=9SX?DP+e9bmozEm3npoL=G8lc*v+UV|->qTYm06VP ziS~>+lS-f6dp*}V9p^zulPWh?T~?(xe_o|CEk-6+Gc(3jjzO7Sf8h#$Sp~YaGOzQlv@Y$eW4>Sh zq}#3NsphSy?YK8=ntpP;pBj4ZhV%U9@~#-`&Y#_@mRgh7M~&%QT_0S~2!h&eb_iZnkf@-&_b>m66MyqMRVJ{h9In!nSN>K4$6cE&nV)N5gecmAel)}Le5 z-&8_(IToSpzP&j`UsYtyKuhFqZ?#U-4EJ?COtRYp)auVkbhk;5on@vbQ9JxnnCx>? znM67KtZf_nszPBwR_`?J)sdB(^oDk0^{#-q)|Y9^^wkyZjOV;i$a{d=a(%NiLJgXv}75n2^@u?gR)oAB;XU(N~ zOi;xT)pEuRr(^eTy>(}HU1dy&9zC+Rd3vv=>Y1kiuDP%2k$0Q*VPHxWurp3HCDjn7y9kBMuoxg!< z{BWE8ll_h^mmpG!(A&<(c~|SxXJRbB3r!tE?({TS`i7|ljmJ3$#az_2=9g4k&q`CM z-8aS#PsDO@DKB#J1Sa?V9Kc_lhag)=y_{RoFC+NUVCEpN#KpG_=>TmU|t$<$6Ok zC8uRI=o!b%sxjSKx4y4+^?GNMX;^zDM(ng&cNwTxX1(mtg|q7(l?Rwj6aB2pfvc?| zN4uI_-v*iX-)=Z#UPe1EjFoCfr>A=Gnlk1}x5Qe$Y>V%&+_3Lei?{I6R_OLFrcZPe zYy9G6*4xsZ?Pp)ge)g3&MFXv-9JMya_jBxv2{)#)Lk*p}-tqF6zu9``oi*j%1j`!G z$UN#)NI8EN(4m!zndX^xSY-?OnQsdNjrU<+v;1aOow{!=HQ;J7<$h;jkC!^Uipg*? zlktpobs~MOndvL*wSD@U^slO_Ze^Z3_0qH^Vt88Bh0oT50~}^U)CH^Z#0FN|fYARO zV{z}as_gz>`c8w)W=9m$T@UWlb-#BqW=~UVX`@-rB_aJ(u8}p>lGm%O?-hRQbi=z^ z$+M2O3ipdJcs6L2!?VFCJR7_dL-{f3eWuv|}cUIuci8;)xqUFuUr+XcDzXciH zK8N~i+i+*|h70tAN8QcrwvY6Ta&1k%Aq$+pt|wAF`CNVcd1dovb1~JUvX3rsxUk8> zL#<*3d#H8YTU&v#Pxl5bY=Ct~67vvq=-JOH%oTA_S1$d`O1#0#Ix)7jQTK*gKN`nX zUaRW-=N#ghQlR~}3WwvFQY$gjVZT$Wj(2Lcw@i0jynfy)cp%KAT9{L9R8@7KJprcO z!95OV@kqy-L4(c9fTPxgZI=Sq>fd!yI$~bI^yNvjJ~%p3@~U@1)ON z%EamZTo*??&;PoD&bYdgd3rdFxwN2>amWAUUbW0<%nRxJS9irR_k4tTN4w`8%vr`g zXYugYIw9irJ;d!DdADhI%z0Y>i@uIHvmS8<*TUTM`})m8fyToZH#+ugEfYB zuQ9NuG8@nz9>|OO^yXs5QN>3q^q+Y78<;K+w&_|qUGdGh{n%ZHBcs*${J9hYi$aPIfl6Fb56795m}& zO7jqN&_~Qc!F|Ha1I#;4Jj-2{zOAv>(tWU&7D*f?4%T>Mu*UOC+RWH%txClB z*z@&M%-0bGiyM2LlLqUYER#0r*k(D*T&$h2zB2Ch)r6=EIu6EuFO2;}uc{h5KAc5- zKnw}&f%Ve;^U^LHFZtTuM6ZiHB! zXKE7D26J>@%+a{NHun8>OWa?d@6*hb2p(z0Z}reBdOO@)2}rN6`R=q@BKE~|?u>o5 zERo8vX^5#8mD?H7;cj4w#?8%8bxLo2wb)t}iT4LzGpbZWgH**Kg^d5vOIC_|sT9@^ z+P!|jddaxgOISylRV!;d#PDevYcS(pgN;hl-q`De@mME#)v0al=S44`zSdY{821_j zYZYU!RgTmtpuH?*Vy%w^t7CPUzp1zUcfj%G8(zTX5FzSNy#InIA z>z%av`K*tz*WL{@--Ax;Zl^9dekbf`I%jX9!=Ch0kGJA0(mCqu_rC4aJAJ~!yGUcd zi_EsDoOQcwka@Bxl}hwxlIBYXn85D^t(Jo-|MR_i#EkR z-q~0`z&b78&g|BZ(II*k)_Yh(YWErv>r&%hm!4|*Ugu~!N00VzVEWXUu5)0m@(gPg z+^1L>dRA2H92HwELq3G4ZPpHT<*t7oZ<5A-JVN%TX@{#zY(KeW%4yMJ2c zPFr@Le1krTwT*JGZLr2r?lp#Yx5U<$=WW%jLN~N$o|qiK&XV0>D zZ>8+_R)f4!I38cVt_S8Sr;?ujY4>eq_wDDeU42`9{Z`P5K;NEzIa1ku`^1m`_H8^z zvh3$b(Rhv&o1na&eL0hQj%QGK2BO^0K&I@Bb>_rLt^80-H2fai7edon=A zY0rD!+XoABNrhb6|rNovSae&mJco5gP17)0(u+nK@gLb9h1KzCTF`HuIyO-4Y3+A$107Oa~LrP z_a?Y+nY||l_a>ngLyUc2b8XjeeLIK4Jm2-*8HoEG#B=42=Z%IGQtr52xp8y+AHct3 zJDy)z?&nvC^HwRu`P_)}LzY%lz9pvVTsM=d$xAC5w>>67E){oKkQuc<&;i@n_JDnX zj+^?Zm1bhN8NM%}K=5 z4cnXBi5jRvNd{{%hndB=-`}E#>iJP6^xVvN$5FPZKH2uG^J1z_s$x=OIfiD|^#+wR zJ+~KD>n4qI?kc-S?--g$J#QOijwXF)y=-(=`{5mMxuBs|s|`VFQRlQK&BJWwdbaec zXZE)`bI?#cLkd!xu|MVV`qJAIdghZ(>hy*mf%$fHGz)TjS$kU^)@Ylt+ZKhk?QM}Z)>&e>t`gbj zKkve(x9_07t~qVp>6Oy5dNokFoKN-F-z#*p@snsL<`fwyNvo1lFigfJIv}lomp8PhpU?k)gzF_+`oNsHLRUpeXJYld#LFPf>eSYH}&*Hc>A^Ui(c<{R8QGi#q21YQQ3bVXikNy zrhc4KYDid4$Kf@F&Gxa?RO|Y0@htDS{t{eJ{~De^m%yBj(#rkrti{L*=1bGj`faHc zrq!biX2mwG$B!&*P_O>}PrWxLB~Wc*@8~C6N}HHXMpr9$LuWo)??2BX!sq2NTh%UW zMBdyc_H1G2y#>w8HD76Nc1@<--*Kwj@sRGP?pVXt)-fZh+_8dZWmIQ6=Q94s2B>5= zy>*d?ubp4wp0YmAuWt@_KdBGKuGH>6iS}FW_AgKRPM1f&s)&Atvc_F@bZ8eVU~H&a z(E5b-{Jzo4`DN0#b4=r61H&j=NrVS&ytIlFH6 zGs3L;$37L>MR$eI$W|xpey;3(US#qpXA{5LX5^{My58%H*0JeX&GS4-Oyllerr8W1 zGd6A+lOxkfy)Eu3dwpU)_BiQU=eT3<`a0Y6k{L-%z=XfQ2jYHz=l?L9vd2Yzj0^OC zy$Ln z_#W8txPA2R*E#L+WnIPinu+n{S=Q@rCX=RnK4n^C9-Pj!FZy%FlCip~Uv1SE$Ji6c zn5Ah+vu<2oReWw`Yt2Pp^Yy`8y&2z4&Fy_#4@osc*J{<&%=a&9KKt#kDox9%;$69J zmBw5-19N5dM+cmVLR#ZHHm|M6bMvU$=qLH|O`o4m=nzTgAvd7kdhQ2%zO>H;79z2!N2a>t714hz){albz`vb8m8 z|3GWN)#m0!ya)PTHGkzdzoH(sqLlG1UQx|Ntb4P`7x&1;RKKTDR$f1U)1q2o^?OGL z$2z>L-Gg_m1Fp8RrtC;#e9rv}w7>V8IO_!`o@pEVnRcm;{?_%JIq)|>&+0Z`a+o4b zODZR>-ICdrt+aPDsfD=K&s(0b+P-LE@O@-mE6-g#L+PlNZeC%94;qU1cdgX)_6PNW zJJa-dT}}lY;pW8nv%3H9Rw~}Lv-(oyC|$62u-csby0uBH(}=ywj=i@Ld#|j`t=Z8^ zX2JG!W=^(H760wp*sxbGb&)lZCQGJE&TQ3J=oy<@sORmb=^IT>>7UEHsM{A_1eQ4I z)Jh~$Pmks`tt@UvjgBx4jy2S;mQT?WF09vlMI95b!#mxpcP-WbZXC7e%VgazTT2z> zz0*pweyzS5)>@5jx77O5d#mOvtE;DF;;L;A7ibZC+Uj3C(t3_(n~f6tsKG}gtvNHR zo9UsQ%-y@A^~N)^^|b}ws@mI|y2q{(reCk$R;N0rbhYvoO>~@6rbmaIj;V;HZ3<^J zc8tA^7`uFAL6dILGHVCkdsce=+xjrAVL&wIg|B0)nWu=iBVQiZL#{V8weXB?7oO2! z{#Ew;I}h_O;ho3u4QF^^BeJBuk-BF$<%v#q;ix{l3^cifnxdxm^^s))H?PpfjNIbK8G<<;* z&$XQVdytur=UTJ#S2QjDc^8a1(aQh2ttr|0q?P+}Z+y=qpRRDTuEu<7u3$c0**m3` zZ+=O$1kX`-;5n+ZtHV6ry+hCc?2GT2@3D?zZEy{1gErTE)smT6f-_$t*kUtpf1=Iuh@%G3Oee7TJt9=G@=sYn$$PCY&A5ghQgk zjXhW1nNrt^(}1a8g%9f=%_JDSYjG#z|T+v9p{%qAzspmC4EWYzu6Y>e3o z7_+$-_!xyTz8Pbj#0{$v;zrwMT8I2dqIM&`al|+80|Rw9#(w_z5A^$j5A^Na-JSIi zD_(~l*7*=ya;~ar!Y{11+C@wbPu zQRpX_M;t$zw>FnBk4*7SZ1N2&s7K*FUAwx>d_W%_hCUondaX6}&v|Qmi6%xhsAsl} z;Hq>~w8nj?Rr#O$(AgJ#l|6s$$NW{z`?j?R^Opnj*SW!QOcSgV3Syn$`Caartdz3n z&^MSvJ7;aC)}^~^z3e(s$E{aD-O7_eU&K6%b))+A&$_W$)@H`eQzv5Lf4*1Qy!2Y_ zZri7?8O-bU(U$ehVgKKUf4`eIlaJDSu&y~d!pF33P)}V%`|}Nn)&*?skzLY>pS}&e0 z%O-%tZ%YOJ{ku~PznIBbl=_?P-=OkjyPPLW!uD@ed43+3u>G0m=kW>KZSnlvi*Q21 zi3leq>`gccVIRWwIqpZ_$3)4CYqpX-y3 zaC*WS2xoM0(V|8FDW8dOW*476RpXz}vk=ZoI2+;YVEY=n`%ezSISJ=&go_d`M%ey=HqY}>f^bQ~r3jZMT!ygyXYoD#2NJfw9^(1A z{m9Fc72&dkg9w)+T%K?R!W9WuB3zkp6~a{sS0h}Va1FvW3D+WAn{XY%bqUuaT%T|Q z!VL*GA{^CJcjUC!s7^!Cp>}hM8cB@PbNHta17z8gr^anPIw04nS^H% zo=tcT;kkt85uQ(Y0pW#&7ZF}ecnRU9gqIOsPIv|3m4sIjUQKun;kAU<5nfMt1L2K? zHxb@UcnjgJgtvj?A-UH-+X?R=yp!-Q!n+CYA-tDxEMX^M4UW(Lx4tuk_YvMt_yFO9 z-~>qS<2^+9FySMFj}ksc_&DJcgijJaMffz~Glb6)K1cXG;R}Q>623(EGT|$PuM)mS z_&VVmgl`hQMff)1JB05NzDM{z;Rl2t5`IMZG2thKpAvpX_&MPhgkKVVMff%0H-z63 zenIi`XD6J4a8AOx2E}u;fjPS5w1+Q3gN1Rs}ZhFxCY^xgliG5O}Gx>x`gWyu1~lD;f9185e_EYm~a!q zO$j$6+?;R-;TD8j5^hDfHQ_ddLkYJf+>UU2!W{^Q5$;I16X9^eoe6g#+?8+y;Yh;W z2zMvkgK$s6y$JUv+=p;q!u<&MCp>`gK*ECv4<a1`O8gohCxPIv_2k%XfOk0Lyp z@EF2l36CQ@p6~?16A4cuJelwm!ZC!W5}rnQI^h|FXA+)8csAiVgy#~TM|eKr1%ww8 zUPO2?;U$EZ5?)4lIpGzAR}x-Dcs1cQgx3;YM|eHq4TLum-b8pa;Vp!>65d95JK-IK zcM{%3csJoag!dATCF~@u2^+%u2=6C+fbc=WhX@}ge1z~(!p8_7CwzkNNy4WHpC){U z@L9s=2%jf>f$&AJ=l#hg!j}nOA$%3=dH-;Y@O8pB2;U@pi|}p2cU=6x`;)tb@45JY z_b2xWKOp>&@FT*H2|pqH)W!e1UwKCOIoR`l&Gfi|}v4e+b)O4DdYPoUkA)3CAHEmvB77@d+m&>_s>s z;Y5TJ6ZR&Ygs>0cq=bD5CnM}fI62`Igi{huML0F#G=$R>z9rR)otE4kBERaCyQN2v;OriEw4YRR~ulT#ayb!ZirjBwUMdZNha3 z*Ckw!aDBoJ2sb3$h;T6B#)O*?Zc4Zr;pT)x2)7{Il5i`+tqHdw97?z?;dX@E6YfAb zjBrQ7od|~$?o7A~;jV-u2uBj`Mz}lS9)x=m?nSsa;XZ`>67EO1Kj8s{2NE7ccrf81 zgrf)#B|MDqaKa-9k0cyTcogB$gvSsbOL!dN@q{N3o=A8S;mL%j5RM@{mGCse(+STY zJd^M&!m|m_Av~AxJi_w{FCe^-@FK#C2`?eMl<+db%L%U_ypr%L!mA0dA-tCGI>PG- zZy>yp@Fv2W32!01mGCyg+X?R=yp!-Q!n+CYA-tDxEMX^MP1q3LM|eNs1B4F}K1BF1 z;Uk2P5_a#yVPC?@2>TIEPB;bOl!Q|ePE9xs;k1O)5l&Ay1L2H>GZD^AI1Ayd zgtHOOPB;hQoP=``&P_NEVSmDT3Fjl6pKt-f1ql}-T$peX!bJ%eBV3$t3Bn}_mm*x6 za2dh@gaZjX2wQ{|;j)B-2$v&Vo^S=i6$w`&T$ykc!c_@ZBV3(u4Z<}E*CJe-a2>Gc z^Z2@i>$&)U&&TT%Zs6koJ0(~`Fyq+;pT)x2)7{Il5i`+tqHdw z97?z?;dX@E6YfAbjBrQ7od|~$?o7A~;jV-u2uBj`Mz}lS9)x=m?nSsa;XZ`>67EO1 zKj8s{2NE7ccrf81grf)#B|MDqaKa-9k0cyTcogB$gvSsbOL!dN@q{N3o=A8S;mL%j z5RM@{mGCse(+STYJd^M&!m|m_Av~AxJi_w{FCe^-@FK#C2`?eMl<+db%L%U_ypr%L z!mA0dA-tCGI>PG-Zy>yp@Fv2W32!01mGCyg+X?R=yp!-Q!n+CYA-tDxEMX^MP1q3L zM|eNs1B4F}K1BF1;Uk2P5l5iZt zaS6vG9G`Fk!d`?E5>7-oF=21QNeKH8PD&|CtQMXNy4QFmnK|>Z~);z!Vba~VMVws;UL202$v^ZfpA5_l?YcRT!nB|!qo^@ zCtQPYO~SPZ*Ct$ta9zUn2-hdvfN(>?jR*%5ZcMld;iiO}5pGU6gm4SOEeW?G+?sG3 z!l8uQ5^hJhJ>d?7!w7dI+=+1b|G4Z@{AbqIy<7Ke-M!%7s%7VhKJB`#V^p5X?1pEwL_pE$#vu+Q+s& zL1CZ|iZ#+mTOJfg=5hiAE+nT|r zLr>>3cvr}-B26=EuK^3aluzSXmZV)aP+USyrEyW#!mikS)ux^4J>iyP^Rv&nm#GfRYVR?m2r7 z%a1>Ymz(f^6Sc)-wiS#s|BwhVyI3z>)IMI8aGHaz7;J+*jk z9v?N;MlJV6eDNFg#Yg%r;=+ytY2kXr!S)W;Tcmg5gLn&iD@rhn{T33RF~%7LQXzby zwGe;Et0LLVqhW^pe>!6?7_5joC83tj6NY4$LKa2ZoJX@NL1n5<$>G zATJq&6vn;KjxZh|!qB<^w5$zp!}E#&w6+Gbbr3$u<0=!%i;6& zV9SY;1&|7(bYbW&JTdH|A~CF@;v-8evqBaXS+Osa`#^{Cbnw@Y*JtTmvLCO*>ac#i zfT+U?h~Dth8+Kt)o7r|fR+|-uw|cBR?8LG>?2jz7C=aihk+O>9A~U=uNAeNRp?yR_ zmK;_=_FNA{PfHprwdVuW@w_E-Y`WaF%{{yeV`~m#i)&uzUMfzJO6>-^Z z_MT7VFZp{O7uHM2mpnU*%d)d<;PQM7R{ zOA(DUnT-Zb#@15IMfpl7Ifhl@i}_`wN|2TKCEi=kVRPAU)?3=Lh3qY3cnkTP#qe&T zh3qC`_-NKmjAjd=CqpjelUYCbp3D1*e(<{#UYDX3V=zmhHec#1agQNh;4{i#RnoyLH;Gk86lVOMv#q=D@wG3jzS*0M3fi}Yc%rq zN4Y7YKhjuiQ-l{Ei?kWmD!veMA!wn9mi9g`9xXS+KFkiW&Ehayj(vw9$BNBjDH|)6 z^QEjmyewr+WPi~_4usz(Xy-uD6tanI>S}RQ*OAO&i+EF9w?%voo5PyQX{?=?2Hg&M zo5-c0CbB2iH=RUdXj?Af_E9yK!LWjHERA3d5{;0euniI`SrpP}q+PBf8!dL>7-(#dz$SC~Y}jE)xsH9G6@s24l}|F$;2m*e&M5UVv?woC_W-hhZBmrz6dF$z@_T z%I$Q?@p31;?f{L4{~g%2iuGvSdg$dYYdL5Oj$}FHa_CiT2lj76+RjJH^^Ma@U@+<7Zb%YK1S^1v(bi~Vi()VccT7X zY(3j$*MYQ6tOME7_B&3lV|)2tloMzRaC)NRdnUmk*bR7q7m!L8?gv(%Y-t5*Ax*vp{ywq%6dpcxGlr^5biIA z@Nk|{`ipShocW84vNTSZBZLX@PXA9gK9K6VjHSpaR)b-;so5rL(e zEFy|Q7ZU^dcQy=d`pzO*H#Pt%5;Bqv=iQ-gIUJs9iSBGD?*nbyeRyANeRw|67b$^! z&l1Rdq7~$O)`}Iwp8mWTxIZ5V-Jkb_7IGkTEtIH>n)~tusJn=Z`l3a3VGrUBp>3H> z)h5e$#WuK zHkngag0}5SvM;M7>$zlo==yRLw`ET@iuXY3$$GG!%#wdW+tQM?A#2M#&{ZMxK<0(F zoU#zS7lIzi3&YMXqj`N1&7)j02U;@{b`IGD?XYEGf8mpH@Z62Ol|5TNJK$1g?7ot1s%KFAPS_gL!teWH5S8 zc3E3wl`WucSp$2s%Ni(^7e4ag2=d7aE>9Jpn}{k%(Yy*iuPkj@Lsph0kZM5IK=~Hp zD=Ps#ntx@r(%7#K#gRUl{ zurCU_B)Am(mxQbcZA-h>29OmYt3X$PY=G8QaLEQTL5qMbSOHlO)JPPBZY0L>alDZzCdct& z@*69SR7{qZ#bi;mrnE~IMO%s>6_rKMp2lc}KdfMATLz&m<Gf@Dw zG!u=mH50**!Kft|UTj$eo(rPRGV%*6D9fN#1z~+*W#mAXS{4_bSq9mJ6&I;x22eOC zwH&~!voJP*hp~>VtQf#;*^z}nhOkb&6AxjXAv^Ojq6boE-h+3CZo<05YQoaX?mUA` z53jzE8Du!LEt5%K$hOeQWLwq=x)VzybBMCSTYAf~q7(O)o%mZ;M!ZEWWrPFTAtU+s8h`1F=< zS!L8&S!9RIE^>(UNZCbGv?z^i%1Vi3vKeGk){K=9r9?+wLNsF?d7#T{N8W-3iWaOL zbX?hvx8rf)sVzLmm2G);VcRuXcKFOLYO?f5sYN!C8akV3#Z!w6klBzY8}?+tCv8za z17rr24`nS_D7?1fKV3OPSvx#DXvNbCCcg1j*uLSDpOD|dU&ME8U&J@q3_62I>&lx! zv}0+JTJzS}pH{TyMeIiqq6ou(vlYKlt}y!oU6_4Csp61@8T^S~*nYs{Pk8@BJkB1F0-hCS1v~A`|*cCc)5$25=^;GbUd#TY8CCtTKDW zyhIA*v2&+DE-$1Mq6tp}pH285)Y$~J-9qiRVE+<7UDgliTSzb13-%e-3-(cb7N3wl zLVgst#SLg%-WGSnP3Swq3-TspQ+@+71$0xMLZpQChNXml!_q;f6KRnCKqhv1Y|1~O zTvMJH{+jZX*lT~160!;QC5HTrbPIW3u%99kwvVt9iAMY*(rr*9eh01ii#OtlL}eW9 zO~{+#I`kdLAN)G>59DdYzw;l+^&ROiY(jj8tOi{LsT!{W`vbO|tO|d^am5b+uwq-8ldB}3Q2l)H}O61|C;rk&g&6B`)PROTd!&B%7{4Gz8Jjq?2lk-&2sZiG> zK9xs8PJo`kCn5JwHUTmTv@KuppYZky9$vw>!d4poGcyHQl4r&-l;ml^S4A3FSH*pn z26ifbpWSDvcxsj$DHUo>37r|Aokx!I$a|kz+_qCdqYO`hJ*lD7qTW}iPr)jSq)KRl!9Fj}35%Z-e`^OyJGcdz5;`SI#WKOl1Uo%aCYGLE5Dw&a@Czt+L0p7~ zbC4H#IaooEW%+odzja#ngQaETQTGqDrM378-C9h>d6>*wi#D*@h)^+$hr%AkMzBCW z3TY%#dS=TDB0c0q=sj>l{;IACy59kpnGll?Pa6>Lo|8Q7AQ?EygDkTy2`bC*#^pg$xx_k=kMl6@4K4h-ti! z=q9JZLm%vGEBm0`abUNV4P_i|%eJyPd^d;gC3`^kfbI<0S+%$rWNFXU~ z!&i#Qs69#!k&~q@qvS?01ZlY3#`m%nVlUf>R_$f6(6MYdK8a;B zujW+rkjY3>u}y$A!PTE8h~d!l_&_-vR$uhCzQXQ*eMMLF!>;I&w(Jf)4SlpbWOp20 zPo(ZRQrqe+`nY6IIh*&y-mWff%dWC7dQM;Tn&C))>j~l(f5+4FGa@~7Ja&m^g)LtlW*51A4A0(@sgdhL>D#cTM>0y+yXS$G!sy#l@>iu2-- zm$8+Aby-}3PRdH~OCl-rg-(Rz%M!s(jQ_x3a{^YJmw<=jJOMli3AH#Z#b`?P?3RxMcC^jGDe2V15eApAzYnOfk`Gi%+YO^}@2dq4+BiVIS z!&o6?Ust50(hu5}-FR2ljr&O-SU$2fYt4LQTIjU0lIXxJ(Vn%3%mbZA zv}C!F^5D%}d)|_@=eb29*`6nokz67rl9^C{BKVfDa*3oa>F25|m#8NE@Se^G_1JIh zd}KP*k`}T)YO2pNqqeltmYHQ6c9cyQ)8sTcU2J62@+WXVjYS?QD$P!$;$Z{2H+xPtDgL z%|I*G2wTp;Gw@Mz7q{gsJO!T#Z9fm633*h^7qi72=mb0gKPrxi!~7WNFzgfJB0J1a zh-CZ%yT~phU4T5yFS4_cmm%%kS{@T;Spt;OQp=6-vXRe$w~c(LoFjI!Ibx_x$agYZ z4wZ97EKkU7IaloCv3wtQ@+r~@Jw>h+PV5~DA9KY!mN>EVp9YEY~8PhCD4}A=k^*$hjV$tVUW3xmNCW$yn%va+jWoq}U8^C&g)bSe%h(Ay>#V*j7jbHsTad!q3Q4NJ;n!Y)SYL z$Rm6eyseT)_Y&7UGQTv>1AJHXcQb?|gZtb?!pxRz_-!--E8 zL9fF#od;_jpNF)M?L+SU(EIr$c}Pr>`%z{O^dz|l?VKc!@eO>o*uanRLDIG~8zgNx zTg*ov*36dkF;3=ykBWV4l3dT%qud6_4SYXx?`IphFTc(f%j;~JwB-%xeR7$+!S=~5 z(AyyQ$%T;HAh*dSaz3;zm&m1ZCG=8U>TH)(UwQSMDmV;Z=5s+cFuhZZceL{DH+f zUz;&z|HlMYHz!2Wx=A7J2T$Ck|7JXZ!nbc+|LWb!Z|lVP!M6*r&do|=ZAccQ+KtQZ z6jf7O!=qzV#-9~p&yLJu4Qe_;9ekTJc5J4HvBOtPQEz(Rb~2vVx-=wO)qfVd7iG1( ztnG8)oIa{@@EGULoVOk6y+)`aWtdfO!F9*sZZYa}SSLrm9miuscXe0JF754KqF{wL z4_6z{oOdqjoX}d(H%5i-+7sy6hFpGq9PguIly}4o$M823pjI^90e2B*6XR~OF-Xc9hJrOt*gB=Nl3eSUD>0^R2g#~$cDcC=Hw z&n?cC(|xXRj1KoPdiudR`L{iuWpP{%_i-H@QYLVPe;2iP*J($lC0VS#10vP8TVovf zQB$j8^}#A-_^vXZ_O9mz@dMpmRMBD!0zB=cn+sbB;(HdR-=P&8Mk>?}w*TeSBB!Emu|tme`zJtvj5njOYG5Co@}C=CUd{ z=g$C7pWD+Gu}a!^)oKkfC*e}1!{b>Lf=sK?V9*1+31Uw@S|60^)4>FeDqV&-W?zk~ zUU-dj?tkoS&2pZy>W47L$k~56Mpuuv#>PzE>oerF<9vuvm0so!tXe&;)kVIwZp4`t zm_OHjN7S3@R^OH>V$*&Lbj&$l+p3?VT3{J*&0)n)X+>Si={)`Ti6eiAua))BsojyY zRyh{5NMqgdPv8hGcgj(sd2%ZvbZekzSx=vyZCIMMmSbb~G*+3W4Fmi2ni#lz#4)S( zrayZ<+w8f2N3#Bou;!^PN76LT|EoQo$Ku%@&*M$pY-?bfj?b(~jf%%+$dJl$rNM9O zP`q*fu|4zrU&rg&eox!8org}{aU{>a!}0rKO=on>YR9ZpnH@Dv1&3`vtT%mcYyv;W znbbKQ2~C5*MPmvDrYu^{G3wxj-3uMTdcg(mD7CkEVDPC@I-vfu!1I&41@wJYQhVk( z{3pcmI7zy_#l7wX=BifCQNM4UK(AlxoSwF)f6x3riJ5hw)Zg`bw&&-O_?BJQ$#z9` z?kcYwu|1~-j2l;9|6lt({UEl)dc+p(5nHrJZ28wlJkcJpEzj(z(&ZN^K)Y17{oEZDsJ@zraV%=jLV_Cb$GREd!_n1YD((ZV5 zFEpuk#~+OGJ?^-KF{|Bi2Js=*9Zx*{dzSUg?^&0pPsEd0kC^kXPtX0HZA1KYx?`-T zjacFIh#UXfh!swEtUwHLx?>39hSME4FixHBSb?z+>oH!O9^>U-+cQu1dkvlCW71f! z3I@btTsYlh9AnVw5p%RV=6L2oJaM|?3C5k%9cMgkjD4p&7J1f%SP|0oSG^dUPWM>Gc#riM z?@o`H;B?0Xj7RMrr-%vv=E0bCy2mWWzSA9BFvgwkm}A=$25QHJKi%!P^q>9i7=>}I z-SNS*ZJs_o^C0Fp-SNk>4W8}v%wzK83+yI`sRx^Vti;E?^c5bXwq+cQ|1fdOkt{`w zI^BJ?Z9CmI@>uRX1FG+Kp4%}|g`_yPf7P7hTfDg7+i4!3QuA)h&? zD8}wNJAIwukekC)>FpOCBdWx+njdekGPRxUn3_7dHMdukdSxa$Q#^Va_$N-d`gFIv zQ{?I9==D6EI?e+eU(*W5qdndV=Y6lIjX2|Q#~HS!l%s1Zp_YfQ2;AItpkqVjfdj{=EM;{(IVfFh4ro^El3r(|vwsZpiHPI1k!=9z65oxc=>9 zp0=|@GiQq{BOFZ!M>%tidHk`Qt?Os?!BW(b^kgmu4BI9>_#i z=T}>td27e0B95Vs&Faj^Q9berq` z<eBi5_OJV~mk-CNv2pJ>moJ?cTY19(m1=%s%ig~*V35l3>ZZfCOP1`d<}DxL zz-5iFKb7d;h`{lhpMr3mott==Q(=(UHK@8T+bNE2cS19?57G z*)U#>I-J`XvOk{XUn*J!WH{!S@14d<@@aQIDH4?PdgrSoT)29DT=~yy`WGT{0)~<>!uR4cC-r{g+iB z0pSJdzW++H$rnp;cK-nhwQ*s!29D!5A_kImi}Nyfmk-)HpF-qbVSBc2=N7Hm_PV6a zlnB6k>TkP2-zmc9BbCBG~CSYk7;W6-m3Lc5L~DqCDxxTheBR4XbGP z(<`OP3379?Ei=zNrx}-|7*4$Vf7M!%wREi4hJ69O$`GF?zv<8WKh4JyCzJOJzti@m6M4Tvx#*A{ zYv|rzgSAdhTnn{3P6y70l%j2_f8^0w*XQi+6DWDyxE(VaLftz{K zuP2#x<8w{EwiMZAa=Nl9e9sIsP`_6b%-^yiZ!^-&FVUbxG<}@fY{+GcHkQ3>KcYP;wp~dn&;}8 zhq&V^?%*CnsCx{E5w2nc;)|>Jf_o3My7z!s7Alq@)`W^Rh$F7z2;z>bxPv(2hB)Ge zIO2vl;)XcNTn@3rRqQ}aaTQY#M_k1bT!&m;hj5*9b)CbrHdoL7dTv!Q0@oy0*CfQ9 zS;ZY(lU!Z@#%&?i%qrF(28D`2h)u3y6JnVgVmY%-xaPUK=8fAzY;qNw5bs>YyRi=t zYnDFiu?8{7Rh&X>auu8Exb%2|xVEgX$2G(hS21PW7UF^%;)1KV(A!aQWW3MUm#bKV z*x@R6AYQnN9f(t|-cNuy`#NdJaH!39C^iT_b{I2+qa%W9yhBzuIKt{Nkdsts}A09&!ee(p18HH z+J~JZ*rn!Qi7=Z;nI#k1=ddfh{rq=k&yk~9uJR}OjW>(6YSjj?)@yH=VY#N3!@e}N zFTMRXM@O@jg}xA2->lY$`yaEq|IydEbSsHD6h5u@->mvyZKW+;I5mk?DmsLJyLFcz zcsPZXNKEE%TvQzw^o^^&L7&a4&+Neler^9G_S=37KYM5bcY2k?0um2$c6clq({M10 zc%6m9J&aKIFtD7f1IGfctLz_gk3H=nRpWrS{xvOQ_3iQjlMCS6S z0WWoSqW9?X!&sQ<9GUvSidKHmhQ<3Qk@#iSq^nb1*7;da64-hd@!n9Eb?_QX`u)mA zFSylZ_o}rdbLeF8U0xoGx+?0A-k-3kxZ4t1Sn zX@ANzE3$$%(Q2i%X1QmUBOWidldaArn8|8APa0Q?ES+4E73eyQ52=ui{OC}JEnPDS zo>OO#7Gr~1XrrUte}Fx`c*vja-nE5~ZI_jXlrG7xznjH-HTbPr_T^-+8T+$7YCa+5 z%CNKp9ZAPY^+=X?_N-BSnzlG+07)L7huv$@jZgReLE040!-Dtp;C}C|sO=3qcI0GP zKE3Q^G9hOk_Nw4qzViNa^6r}*>so07pLH;XgooR)#$}Rtfw(OsPjh>g7&ed3oRWpM z>}0q+6c`laH`-#@K^gS|kp$!WhJWh-6(~C4Xl8ycFzNHm&o=BoSvayaUo@m7; zT_^MMXJLIq_iOpH)FGeqN!`iK;b3-P{FIMA`*n_Xt@0u@{y=|H-~9}6vhn6kpME9v>zi1krC!`+?Fh@Z zx|8otZbV8(SEr@#hiG1#o|49qV`;8jZ?vm}SCfGw#?tbSTuF|r7s&Ele)N9WHm!V- z1ElyKI12?v@x$#jlD)=Cnlq&`nd7#JJkI-#n$wba>~s_D?Y5TQo7j-pRbN8x)mlY0 zzaAtx(1!Hs{F2@{Z^!G{29gb~Kd4=un!NSkv)W|aS5$wlfA27e41AtOUoG$bPv2Zx z{~#4cTd@L*3z#3e4kz)WC(sXXtMQ|UZek3b<`SjHrEwolf!e`cUBD& zz2rsa{hPXP+`Mg<+3ERRVt+N1-gxE9joW^C)0{Z_CzEeYb7{67FEi`*^L)tt>(xl7 zM4B4g=51!Z-L>(gV%|mMt?8ULF5HhqZd^%r9&+Us0#0Twhi7M^o})*{l_uut-?T|# zV>vuuXDyDP?-)%3Z`v1IO-qA*T)7c^$dwPlrChlboXM3l!INBh68y%M z-yq_+@*X&oD`$cmxpE^olPhPQ>Q#p;mx9x{avC_0D+hx2xbhzOjVr%_Gr4jmc$F)! z1`g`LryjOudxm$_{mGR-!M9xb7M#hIGr^Nwd9p%EFRnZZvBp)Lf`7R35BQTSe;SvA zAI!=R;7qQZ37)jnbx(rREOp&!#`eLJmgTx9!O2`X`N)&6T=`JlbLvh2XL99C@Ecct z1MhL=J@5}#{sHfCrSDu8N!c|UzJi=8T0S|NKVaOLkxU%;7M zITQTGmG|K1ahdne;47|t1<$9M_t@Yi%W~aI;7_hx3f|)e?{Vcf@FZ8B)bHVy-@wUS z`5BzXmD9j=T)7S$p1BS@Q*-r9t+%7R3f|7_zrI|#6dcZ#!?Wyu;~h0{44c;6hQfU; zQTMSiF$rX0t%=O{>u<8Ycn;CkcM{uqe+-Gu@rl=HoWyeNNF^U@7ZGJ{jAf~1y$H0E zs@j3&R4s>XsbO29wuSb&YG1!6-!Od~v+DPfwD23RRSho8eqXDjo%r)uI}n`Ta&HqE zxle17oS%i}?xERUOC-)=&TQ2#C-P#(d(FL8VYXtrJz15!Sxfs?nC;7dP|LHthPGf= z2;1_sE-$*S91Zx=oF)D7=6i-X(2HK}Sm|P0__7|q$X=5ZE4IHY&z_W(*0_+5UGL`3 zr@#9}8s2kZo40i4E>91WUS$ih<*z35r8Q5IM(^^maRsOHnTMW{6~pr}yUFADXvZA1 z%1akE^ZsOW;YC^L=xdHFpZyy1qzaWR?R5FxiC6yFnKT+%n3Z=;;QIn1NWI2REH2A< z{6-P+Ki>UiZ|1hOqj_JS=VY0=Fza$yXp_&MBX)oC zGe^hg+J%>!$=BA-ti@7$QbwkbIUS2ITaOB4=AhFgd0b((GSHd${8tSjs(KKQELn__OLW%1X|7pC!*5dC<#? zR%^ixHhZKH>&SS|X0$-}T%`N#52XEtqtu~jeO|F*1lj4lieBH{iub0+ zNJ6cZl&>4YceqX<9%l>E>wal)Z9gK{#(UD0KUbzM4SY+cEv`!2Z@Fw<5c82ZtZGB6 zre)&}gNBg8egX7)lV2LSGKw?}@uWu&Kh=!wgq$BrUhnBbKU}oq#x@5#*Cg#PI*_va zHkmKFd?mT-max(A`I3&R$-d9nYFdtvkm#uEVb|UDk3FyJ$cr8n-=w` zy4aM^hP3LCpHwcGTLfBplDpG#5I^f&mi3Eo-<}#=evS8|L$65QdRM&q=Rcg9^FVpB z*V%)dTK0seeQQN_7AEAL%WF#?TKM0sT_g7&zP$ctvb%gv@9*{OM8Bu+$bcR>wRL-w zd6T_ANYc@En#Z|nqVcR8)HL~`_T|C}?#iv`#8dCRR}QojAL?eK8y-&9`VDjx#^uvv zO|;i7GNy+rOi>*fll_)qm!@u2FUI&HlNiZ+FvLi5{)qWS++-SL%>}Pm$Wq zpxVNCypua7kh7D+{?9Q!tW%gY?4Lu6t6?pS^-DYt>G^4eme|Zj91VC)9=yv!au&)b zz|~y28l1_MGr^@?xfC4Bm1Du5LirQCDwJ2j+d_F8T*Q@&z=3AvK=8a!o(I2iAW|cSX2A$^0 z&xuvsh4Me-Q?tsakaNu{=Yqqb&*=__d}>zt6dcZ#!@=!bxgDItmAk+>Tsa3k$(1L; zhg|tk-LLAd2Cs7ERd6X+E;Y6ZKIh8k;BBG24L;<`hu~PQ91E`F27hwpPskTsEI3$S+*w7sy{+g|0MICUmp{d%OIx+m1~U0Vq6Yx=gRHI zF^4?JRUU*Kk@*|}c_eeckdL^^N06hr%F&SfxXOKyYq-iakjpG%sOK`s%UtDU$orYs z737G_b|AlVmETR4-|e=_{N3*OF9X=X4vo#5>u(baI>)f6!)aQuM>+Z|D3UeW*PK48 zagMb8?kTKyhMMQP#>ipMquHReqV!U}T?Dq3YFqsopq8n!w7u>n?@o4L^D8_eN7e_j z;>nCvc3DE_eb3LTbo>fAFQ+V!;3@U>TTdPm!hb+3X6%o#&uccEr7OQ5r5-t3v)EZDMCHC4 z`Pr7?@=eS=(vGjE$w>qBzDd1r=GcnWUEL$ZU?~7Oh>s(tamn+0f_-v7{$ERKAmFlCYni?-n70#srIz zWxw)^Plm}HjmHZ6^PC%(zZ*M{nd^Pxi7i)BW1Hf07)v@dpNwLs#le(lxwnuD4|lFD zZdJ?2OtnsN_O!WlnLbeVG{5FvTULt4pJJuWsjocSFk5b1zr>QabiAVn3IEnb8rL!Q z+4o4iyfwZI{LMjC&DekAa%2CEeKz*t+PFwLxW+bft##dmvA$-_NxD9CEw?TaF1>%B z;zwLd(SjYK*%a#nGRfru?{~~!PWm{2Rh>SA>|45t2K$X*TLYVl$=l1(ke40UvRmzG z9*-AvX2H(zGlJRFGyVvDk$nW~8xh5`Zcm`CTMd_mD|6nmY$Dw`z?~JJ8^PbyZ6qt) z9?ZJcJ3#JDT0k3){Y(x7E%u&XI*tW6)nJ}JQ%M=e>dd&Uu}xziT2u;?cixQQl~k(x5A7ANm zvM6)&j+Se~=9*7mXh5IZJQwpla>~iMYsx?Eo5=Ph9oUK)Q6ku(nVi@@zsytV4mYkd zvuFhw;+|J#x&D>O3PmJvww>7SB+?TOU@Ch?GC$mlCa%11XpHg@1 zaB!@#4z6GZZ)DbY{yIgJE5IQ_cSu2S2zY}jZ$O+%Vqqu7h~ zJ++w++6agX_!(t-j6)1cgL9;Ej&U9E30FRWxRc5=#yZ5lR4y{^3tYhr4v~8@yk}f) zJTCB(G`Nl_*BSd`+?TNr#(w758!u~B`>xGSwb$L1x!?bFy#H&z5SvWJGQ>MG#5*-O zfhi|IJW3U(;DpR|AZDeCS%`h6+yXJqm2>oas#hsi%vE%d#^vCsROKj$YpMKT?3=Mo z<2v9Rru<{FdcNFv-u_HidBW`sdbhXlHyGXSGKLGCp+8RiWPnCPo_XSV{%p#GYdE3;RmAiI#qT3crO;NL=GH| zm)8@w(xkQB#nf71Y~&kPRv>wqSahW(v#WEJ+IRave8=~cwyD07_?{z<2a3ol?YEgb z_DvAqV@I&seo?aPC|6OoVP0XZ=S~|VlxH^H$}6w6xI(^kX~CSA^%mx>CVHgy2nN@x zRB>Uf!}Y_|^%I;B%QoiQO*;0yY5Cn;b&gh*UPiuOt|xq^MM-15{`qoj(sg@TCD$(+ z?%$ae$o)mQel19hb>lj4yiy%6jDt|)P%dq-?9=rDUo~njHP+!6nL1v$k7DZH%vd+B z6IG)-i)>enKF)Vjz_@8@++a+Y8WYHmOwZ%XAdkcNP&Gb1MLhd@&z98s`Nj<6Ak{b+ z*N5YhhGWdEFV0b$1((gk1{J$1-e%S0^yoZn+V!Ktqs%hCJ7e5n9Hc&0_ApleYxxu{ zLI&?HFZ7@5^fY_WRq>_R;69WMX_`y?8ry_kofg4rO-j&aIqas(Z3nO^*>3VS(@U|M zA@$gtXg6A{>TK#haS-d($VP5mbDh4~=FRrq-a}WmeC6G2Z+|&-XLh<|%3RULd$4@t zK8cPTd4(4{I#k*=*+jo|S;U>v2Ee_ihu97K?E?D^oRVNx`^x_~M0_aqlb$Z$hQaj@ zzYFThmcjK8`(kQe`gLBW@&nJgj%HS(g3#YT*Vj3e8Y9o!m!R;R!qjsLj0w}nTiVi)UGmhep_Z8Q;fEGW|9G4eAs8FwzOtDXV!CN zJJ$U40^%yOvUQDJSzJrEB}JPRX7ucf@;IaDHx{2LLtSY^iM(i}P)`#wrp5xm~-w8QonI^0Xl zUKqh3PMINQGwVkN4q|MhyScvGI#H_Q5cbA8h7aAnP%LP;NN6{|l19r0$+^G$gv-&6 zW}hcfGVY-h^IhFvd>iA#wiIn6H!Twa#m=zYGk2(`|_;#_iz8hhHxKlMtA_oV+`|hb%ciyBIR^y6`U?&Kl2t zV5VEo(id|+(^^MLklWomGvo5Dfv0%5oXx-Fij#Av_GXdKSMiV+7lhkMNpBtML_N(t z8T0;1Yo?tdcL#N1^=C!P+daL+&jL1N#K+F^@XLK9>hW8#X=EO`F8&>NpU_fPT05NC z46P}Sjr6C7_Oy}-509DMkJ_`eI|a$aQ-ichr{e!<=iogbw)f~WbJ0_-@^ok{+m_dk z?)zMbq>Tw-{f?d>?JirhrkkQC+#zX4_F<4?o5V_+9;QewOeDOFU)t#J~SQyTxX zPU#lan8%KfDY^8_@D-C(9zy3;kP68$$A{#?aZ7sfio8dI?b*Ev(yIm881aRISI_1I|xu>;pIRo5`YkyLR6*F4J& z*Ze}b<{|E=iaWT+5b7QSVuY#~Id$zbRq<6g)tBk_9#(Mg0kJGqEJLhG6>AVjWMM`e zLEK3dcL}u~6BS2iruSfmIFfoC6-kdHVThy5u3D>+-*Sv9Ch)tP9Zj#icN?YO~nhuwN!BpF~w9& z8MlSFkcPNmDlUw1WW3LZSgWIA4Pr;C*nxPFDqbK?nITT4ic^RYrs4%+M5;J4){X1T z`np4$Gdr>Ro4uLeE?c>LP7YS#UK!TDUZ`BwG=h#?a)Z`x>LN-FJ1MUI>LnqMYbuX_ z8#RQD*}6#ds<^-m_dG(~^Tbc^l`9KQ6aEkEn9t*;wDiCvKD%L*EPf?W>|Qufv}ig+ zhW+j!gA=!iYDdhX+m%529hTRH<*+ZR_Lc8rZ?>siAep}RB8BytS|9FzsJj2TG^P!6 zD!zbLANznp|C#E43U^^n=jM~VC!0!5+!38$Jkxe9>nY*5;9e>HxUxNNDpcQ~&rJ2X z;g92D&>si$y@7q?s(o8T!PixI`78q^J$so_A*z? z;XaV4`@nDf4)sZUrX7R*!Z=ek&d?@RZO-B@asl+y4f+Z063Sfzw}i6IrApGa`Cf|K zdHTt|?ZU*?0t=}7p+c@%EkS&|D>ZQ?~j(Pmv?w zb6L*Ppa~yHAvt1wXS<10dmFN!4=?hY8{L@q?_9jX z7i&>!b}XxXdw_fu;4jKQoU(YxEX(ifDh?GUs+~nahoO?fP2-h-|B^w>)PdAs9 zL;S~zslmfYhpEHmYIi%<=yNddQ#MG>^|oizs`L`y%lOO0)kCEt_ZQ=RJ5pnRl3Pt6 z6KQ2JVnsB|)$xFk<@$=MGkUNWF9W2{h7`^=I?JDjy0XT*W^%t>FT|CcF|6mU6TD<+ zC(*Ca3Yxv(E^=k=Ai4BlIo8zuN1fV>nH=}SMvmz9+Ivj>HZo!A0p8&EUb5t5tn4@; zhCN#Klz0915k6bPPi8y*j(^|j!j6~xC>n~F+@pOc>m4;n9zJI;9@s1pM_V2y4O};9 zYYxS++sj6Y-@eoN&tJpYc#lSGiOE*;t57A@Sx zWpX*W;a4nM^0YfY==6kNn0}kyt5u0Mc-WOSyHZsAl72Mw+z7^kkBcI2DSflOCtIAm zJlo@4f#0`h@=;$u;nrq0-%~eAdjIMm6IvG%7uS6eKQ=d)%XbCvxyABJXMZP|wVsL3 z8Xd@TI`5`q<~xgb&VA*2@c-|T&&ay>+j!MtSH!J@)p(=$-tzRGVJz#eM||0>MDaYn zt-O?Pj@QI&*36+rU6$gsgEt>uMlSCZ!JM{z)UG!iE*>4IDgC-ErgbhAm*EBaux3%A z=9Lpqio9ED%IbM)(81$8=S(O*rKbiwZ$bn{?oUxW5d|u*hX~z$mVo;Jx6(K+)w^_PjlJRu@0LuV=CRb%1wUT zAH^=)%`!WO2Z#auDNj1spN?!ef?d1akNt5^BfBc>5Zhx1vPk#iWM-{3qITshENRUN zUg$@=f3}VGYbTv-7LsQzvoZgmc5MEVg`_IY#yoq*%Ulgclb0d;v_V=t%hhQXSu^;i zX5;N97vw5JKmDi=e}^$lHtANKwl3OLc-L}c%jXrL*}v9j@a)Xgv$NfiSZRGO8!hN& z*5LVCs^{y5E$!L+%dKR$cb+`oF4xotJLBd3(e-&kND_TlZMZz@oP`$+I-@np+l>`1 z@=A2;-o$&@md5O8UpHB$gr@m5ikF8s&*Lsu*+u=WvG8-j9OS^`P4tA;la<_+Bp#2B zWw(=UscHIe4SXmKK4bblgA9CeG@FctWAl;MT5UHFt^EYLS8y@CYz(wFU zsr;5Z&5e-^UxDkS?z$7;I&c~Z%W&H961|0Trm;=%tyI1Rzrp9mr27qg%am`ylT3LM zp3CHSoAl>0@G~p2J>AdXLuv4#R6YdX66ITPBU5h7-)aIk_>d|eg3pEWIe1JekAWwd z@+7!XzRGZ;f1wpZxe`MbrL;7Ou9Ip3p^RDJ{RQRThg zv3@M>Sh_R8ja<1AoXM0kSC{-ql}o{CvSf0))4+jDIS{-jmG{7JLir7xDRpPI0cV0& zsq(7(`sVDI;}>3il%oWHGUZS3Emgh+XG-Nv@FX>Ok}6L^oXXT(>2V7FVah+?Pr1P> z-Jizg;0LDrp&s}FoXM0k!IMmR5}d}A(~RwdCzMh;kixQYueEP7x}nKpvqgkAR1n?%{jjVaOL!iHDBM3tAopHle~yeF0S zz;9;dH}E7=o&>*{mEXY0(sk)V;s#Czr%B~BaGg-D1BWx^aCoL>>X{n6>aDyA-e$_% z<%Ts$RW1dGGv)A|RXyb4?0M<&Ty+@S$5M44`{C^n;`QP>?bNLoyV|;?ynka8rQ4p< z-SvoUF@8TCYh}+Wng__X{hQGJTV_#chpBd8IaAAFTc&Rt3fr!(N7!K4b}noS?Q_+> z@xI+F>j>#Gsh+rQ_M)_I18GC&h_gxgSk5E;<$>VoqR-`SG(OCv^*qnm<+r9p>!=`59)q%XM_L8oW^=Ia;j&H;bGK`J5b%Y;kGEw~4mW@Sf8_ln7 zwv!9$hp;7WXPC>zz^B;!iehzMujQ{V))aJ@KP%x^L7e@OPxgCUh|a(2ES7k|d+?ec zEs^&enY}ntdbGD@gI7&}zrAZCW8Fuv>*jDVDc>IwkT;fzI~VzvMi0rjzMe9E{24xB zS1lQO;j=jEG>OlB5GpGlcrRuxm8qt+U8H+8CYw|~$$i?Cm21|g^0qFM$*tybvS5k+ zviSCH;&}9Ikz6%Ij-pk>_pVuG%AF3fuBVUq{PB%Q8`n?fY#Aw9te7TRhHet`8}$}d z=7cfZPtQg5igU!iZ^103a&>XjG)q)^GLYHzAHix(e8pWCg^N>7DcfAnRkWE@nym;P zDr;A2K%MjT5eZ2(*!#)}BC<_ccDbU7-3upTLUbE;u~m1PH?6O@)ORpjGp#-KYcNKX zw;IIa9(|;h9wv%=HAC3L8TrJDv;#c2e2k1K<18jbyfk|ik7Z6HV&q7Vsqk4ZF0|_U z=2AIUf1bU3c^eJ8KS0iXI9Pssx`kg)UMNPVj*xeUjO0$)qu?{L?$VR}r_hN(?b-V) zj%-hkUHs$lK>5RafGqiDt9jwmonp_aa5?Fg4Q*I+zc~A|v2>fdl$+1E%C(hBvY_RC zN!!~Em}x_}{ISVKti8Tp4D1la8gUcdwz#~w)a;CCn>2tv=3UwOJzMy@)kk@!E3q;( zGB-QrbCD0}(OTw6ts#FtUSn?URb5(ltwSGId}Z#qHkx^sZ^Wk7%%hcURDxXyDJ~WU z+j8^P7+K1_A}u||%&p;>!Hfcq?)BXbj7@dm@)z97Ty9)^cU* zgS_0c5Vk1cr?6U)#BH*5V#aoM{Z~#Vj+x25lc+Sd8Bi%ohTjaLrTgb6H>XFjL9Lt7 zzUK>&PQF9rWS{BuX%6^E-7`bjf5&E0-)|>)gHvAG<`P|5?6bGx%ahJI$=6oaEG?{!w2oXv z-gj*xi^1PEe0KQCA1}EePBsf+W2|?Is5-Awy$i+5`McMV!oKHd$$q$=-7@v^y? z$N6A6XljbNsh1-wvb8abm*d5fNAc{*j@91#5?*Wl)`qg5hu@3rN8XZvCQ)qVy=Jsu z?Y`W&oa`LVp8XsxhFpmu?^^Do=9ivq<84>j|K?-*=}sD3$^n;qvbWD}(`x-+m~#%0!Zy4+>$-fDFdlF4rH!Ii>*{R(4A*~-v0b@9*^g14peHn>PA7l8wrav*qKD$j%8XudZ_!T9$ zzgo-Jf#<<{OnDFT1ylI~{3ev&*4Gb_Do23NneOui;B)XcQ{J{a@SZB4gXgL8Joua# ze9n~5!LjmOhGS>l>A;lF!P``M8*-3TIS3q1e`YuwJWrM9A@?zr`@q#wxf=2&Q+adA zqmM%Q8T>DKhW{a-GCiMef_w@&m+3jTF!!S1aH<>*`IM=A3Jzzw!^@_+P;fg{ZU^Tu zSS;6tf=2#%G?vEVvs z@TXM%gnYqNz5ox?JsBQ`{329-0Vi|iWXK&--+ zyv9^sGxiPgi&Xgq@|sk64e}J*laZ$&9}$(0Aiq$RU%=I@Pll^6`y3Z4*1)%B*`u2~|D; z?=j^)@Df#C0ym~AH-a;%awg;^rg9T_l_{@+XP9yhZOAV|*BFn*xE$Qhl-rGC4tY?jJP0`gK36S0M?fB7DvwON`BGrgy#c z&-(^|uaPXB(?9$BFYDXsU+Vk%$A#-(iZebNJd?Ahe>;=)J?dX-ed~10WW6u?m->Fr zbj)O1#JLdXMr?;T4`O@7Y7Er=9nkk35$8kfgg8H9XT${%7ewrWxDevPh>IXDinthJ zSH#5;yCHT*Tmo@P#HA4HpDgccI&=CoNx#0zSa`ww`81u&A})uxyoIY(tCn$nRzO_Q z!e>tVXMA7(hZj9Imu`l8#i2Z=wOn=Wm{AbF4 z*x$l`&vyXgW{8^u>({gzpFqSd5Vu6!3UO=1L5PD9hahf)xGmy#h~Zy0{L}vqh&v+g zgg6v&XT)6)cSYO{ad*T$5cfpf3vqA6VTi*K_d(njaX-ZU5f1<^VfyQzffnxBvuB1s z1_A3%Q`g5}#6u7dMLZ1gaKs}JM<9+w9ECUlduCnH{jcroH7h?gQ>hIl#R6^K^?S1|ZF1@S5i|2?0p5wAhK7Ff^e z>U^(5ydLoe#2XQBLcAIA7Q|Z-Z$rEt@eag05${608}S~*dlBzLoQl|tm?IX5CF1>v z4_z>d5h>svXiuf4f z4wLHtbHpzYzeM~B@oU6yfZYtw18;%dVN&~hhxk3>4~Rb^{se5ipZE-15+>FD7sUS| z{)+e;;_rxm0GBh2=TF4HEd2L=<~QO$z{Y%Pvig^;5NAQ06>&Di*?}t<#ybbF(dX8P zZ4l=~Y>PM-u+bN}5!)fogV-K%Uc?TF9TDdP*1y#GbwZpUu`}WVhzlZiL0kxNVZ=oc z7e!nQu`A-@h}{soBQAlsB;rztOCv6WxGdswh|43cfVd)J55$!aS4QlKxC-K`h^ry4 zj<^Qmnuu#5u8p`3VlTwrh&99nF-6P}*F{_paec%M5I02J2ytV?KESS~S1tBrydUIi zVF;*<=dUJ+{Ve?V{;?@ye+&QhT>#={z{L&m+8l8p;ueToB5sAaHR2$|!H7c;w?W(% zaXZBA5qCh`5pgGAJ^!7~c)u;w!hgrRGvY3YyJl>!-cRd>xVwe_j(-neV}9+4xEJEy zh{F(vBkqH^FXDcP`y(EJcp&0IhzBDcf_Nz6VTgw#9)UOlaU|j>#LVg z$6NUC`5$TFzwtH7!hg?a0^&r(qY;m>u6s z#ETFwM!W>^QpC#;FGsur@k(I*eoy%&#lnBbdlllk+#Lp0?A%2ed1>%>8Um<>t_zmK> zh~FW8kN5+y@%@XB7KRHXBcFY;@Za~dKU?^3KKWwdzyA6U@mIv(fQuWhzwd~DApVK? z7vkTD{~*?XF~GP#E5un4XGNS1adyNx5L+X*L7Wq@E#h2=b0f9`Hs0^%L2QpWFJcG8 zj)?Oic0!!r!hf$1XT${%7ewrWxDevP7XEvE6+v7SaWTZMh>Ih3L+p;Y1mcnw{(F6w zLR=cy-EcjZL0lGbImG1=S3q15u?ONxh$|!ZL|g@NRm9a0S4Ug}aZSXv5Z6Xr2eB7o zZ^Rm6f|w#^i0dM*hqylC28bIXZiKioVjsl5h?^kxL);XxKX3{C{xjqKgaE|NGT1-k z`L{XZKnwqUUTA^1CE`|U`waiLMjV7V7})r{6N0!6;gdI|IJ@rEd19mT`l}KzPlmrj<^S~@p-5x;$Db*BMw6xj<^rvzKHuF?vHo?;(>?< zAs&o)2;!lLhan!0cm(1I#F2=jfQ`>r(THOZ$0CkH9FKS;;!%hbEd2L+Nklvv@fgHo z5syPW-ok&cw+VQQ&FT}qQ{{eQ>10>`A)s*#LwzBZwe4GW?-Eci- zMVt+BcEmXlTO+nXoD;Dv;#`PxBep}F2eCckyoenTJ0i}9*a>ld#LkEdATEg51#uz7 zg%KA)ToiFJ#IA^oBX$EWVYoir5tp#=-|M3!;!+m=Qno|J^;O!!n|!)ta2a6Z^H5pD zh`S)}intr%?udIJ?uob;;@*hE5Qih~gSao^eu(=c z9)Nft;z5W9BOZcyDB@v=ha(<=I0A7b;wZ$?z!eOBjzJs?Yh*J=+LcALB8pLZ6uS2{Z@dm^j5pP1g8Sxgx zTM=(VydCil#5)o1LcAOC9>jYQ??ar5*o>GX7KkO{{fG}BK8W}b;=_oKAU=xt7~TPuSq0wkACZm};0(OrEAP zCJ$3-n8sR4Pndg}CRoZ8n5USkL0Qez$5K{>c^^|%(?pnppbRqYfO0sLK_-7Fhr??+ z)TW!7K-mQ5%}l;9Zw8aEX)3hQ2U_j}+f;JPi z=}_*3W%}}+P}iw7)v;)c=rtMH}hq*tz21Bh0lzM-r!hA54 zjbLgFWn+_%rQ87X#->fC4W^Ay>Px4Y2AS%^TE0M2q1F)Qdbtti4NYrcz7a|dUYnq% znTTcUO)y^vtq^Eo1JrzAS`X!VXm7n~GnCVy+ybx7ra4f~F=c@%2Fh%vj?hX+nCF9+ z1JvSRa)8nSz8?n@g*9o$d^6NGLyPO7eF_tSl0q2=Q~H(!T62PyvcdL_mOU&tErZt< z*w-{DmqEGA)C-Ps8kC7J*XxO2_(P!@r?UM_)o5z|tbFM+bGsRT?*p>%_} z8ytaNma$xkqhX#M*6je_U20kgucbhCz@Z zmW+bhC}>~jLZ$?G6@oq_z*HCdRu|?|OkObeg83vUCz<-gYm$DSXqpT)lgSF^t6;J+ zt%kW3y#2EZYRs~f!4~>jlP%jP!FH2ONv1APc7ZLuV66d`wg;G+!h8TMjWBhB?{tB( zlc}?%brZ}Rz?!R}Ty0tluhk}Rn5>|*GG&FbGn9I*vndZu&X%$h%)7#*w^IOW5m0u5 zGN)ziBVZ3Bpstr)phqKMsspbiILcaZ*VETD9_D>bRbbxNR2#}FP*yQjhgTI-KPdZ| z0!_1EN}q?ALV%jXYbey3LfPCj1j?pxOhcd?2;~4chJjEHgn2!f8bH|sS_m=Cg!wR- z4}+)uM1@YY?%P_;+9%*pfK1& zaVS?peFc;&EL+Whc_r9yIF#X*5$kK&Zxtx3z@Gb=YQjju-{J-ibTFCpzgaZ3C=Es4 z7J2nLSi#CNPiHIOY!)`PoM)p~a>HkfOo7_4Ad_eqFqS2T6{JU=H4_(GjAg#xnh<>* zeYxLGdl7bwh-1k!*}I#i%&1P)a%hJd+M%i)SU+>7efK0KQWvm1eO~apS+iM|^WzQmb%a_+Z>P)J1+4S%xBqMlZF1En zw8IVUShmIO9NY8I(uWuyI}PfVZT0%gNtOBK%L~~2MPn@Epzq5kYXpJiL@ghmkdt<` z4`YQZIM9{jJ6MiA$KG6KV|`ZBRxdi2V6H-UDubEwF_hJ&A5gzGkQGV4ay0pYq$w+~{XN z2iBnVDE=wjlYVRBz=8_AGasMbj`qqE#{O$J?VsgMA0H%TnmVw;-HwspjZ;bG00;Kl z*Fjj_zfMBf8#*cV0spYThwAm#L+Y4~^(EOKSk_ry?Pcq52VJG>qMewiASG7M|w~$`%myCbr^qPI2W1q@cs9>zW)2`_5#LPsBwn#BGh^5AMPpCxtO=iO{jBZ zTn^`gt8)S4&kf@*4C9|!FPQy-WgUI|VLZ)hJYlT3KA!qm!FUQawlJPTog?FNI7eo~ zIkIf4pCdSrT%AYbwu`OH(9uh0!sm{bBX_3^Bty^7WTmtRWFmV(1}vJ%29)1MYG$uW zdqI8hq|qGeLe*g%uGXpL5=2C^vCQUqIr!g(WrS)ImUFdy>iVsgc-&CrrUrFOoa*%p zFS1en8aOqo810t3FYzuC#!8MXO#7$QqO%*iVVw5m%~Wm0 zsYL33e-45D3bkK|S<89XV;1%+)PC)fE|{0Ls?Ao-%O@bFxQZ#*uQ2RasQtpegxVMM zfvY~~e$%hjAEzo&7-z1=dFOyPTHC;}?0%D6BIlZcWZuDgGcP;zCn# z0mr4O(=6WB7gjJ*m{ZlRV6YERR z%GD}b#$4|YoNKPmHS|HKKESy)t8)!~5ULNnaFW@#+8bKNe3(EVEU}>X0nVveom1$K zQ2l|iHLI~5GqeEOl~um$rLucS}9Ru~@3He)`=X%eEaJ zedG!2)5r7JP03%06_(}jx#|4S+hEJKRnE-fZKk%j)GzOH<5Q+tSM{p|S24E+@P7-sa-QqSn8rJm8x%=-2Be=Osy z_w#qziI)1GvtKw{pFZY#pP_G-_4U44zYDh1^*%%2EFRYT27R{F^*%#C&8nYpZJ5=y z0oQ|BT@P^H&FZ{E|1IZ5?|=GzN&5e@*6&MxZ1^r-wHQw~Oli$(w(BGZRBA?pZaky; z*Bq&H??|+{;n#SXCp<(>a+RU4fyM2cDpnYN^|JfGWl&Z~Atg7hm*_w_WJX{7os4n$( zdZBh!wEIN&*RRj6JbOr?F7)~isAr$(EAGV9V)=tAz-QP#)w(XP!V;_1W=jwEqI>(n zha8vnV3jsLrG9(zikEA7ZkUHDi6~+ZrrB(V6aX^^^rmuczH-Tp;hS z50IY@c46l#uj3;Yy{4-g7Gmq-YKTi!e3;jqX!guX6TNe8(>^bYXJ+d(^X4*M#8@}3 zGj`e#+Vj8e+O(w+a@dBJkXzgG?q~AKdE?{RhBft4_ud^&UL9z|@_hYi&iUQ?pXEI1 z807<>rRLn!0nTr^_bFwzs%B3 z`cIt7Bg)#6es$v6;QO(xWd(nJdGQBstQ*_(Z@rra+tt@@S`A>kGCFwBS~yNm$_#`j|`oTy(uQoXp+OQXU=Gme)@|N14l`l8%Yuk*xM?KwOHPfU98bSguHx3Pp-^CD%?Gu+UZujgmXmIIl5V_Bda;}P@N+tD|YQ} zD^{aZ6nTFo56gP?Ae~ovDxc=iS3Z~*#5Pqp$_Ku*WfQafGWV=fg$J#OXE(JRGN{*1 z^9=Z3LJ+f3#cbE*9c9~^4a5Z)lWeYu=9F(Mh)1b-dG6Zo4$*N#%(Z>9A8 z%KD+{`z_h2rEHYCjz4OiSMP&RebDbq%H$8A^n4UMP^X(HKF5yzH#2|@xO$&NH!sD@ z(Ks2ga0CsBbf+!thsle-9#iv{AnLuUliYY`xahOco!)a9CjHlR_9}m(JbZ>}jJ}Te zld;aaSTCaDD94qW^!LRC{-RwpTYk}(HT>>DnsqP6h8Lbi#(NeMGvNQ7KAN&yt5|je znPMF;cm4@tv*YbVB3$QNY8TPMZ{>x5DIF_={OhsC=Qi@a{Y%S0(~;C$hp3p87%dZ5 zwP4*AUN$EmbY#!>Y3zaZYTjyl1(|YdhPnCKygc@FymXZA;?nn2es&f7Kck&B#hD?a z`NuYv{z%oI;^hwVi-QA&&+tfg3uj= zIjeRmtU159Hl7{Y6C!Dj%df!N=l+Q|cMbSf_ICa_zZx-Kg$!8SFKp=i zN&z*Z?DM_l7dvcBtUdw1rw93!FI6zKcdn^^34Al*Z+-R&i|(_|Z^rc`q0L#}uy^U= z6sX^RLr9It0|IKT%Nxvo`iD%!dvlj)egRoycMPfXK4aLEm`%c}$JymKd5x#euz%_d z`=`$T@pY@9&@9zQg)H3FEo{l&v3PI(6*9ABzpz@rK7_iO&!FbeSbf6YO$+i%SG-{8 zw)vI9T+OplbIEZs^l&qu&<^u@hkeL7H6*;|8?zhkdfnkqosHJk3Esa`hql<$FRa0( z0|oVvwxO?ldb#WF`{YLEke0g!grWYh@cRGXe-^9fbD+O_c_QH}_+K5_OGok2QN46D zFYP{S`ZpdviuzwVrk9T8rDJ>PI3E4qy$x}_bUcs#Z!c4PFP*?kCxrGqTlDX}B#Auw zzk5d#d+8*9$A{k=oz$ZNf6reskN&T|M*N5iecTOBeIf#i9S*i&Vl( zm-N!5ymVF@f={ng>G_wpY7-}SEGr7MQd|9d_vLA%#b`1P;srK@=9 zs$RO9m#*%mYk29JUb>c-t_|(}h1XN(kNh89*Gt#)()GQx`<;pV7ap(SANfDJk(X}l zrJF$Wf4+X2dg*4+p7*D}uh-_``tS8=;nB13x4Hj3d$}caa#(mht-N$==zqVy+l1@C z^V>rI`}G>=rQ3OF_j{;+zn(gHG-HMS#_Qmf{+^!^9{u0{e~1pV*z9OI?O z{?+02j|)Hk_w_g)`rqq2!Anns_FV73^-l8AlcE2;zEiyPR4+XZ+WiYZU(@0Ld;VvH z>%aBQ^k~4}{IfjzzxT7*UV4s4|Mz}9*Gtdy((|E{!@}!X;H4LO=|x_8G4#J*pG(5^ z-+Grq|9d@`L3^&(-}No`Xu#j`D?IwY^{w>Mt33L@^{w{OYrOPY=zp*8IxoH6OKI;BK-cHs*Ab_e4pIFUjtSdtwrz zOhO!oJ;6O?cMs0h-Q`?e*f@NL?C%iMVN=wUj+(Mx@QRyX@|P@b(juE%$p?8wF3=xf z^Yt4sUoQX_HS={*^Fcan%09?<7}b=$!${}P)mLN@b_HC7&DA~S2q=d=QO#KJB-A?A z`FgDL^gYoHD`^bfO|}HLl-opOc@25qiZ^0`ek-oRTY#unJy?WY6{Fx6VWXrwHcIZp z@lnV!LXJZGvB0tD8>?Y*kV8F4kJXJ4yFPSd#IFxq-*Z7}|=cY%y#OR8%%sxZ6YLh`Bhv7=BtRZhpugcx`0BYb66zGICxrSWz=xCZnR} zjTkQ-egVJ1>b}6crsHFMFnvuVGR_ZRiA*9Bz|M(t@H@+MSm%DR9~coBQ4G{aF+P#` z0xZvt!v63&xkNt1oF$mCAETPcF?ygLqxXw3dLbe#fi1+Cg>nIKflPp&1mdB%4od(` zZyv%+Z_bJHh>{*PIPbhTid^T#S$P!RS-Aj?piXe~j)5-4)zKc9l(JN7z8!0N6lo7fx*#+r zZ$}ixw!;zw6SEy+pW3b(02_!SbU^J>4v)}Blb3%qN2r0w%N@Rles6+N(R-5t{6xl} z5cx!g$V?`a36Zx&CUaZd6dUAC@rSn~?gpIi?P`;3fNRhISKzFCZyMn0yf5oN7VG@y4a?ImBZ^Itw{j8E}kP#Ci5J23t5Iqhd0GAxl0X0w(~NUIDVJB@&5SA{R@9*|$U^_FN_c#;4~pK0T2RlZYoWiHHG}L{wujs2Yn&4y%J} z!m49yPc({2J|Y^lk9a1dQ384T(r57X{c0SUF%h=0h!D<*?oo98`6SmQeLcSWRHdTkM!;Hb0JBtRZDqv?tCua?y6MakPu=VAa(w*g9-*-GyzfE8Lb? zRaKQhPgPiLs)~$d)do`*yus9_8d&iLQ$vlTTH-X$%xZd$b23alH+#X)%{Aa&;9fJ8 zuE927^i&GPX1Wc=p^LSgHAT#-s;p{CRgs}7xtvuUQX{k#sG$*62Umw$XsW}OvAyQG zSxtLk2hBm?I*e{gC4r00B2yLKVzbzkR86P}{HDOBv=te*BHL=}Nw3*z*h*SSkKnBa zu2YZLec*j|&^SDVxO-uTfQL}^Ayn*YKV(#@a`=N0?@1k$L*gS4wkd1Rdkg(TuQywIWC419XUK=x~nZ{4Rb9t;jPgJ}>2n=m$*da5uMj5*g?7~5>Fvz~~xg08czz|Cf>xx!W; zR|Ro}U1V2S1<_Ys^xzV@$PTb2)K?wA8K@|(vWhsCU+geJYK$7I7SkA*=G)B}N<%tQ-!< z@jI-OaySg*?qJ3k%D~^T)#?T8506Bok@SMyWwU7{+H5L?41vJ>A`ohu2}I8PB1mmB z+px0rSm8+EdSE^=QU$YoBA*Dxw&{Fg6RSbhs0M9f)u^m!a`UeqKB}WDv+wFn&_#fYEey94p)<%J^p&r z82%Eo-YhZ2mBaF?xLOInyjp5jLX}s`%u=%q-V)#vGYM8&IV`10qm@F`(y$t|(yU~~ z)kv&-ty-%}iHEF|c)%P6(gSwZJV3pHsPC+)scHdhq2^jt3$_NE_Sdjlv;|g9O*PoU zk1D4chwIE#Q;!;h*P3;xb}ei@>YV|7);wkp*lzY1(RagYsokuWTEmK{1!jsVqNbS1 zXj2ejGHe~tMOlj@lYuk9Rj7!XVX9D3RYVnqnr4csX=XNXf#>LSGYvBvpt1(2X9~P2 zW;pPHfGO5v}tB0csg(za2B|jnh7op zET+bR9r~%l%1_OQ@>7eM<9Qf4A2SQ1cNLolZxyRgzBCKlV0~#Z^HT+(9Qt8?K^kXT zqm4t%*06$zI?EIU&oX1tW+C@jSVc7!wvdfA3t4-UQnmlfDd440sZ=parBVQUm{cky z#*IOYv8DssSkoTZ9{oMQ4zr35u!72AYm8fuSI!Jr6>_+eRiP@hl1)ceY^8RH%oXwa zS_NK(ybIYXGafwNj6oZ3D$*EOE|E*5RAWpo;YTS^OG@QODPV5=e%*qRYBygmef;>~$NHfBdwH-2zKwoCj3fKxG@~T#t6^I;d!EM2vObc);U?*T4 z)xu;JaWE>g$U|{d6ZGVvCMFNXQbDYViKSd$Asi`0Eik7L6$KZiwx$iD6s0zZ-4@oy zbOUxXWhuTYOWjO-)en9@a9`8U^fl?A)2T+DK8KC4x?C9PFc3NroD&(VnkHyfO*LRO zWGh6~Obq0Xp^8#^*dK0ViXd}(RRoz_<|0%WUSZ^puL@H+a5?IWtmUYHDgeKZDWK|@ zx~7gP2doRMh*r)-R3*R>QCB*ZMx}+NL%nG|*dN>%^ZJ|q!0x6yur9E!=?SX{>JhcjVUD%xfhG5M&X91h$=IUVwq_W>yH=%5OV*y{03K|Tr~&Yjpvtr=2`WtlO9Gt6(x?Q$M8FK-3}9c%04s?1 z1z$>_X0Ze+FXe@o2%Jb|6WK%}%*`f}D0fp!5;fS&XM@c|+-5Zx8FSM_=5RDBX^6^l zQ!y%zul}r}hbc~3MRCfG_mix`VRkiv6{OZ?0vn3=8;2S2?vp_cHN)TyGt*dV)HKYb zMzzlO0sE-bp4a*y^yY@&46plU_=*^gXfF0pM9Z#*o1y3#=D`4R5r&xnO05E@8D8bh z;OBuq9R6^;`iG;k5#ZwFz9#b_4(Gqw9N-+9s0s+q9Zpo^mE{G*c=Z(DNk20~!4999 z+W1bpHokWr3_QgK!;Z2lVz6>}l+DL?>Q#ip`DD4}qu^OSUX7yhs)TU33qJ)+1ddk| z)j04R8V7F<%>dU`=UGd9&)$-rAzMp2#h#f{thV~X1m9x5uq|c?eP>^o!y))iE&~6~ z9Ck$P5<>C_yoA_gB;REglEZOoA)+$w5VzTK+*;0O&>U)wY;$OeY7P9&rl{ZSrg7Mv zZkk!D9i0H4Fdf0ifiqP{I&NmF<7T?L33fPL?Z%9o#^G+$n!01uP1Bvqh?%O4aC6Ft zo2(<e07jx8H@LZLgC*#S%{vtW|7fE>no)nw_7H0g# zY~?BnGqX|8Y;_9$DO7UGbVYSjk)%l%&f>uf=lvK zm|c>W0vCdn;)OV>K}Cglad^e~De{LE=l=WceX;gfiPNLq^>ZEGG zPs6Njz;jt^bD?gBk0=66Lp`E5IDf5#wr|uM<>$F>t%M)0o1e{z)`34%Ic))O0bDbO znZX&X55{MJJ))~%hmR;1BAj&CXHf-w(|Po*(M>v90)3RNIQDLT&AUt#~_rL#47epi%%+*p$GO zSiuui{)gRcALxXzduT5DJ(U<4z5x^1dz8Yq<9E~(mDS$C@h2)Zj^6<$2EWIc)b>3p zbYtJ6@^`TJz`Nx9?Dj7GgrD91gr5WLK6DP-lHaHM)RM=y@!?-r@$GfhLbMRq)f0M; z*zb_x9r(Ix$#d8rI4>X657=G$4R+|_{!};N{Z#kqCVj+Ardx<7l+=DyN$nH#+yy7K zcU3%KJnQ1evjSs;jt`D!i=a2H2k)x1@b0Q-nDvbAs^-FZ&BaI6nls&+e^g92=dF1& z-W<9aEV)gNbJL6`x3|?jx<|Khc5kaZHigZDGwU!b_zBK-R`kE1JjfF$V(KEu6DS_2 zK;bezqX)?M(1XpzLu!K~4=KR55wG9}*azx?3c&b4_=UlRZFL({2a4)8z`mlw=zB%o zcp{wF>^N6BY$CKLbX_H~$-v1h(+-n^lcVRhx~-C7#BCgZL5VQu1-(OU*>S$}z`p}@ zXFe;c|3D3FeY9@;1J$?1z=dJOY-C*+DzdJQ+%-{6WE~TJOXN{cwgS#@ z5unmSSHM*kTH&lKT?ns$_|{<|OZq;MzKQq^Y-8kVY@669y2)Rz2~`vEBkTI`BI{xp zQPx(pHGnm2HRLGk!D^l?72rohj%tXlbTs6NrU@;Yu7y0cY*$_jJvCs}FuN9P7_VW! zk;97MZ&cB0{HutlT98s17s;j4k#udS;?`j~Tilkh<=~ZpmA56J9G1uY zMqs1I@qT$2qV_?=KDHOI z7b5jS_7r+0zr`Eq!?0WYFn6&I^G-G?Ft6-n^UAcymsj54X?0&zbAwM5eeDhYj87NQ zWdS*l=hE|d5$SLicov^$9Tt`IY*CqCJM1a)>z?8l&#&|AU%aGz2K$8w{@VG`rN53Y z1GK|kJV2L%zl)cG{|K!B^dqiC0gUz60YEn*KiFX@SpXUGYlj7NUSM9G2bf0}kws)4 zolEC{<C|OOzz@g#*&kD?fnPGgW$f|v1nCr2=a;PmN zedT_rESQ-EGbf1d;uN0%%b+vpQ+ywIAFrW(Jg6Ig<-zt$r3ZX zd4N7LkMxlfL{9Jov5a@OJ#~BCOSo7az@5MjdxqC2COS|04IlOjqUd4it+ z<^<=INB9w7dVPea*L!$e*~PZhLUgflv5vaBi%lZyLMM@lz)56Ma3Uay&YDD0*;&Vj z-v!tinKtnFvX|JvyP$%dd;{N!YJBxh?yDbj+%}|3$j7{de83+718pMAOe`mX6C-va zcy;w8+XZcsZH~;%bxXA7x-%;3Y_rR5u+Fxjc3wl>&1S)j#8QgpnB`E4d%QDdIlRYb zh;FvCbvQ%3;@#{ko<+Wfz2XhE^BU^c{0)Bxb~suz)X(9M7SDNh*-&>C+2wQIRkTF5 zxUwa59+TS~6Pwfpy|nJ{FyqeF3QwLB$PgO|&*$oAS?&|B3ewH38E z-mSv)?!SB)d9$0#u)H1&m3d7}_@Oc;Y_*I9<)Xy`#zMZ>$P^o#*u)3>027-FGCsU~ zU>_69Tof_kCGZ@NZxWbLdTsW?-g$7VdS|wxf_KonRYS2`UDgf7Wu4bF6nRYudR+bx z71Jd3;6;%X5gz~_h>Ic?FqVmfEU|%cVX@H?!1ISCFrSdaMQ$iQ!EY$`s1UUWF&~IH zCLTt_!wkp%K!5W{#-m5lA6`A?yaytliAOcqBl$?yU@w3#WGwW@B4ni-f2+8GT5gC; z*nAYClA28H1L_P>AIu(gg7$z<&_U!ps6L_RpgK&hrcdTD?WMz%kB5Ns@laq0B^M1@ zVv$@V7Wa`Uxd-nfTP(UShl7X98{&|-A%@FC$mjeW%H_+%b|B9Vm%@xxRVd>9p1^AY*ChFja<^=DB$p=-j**I3-)DGvgr>nZem% z(M5I^T^vV?E({%qU6Plip@ia+Oeju>gdz(&0lOwZfX|A79^cSFoXzMSHBd&!vFKu@ zK98J?&g+e8u{^IYfa8h_=#4A(L+!)+QCx8VxDW3Q`}AJDTpj@K13OI5mdiCVJ=>?R z!e1k=>NWC;{wl8OEAYMwhm5|8xPs9d#Ag&&tdaZlTIqN#ytra5#$CkBtNNlm3O*{2 z!%pbq`ULtMre|06Y-Blstm)Zoxm?bc2lYX`D=r70@w_{p1>c4pLX+k;@Q9Rnhdd&W zi6b&6-XHV8azf`YIn8XuKcdee>Jh|02mh$#bOJu7bNahD2i_r_w?qDhI;Ve&*~t1^ zT*RD<$bAvH9IlWq=Na${c^KYds-i{%j7V*%yHyAjv5@sL=6`aZHL?;cgh0r zcK|OTlEW2lw9Vpz689aKkKN7@mU{7w5W&>)kK53gz=wYI}!1?jAmkrXeNqD z0d^S0oJ78uSaTBmFA!5Cfu(?-0`L4MWis$dnH+v{a3o+Pvs4l+lBaK@Tq-x>_)UF7 zpM>4i8|4kyExi=>hwo}KccJfT=iP%v0!A_s5iuhClQJ^=C?+zzMew7TMKTI1j}CSi z4Qu(RqkAwaR&vyn>7I^gB4D2NU}UgGghhy8;4PBTjr$kfoYto?_oM!(KfwE_KY{Oy z58(UalU^n7i&Zj)St+N;JZvSrDd=%pnfqcTd}TB|ZQSe+S|gq|f(%%Yp!eEkGv>Xv zun4GSjJywiugA#udZ`BmEydWUP=d61iuoCsLj_hQNIG08gXBti%Y%8?EqHm@8Igxg zk!QpeaYjs$S75i%eAyLo8}Br}EJ%J7)ATf*0p2wIL1bXh;C~QLfY0<3{S-V|K7}_~ zE`?f-3MR|tsA;Kw09+2d5B`8CAH@nBd!irf75W!&vUK_}=KRvkY?WK#|I%CKBOH5# zUWX6BidG^13fL;W9=r;+9wXQ5-@so$W_C$te(PQGw|;~68r~bdL1#wa2I%!b=dIW4 zV5@+N)`2sdxpEHLR(Nk_pkHjP4GCdL;&-vPlj2y^~ zFpp5RFb`3$!w2Adz=y#5;Cr}M_w^pl%_Ff#7iAptiZTIvi17*OuqnXfV-rGok@ zzsigz6L9?k`hoosd#`aDu*u+ONsO@{TwxuK}}~!!oP6BMt%&$^*ayGQeat0qB2=aRHb&3$teF zJK~z$Eia3`z9V*WE;*KIOg!XEV^X7~LA;7=x7;f)iHgkO zC-5El31ja-MWV=bM>>o|F`y>M7-F)HAtuOlY_fJZ0Y}rZNOVc0W0yokx&XU`Tyem0 zz?b1&#_H~ZH)BP2J-$0uksa_HJMy#W1G^*p$U8DJ^?~`}ae$Fg zgCC0_rs&Cf3aW4%71^WGWIandZx$+wNV8-_ib8iq6pBdmrStsQ6kQ09mv)ZBgk?@G+~M9Ev`;t3NWv5wqC(MAYXzH$kX80u+ymKHSi78XYs~UUmw|oy^$%P zn&9zbDG;X%9`%+&q!7(n5=uhNS!!Tv`YpNoEmIR$Y2YWO6e0;MF}=dvS27X3guU|Q zNkp&F=g`IdB)j2ZYoFvd@HhEMz7ns*d#G>ny&S;a%fZZHCK}8#(P%tkEE6(}W?c2g zqa(RWO}+6jz|`a(OPLzA3`cG0P}wjKb^(7wlx~P$g1thnW_TE6GpL@xo_NGsCQ5^N znJ6hZDP^MfGAS%4#^yxUSK|ZiL-_#S16iLvka5Uibc%x(o$kRKBJas6?4BF~93m^D z{>tE2q68iq7Y8GfiloAgNGht}v4#Hl`NR)DYxv=(je5+_#HM;IHq~MUO)YRilT0|j z4ofBqq8j(W!aD3Js(FgKE}+)flmP57Hu;(3Jd{`0BW-mZ%17Ezeja$93pvKl=f}~i z>oK+(thycncIZZrup@01u#i>s0C++UfS*>DhjN%!ZsFzi7Cu;%*MmhlT@KhqjKIj@ zb~v!It_Z6Fbn`31%IhV3xUH-+$R*sN8<9a))QfPmJg~o5gfaaQuN<(PUdzkrE@CZT z%e#oOx-9zE^0Imz?=LpO*71$p&B-7a*^NAgj3>M57;-a@C&${&&}rb0wP~PIOFt-w z^LZM0^Z7wO#vbJJc`oU^YC0FrMKyg0I)oqM)pQxK!)iDer+FFaa0FJhgrCL=28mqq z5FaEmVqPwpQ6EIqgFK@iB+@_)5}Tp@kS~e$gOvc5&@tsp9uu4y?68EMW>d<{(&02a z#ZI%4

luSyZ>SMRg<@!Q(}ct?eigL5>pB`E))?6xP#uVLh1#iOJv~=t4Sz{K|{! zuY3yTedQ?;CyCDH$xs43&1RF+5q~;jcf%)w;&Eo?bY zo*D4lzz-7B#BBbPXOgq|G?5AG?SZo~0lEi1o1K79YRB>kyq{hzs>{`)pWYyhm?>g1 zY%FCn;m-qeHV;QRt1efGXlxbyXz*8ywNR_Y2C&0gaxE|lc!;hgqrhtgFIWuGtzWB1=_ZRgA1Dt0G!W zSZ~BxDC$UqmCweiXNzj^tI2s{fSv~)psRcQ^;mm9`0GUkoU8S)2v~C`xdGa76xd+x z);<`k9;|l*Tglz{X>|tt@o0T<9>(h#vM*v*leJ|-#2TOn>mC?29%FjQ@vsn#7_S|M z=#9v+UNpqW_A&zEM-c7drC^<8C*WW`3bRwN9>_KdGe_xyEClSZARC9-A==?M-CvH= zYdyFOJWk(~%YX&hO^j_O9gfn?P}dB6pT1H1vKextz9M{Ce|-PG5%b)4^S6Ng68e&XC%$ssM{AR$Lz|nfU9*wwr#b~`(jDUp!N9ZuIM@++*i5M{v z940zQAKcE@SGUI4W?08wF$(Ky50!%L#hSx#4#L04A|*dDP9)%dVou-3AX+$9{g zMwCXdjfhi4ZWMjsRgrz*FT>1D(3`;X;msGD(dLU4z!jpN?62#|6{5c$3huAl$f2+n zz)d(FS=2?}3eg5wSGJLLWgsw69zf3lF-OlwO@^&RG>0p|D@6@Ns|%|kld!tdVIbxu zVId+=riLFPQnLdde~LbU@7d;fFe=T_JK#s99k8i#stksnDkth-JyGujt`sp?4H*NE z8jg$yKSze21QwaKk#lqlR6IwAV*U=`4&6&S3b8gyRYb*Wtu5jV)4RlQJq$g2 z;5*N~3NP?)e4OZLQ|gPnqrJ%U$=l$3GM(;dZ}W8eHopwK%p2>*zzg6DytTHnHQ34v zT*Af)iGSn7Q>drhPy6Yo{0aC8FD*;UCwzb?EeD8#y0vbkD`I9v*%+1%5zq0Ze7raZ zyU5S+i##QIQtGa@E9&V8>}Y*-I_(2L8897YB?HcYswf+Q9j@Xt>?+;}(Oc`~d=+1g z`WAU=T!aeS!k=K-Z!`#S_4CsS=xn)q1lf0juX;a94R?C_2v}^@zWhVe9Sc^U@=h`Wvt)2j!fFnVC zif9GaGKe>a(wN&Es-I1yo5T9qPNI|eN{MtQ@r%AvJpGk^0e=y;H0g*s9`HRy)J<(f za8vu9>exCqE_59mLC3|cbaEme&pQc+zo?TK3LMXea*G)65oIWUPeXZo(O%TS?Dk?1 zcQfnQK|F#U#QURtp$Pg56-DnC>duSWqP9DK4gH#4(raofUeYV|5`2YTs#j<)p}w!_t8-iEDrOFUcSNO9fOf)D?Pxs7<-^ znj+3sdJJ_HaUQFyl-E914S8PMkT(K0;&;$KlOS92K$D8W)!vJN@e-@-?omBDYRGW1*2o5|i% zZ^>aM`&0$;TgY$|?EIT5x6O^5kHL>sUK_}B+s~?!jfKcu#?oKdaYJ4nM1OHXXd&z})r*)_#L>+q_u&4QkJ`*iO7X&u_EX zUn;+C&tC(7VdiV)@R$0I_LQ>O@9G*oMaHLe4Xq1*L#6E-aA{QZhN=Kd+bXuS9l<|A zIjjo(OSR{h={sUMyiB(+_q%d>Wd*9|B9&B)CIbvuBl6?_bpi2YwE3vjY?xfKlgag)idyO70W(@wcrk$ z@D@B4zFL~_YdH1{BQDT2U<-bMj?sQP=}_&59ixNf#}5I^aX;?xAdVfQ^1K{BhH>S2 zd47_L@cpopn3Cjb0tjb*X|TZa2_4}l#P#~;o(Bula4tUTt_ z#H{_e?=>&quRfan>LBioJxB-OAEZOz1L_bp5`MgqID~o%fDb?y;0LGx58#Et4nx%e zDhe#ji}F0+JbVv1%*yuAFu8}avSBhS9#DT%Y*)L~Uf6cvcHEDD;xANYif}RP# zx0uN@$_hH7%qVB_h_aH-D9ZyQ0*Bd3`0f2LTVC$rqwFx7UXQYSczQkBjzSx4t3p@R z!*HakHW+O%uM)f=m^Z{`lmlTyYz0Id2pnj;VUNKCkwK@|Ii`qX$mz)IB$%ICVSd3sOkeBBkuF2`aW-O9o_}k(FtWuT}Ri{wGpq52W#tk z@arK$bU9sg!!DX`_!&Pse#YL#V_+9eklnIN0g2hA*@W?HZm;F0{#H8C^yvlMnI# zdOv)>(MhC`J@J2iPn}MtgV)`rlilrNzKk!%zLM3zWqdVkp)IXfdvKvGqx*=`h|))t z(K!(BA2F+dkx3PWy+)q&?pm6jWPwO3)o=+YHpeXGpXh#lbVZBb6F-;neu`2 zQDs^LT!cRll8^AmN6?#}lB?t@Kjjd~RSuCS*fxqZL(4{RoYZG^-MJ7Feh|9Gmhn?dS(cC2L3e05HkZ-($nt>*+s)UGfRSv2Ru7rq{FwXQde+()z!p?<;U3S@L~gFsxd4kcnqtK^^9Q^ zOe9qS>xqQbl=q-e<*~N5%wa$LNhS$&x)n=+hFX+(~xa#3cm z!(5a_^f8&0!z^L}>thzMQq;$kqFyGO>IKe*x_hDSKE`2b94n1^4!dGrY?T>RXH%tU zEX$_G;?F#lQOnpuQ$}sWA9UFURhQ~g88y+=rHN(B8l7S$2Crm~K>_SxWCE*xf2@zAm$Vm#Pn#7d|pvmi5>B~(EsA?5|45?@s33xA^VSH7x@@`o;?s(=@o zD$omYFM1WV$SgFCXc4R``K#5K5d>Rpg3M~O2KgqlQSe70b|rj$2AN8Ty~YHnO5|{j znS*h2(6idi1ur&DXg&T2RAt=ZUKz0+x*SzhWtB%%f%zkU9YBfV7mKX8ziiXI) z8u>4qHPi#xLv;goQ(e_EI>fG;Wpvf_f!{~ZR7h*3f0Mp4QMlwjSO-cG(Q1 zf$+Mjfz(x%7v)7)^@%OR$ZPBxb91g?@cc5#43x!Y!Myy z@Bq~xNBd*!A{qd10Qd;>0Ojxqt0ekigu_bWAfg;(%c-AQj!Zkva%6mH2GAq(&^$7A z)I(ScYC(0>eba*On<1(f`S8Q07acYY;5Sh9R0B1D>M1-87yQtKVD<$Tg83KNL(`Vp zqOS$81)XJQSqnM|8=_9K1@K(7dg?N}%-sCTn00|QRy9R+(O4zoHAN!c1gZ)A8o(MN z3HRYi;QPQ1n;N2#a#b8QjZi})bpZYWWIteJx+p0FIt=d3s)EUzTeBPWf8)z$? zG3U)zsO_{J*ivn$mMRL5!dt2ih}i)u4*Yq*d8jHtOrUvCo8fJylg8DwnOdmxh;;#x zE8%e3tx9ID9V#;Pd16h^A=(qG{@l zY>G5F+=l#$w#apQ3#wVCH|TY!Z3Ao({6#vmnW*21o%k&KotUX-0td^%_zZg{KEa*} z+zFeCQH%6kIT!1?3cM<_n5!}j7$#4NEasG$3;&eZg)ukeE`3T&$C~b9jnlD8>^0G+ z#bzA_f3w~K4wG9j=9JiieJ7{Tmyg{*oP2DSzJZ-5v-BkJ1fbKC^aPK}W_E!cW;6M* zyJ#17&CJCfnmMwWYELnEGZlk(remg=a@d&?ay&1{B;=`i8eUqYhV7uzA}!xRkIfEB z%O9Jxd?Wmg6ly|&*?6eQ##^h_DjVNPt<_GtXfB$av<19{u9z#p82pNf!P`@Pam6@n zPt8<)(M&Z(Yo?Bw)Sl?65jzts6j(=OLfkqc)U;N+sE%;hT3s|b_%6iF!7n0ieUSrk zUy5w(wRkD;rv~LqF-~S<&(JeYj`Vo1;g6KB#Yj0C&oaA>QMWP1VJz@7SS&mj>lqZD zEd_6(z791Kc3ob_GpRdQw;m6ikTGTc2%XIjM!6^f)-;pRYv1*v0jheR4+WZ zUM|6|swZNJJ_dGp6nqqXLLP;k#QuyE@|*sF-5Mv5=R5c(W-dmQ6!a1NQT{~FM|mB1 zT}xVzs+M5HcJNQsw;r>$V+{6p;3)Qp03~6xxUPQ)hdG(sOL84Ca22~(HpiBzSAr5l%h52HG9ies5Q#r zTb7=$Q0e(1*d$t{7O6=T4JsO+NYB_K%v?!@#WPk|tVEnQY?CQ0-moCrWHy-~T8gME z)Kat+YB6jP@U~eDzHJt%i4>jRHV!8uW^^8n*AvlUv3OxIoiYPAndykMR86NPu%&7V zB29xoja-!5W*YhyLuKY}L}tE3Wrf`~SrIKOV)x|kcK|(Mv2{-#TmPh<{3i|Jz4#EY z`)$Bi;8%)`PyJ)VkB1Sl@jHN@@FMEE_9ykixVrcZyBBxZ7c={E_lb629!K}#v0!m@ zEZspk{}Xi(v2<1Yi7MHu_#CcL#h7!zbEdX9XXdNgV!pZrf4+*yFPTdwB43~;(*mf;bi*uA8Tbt|8BZTtu5OqN ze6?DxR>4-IjigoZN0NK$&O`Q!tpvYftAH!fzfvs&F2mRxW;ytVS*8}M1>lA1F5)gk z)&=lti%Y0xC1z&iD^*7BMlAy`gk{HFDuMO~ET48*Oy<-1bTK&xdXAlsHpk}H^I###Y3F6rgY7W!gXhDzAAG(oEDOu|7*|;4)B!R8m>-y5UgDQ{ewj^Q z;@R{hafeS5+4LRw*>yI3jXNABuJLPpn7GOZ+pFNg)?Ye*5O|QC!yV?a37e%hfge&6P+C6q7j;E~eecX7Q$ zFVP;q^J=f>;x|z#@Vlt?dZwL=Pmn%iFYibFS?`o?Kkp~-D(shbyQX89Rlx7q&l|&h z7gOMIa=U1!U_-oV&uB6B?I$xE zaW_gn;{(nIyQ%Y;oB9}bd)>qiv19TSc8%R6(p~vY>dM=o{l>k>ZTM~6k9?bcD2La< z*Xa}PSH4bd`6tzu7sS2ZZFy&KXZ}bPw3q0S>dY@uOwW@7F41K?FW|C@fhPo9R?S2V z+e~~nb#d2yGr=mYIL+8%i$~A?U;eSpEiEw?zo(8~Wfi=%v3mHu9XKfzLjqrH^2=CpQa}#BL4IQX{NQpylLC^^BtKC)zWGpmeN_Kz zE2jpeoj)&_PTcT|8D~8* z;PADehR}a%2nny@|1THT9umHGoS%^J^Yic8SH@!gy`IksIQ#r`F#OPe{QuAXNA=2t z47oigU}@>6A@2NdjyyAvQ zLXqVGSr4=cKDIBO|M;K{0UujT3AvJSjoFpy61Z+?%?2RdG`kt-gd%o*Ud=& zUFNM0=sLYvaJ#%QLaFeEfSh-y7evgE@R8z64I*MJKx6l)(7nE z`t5(kN6jJOH6xdAcrL^V39mU)qlkWiDOUva>!v~*tzP1nZswYR|HIf>M^)8){~u9o zQL)_kP3duFyM7GigIcei49A||#XVk;J$nc?0`WBb_n*gkeQ#&2K!Y(C>}eO&9y zUwh4(J7><+`!##^9QfoH0_!8GKIc6ivR762L7U;v1-6et?StM34LJjcw;VKdd+wvFucP2 zpW|)h%5zXE|5A3^r4n1^cMj%USYu)ylkybl;A&W7&*DD-dS!li)mQA4=U{v10|us> zl-_O5Dsz*^Ic%Re6K#WREK^XK`ft%@RE}=Hm{dR}Z8`?cdhRrI`$uA;n0@&;OwXId zTnGLw8qG_B53Ao8_L+s`kt`C*{C&~X(*s)EfM+wdNfR=QP6geJB9{!e+n zthp~d-zGuHLnR`cOt>p5)j9jg>J9U;xBUr#K8RbAxyU~gdLN<`D4IobpFSl&-IIdoJsEEa26wbt8Y)6cOG)X3dj7GjfAJ#29NT%O47 zhvv$Fmr<~Fz^31xtLM?n(Vy#b$0j?plW_RMM?-%Xy-dA6D--X_$fNP_+HAwFW>1h2 zv#n6Vwc|{@p>H7Y6!V(z*BR*qf={kh(0v#LR#Y|y;;Vpe5hA(cJY3I|F@Sae&@qnB^&D4}Lq ztuT4!Y^K{2ixyY*%Qi?H+?UP2?5;BIje^9R|626)wL9EZ+mF#uv+6R7o~PEOx@vEj z9ir1`5gT^5P#~e-hWcL0 z29sLN{mu5u0cz_E8x(oGnCbb;^13Qx96l>g7dE(0Jyr0Q6)v}5!}R=r%2PABp}N-9 z2CUZ@rrUJ}G*z=_+u+*ch9c#OpE6Hd!ENpgrrY{^>F*nCudkNjxY}N)n9%K+OKYo! z#bO{&v0_GorL`)_Y;f;uHrAk28x_{e22HO78qlGgdX?J-mODF*<(s@!?G@4BG-8M; z(o|KDV2Ai=tIea|+o^)BZ4i0vxbbjo3022G3f7Mgj*Kc^R!!U&1y8z~rtjQ}D*YTQ zM4red^mIM{2#;E7jE@!C=9+L52|dr{0@c)m4OVzrq`HWU@KT-2*kR73FQ#ta zwKP@F6t;8e07JJ+tZS@1``96H)Oe#;(^~3W_h<;nHs93Ko6h3uW0D<4H@*~^?Rx_? zFWCkYvSw%QLoI4#oE_TSXRk8sHa?$aSc2hU{q>TS49WeAxp_zOfTn8dAjAQ ztNNF{(2y2pcSYyqj4<4Rv*66m)A8$MoO+DgUu6 z-YW5K6cnv?km=>`R_)Z+VKxX~?!>;&sIAhCv%_C}In&39{@Xu|Vg0xD8@5u1zFMKi z?og(WVSPQ($Glz#eVprSk-p|Uuh2?G%(a4NzdcOvmn`A+lv_#^JWccVx3R5{TUX(u zh6F~z+0T!0&s9SW`(lU3FG~vDcCO&9+OM@i(2HS0&#$My-Q%N{KCnW`u{IVqvzEG@ z!v;rx%n*M{*ZT`uj%!?(Y9q5TVmaML-ebgj$atI>4_S_DT$gGizj0zYJ&&G_EXOsj zOSO^Z7;zo)8z+84uH(dYdLG^WQ-0((rg0t9xbA9w+c$^q--5V=E zpI$~9Fz|VmB)3US1|)QEj3-wkL(1*X2@Vb?1y{>#9+v2K&<$ubYwHoI4#xI%S49c z#E^R3^mM&G$e*0}6L}1X*>oG34T#y0<$xG(rAu*G^d%aSgZ-GEj!Xy|AEw&4HUh1U z6(`h(23@Vt@W)f8+qg~w={v4_K-RbTYh1fAA)qk~5ZfTnq}qD<$YwyChPno%n|~@(&yU;!#5Tw? zKsJpXlYzJzITnc9k)?rH8d(>J;q~7l&x6ME zK>R;-p9PxEMc#v14ps+Zd(>7SozSgNn*UQw~2lq#*?TOqA#KXwR zpfPi*jcf_T!^np~e25GT8V{%1$iqNfjT{TK*U)WbJfM9Fatjb=>gD791+@JO(EbJa z4QQXD{}ve!h%@!_|1ag}zeTTqF#O#L_F+mkKId>4bi3L~pe@P1zukou z?`4N$vsV19!-$Ltu;B0-hQ3xwzE<=J3-Sr?f0LW%%5falRzEMwj?E<7mp%mUcT#@- zHgxd;FszcHPneNUct=boKBCNi*mH25K>sS!e66YW+U9u~EItQrbK0?Wu3bg?&F3K7 z*HFiQ{B^RwISZ2(zcDeLQ99-qls|f6ep%;M1oUcl&U}(#tnl-Vg+jse*~~r3q6h8= zZ&was_1~43v)9K!&VpNivyXi&E8h>0aIW_%Q@1x5dE|=qr(oQoI>v#sg{9N7L^!k{ zt56ZOWj9m7n9OfX-9~nj#8kSi>LtiSc@rRZ``^ae9oytT9j)*vcOSD)iOKR@0|}MC z-u^AURm6R%*4v>%ueD6Kqf362Cx=Brp-Yb=Jj5p%*F->vfAcdv9d%!k?hiOnNo_kH z11-(O$fq^A`V@luQ>PpZ^-+=jqP{EA`q{^utG8opuw$t!^WW80)o`-Ig|CMUBe|+d z?rVoCQ+BXV`F)jlQ5&py{`($ZFaMu=EmWak^u2spWUMP!M_oZ*+2z|eS+PEC)v!S} zNE(=(-Tl|10#4c>`=wPDJ-uLo3Tk`WXlN_Gnt!UBUOvmp)Qw!xU>SMR)a{Jz{gs*4 z21U0U!lOwu22tjThH|Urrx&kQw+88nH?TXA0_m5@a$h(S<(M?rnSI-6=JBeYwd8o z^(djI_jxjmwOAAhpT5VkOOGxwqe(P84J{||Lp_|cXsGYDk>Ob7+PF=%aZGY;e5Tsy z2j=7l#xcohOom0SUR4>C1Ah`1z}~nu>jv;a8E9Fss}QZEPR8qi$Bxd1draIOK(H9Z~uazK7LoC~w}n%YhvvW)E@|_0VO^1%c^8OBa-$C($OlXIc+K_nZ`G=j0SIHP^wR z`7_vP|Gdm$KfV;eYHoQT@@V5s2*3qZE&+mYqZNCX*41*YB%i=YkwF9cGoi5O3WVf2Wk$IU(ux+}tfoHOk&Utm)%WbQX!*U$5 z98YFNy(Tm7Ks&U1zf!DTos+N1wGSq5D=(_|&dEI+AApqfb4Av~-2CmzLlD`+Q>=5_ zEp8}S`#{h^cKPdmI2#ed65@t2|6!+~;@MedJxgg8ax5N> z^q9#uWopXimp=_9PZwkB1J@XbQsSXr!VZSqC5gL&J+0zcg?&&Y%~!GJ?h`S+NhlU*HDrIqCqc~UVZ7Zm4vCRdwdBAZe5w~G4Tx^ln(MN*%sPvXhX7=+3A*9^%pKO`UYaa}E{pjd- zsr9?0e#bFm(wIRm<;11fN1XboK-%(bV9~=6Gd8Ql_7~Lt*j9qt3j3W?zwf&dz``FM zg>s2`& z0uI5eJl{kcr>uPA$35`A(JT=?{w|xiYA+1PbU|R8hM+hNOc#`n`6cDYxgcpSU@V8A zSdOYS6UFXoD74hlbIP-ABGq5(#LKZuuu_)E<40K;t!^Cuh(jD`bS$q|2dcH#7*U{vdY$xF(IEi_AF$U>)BozEoTD-21Q(m2+z;9B1v2$>& zsL12s%*YoevXCGa`X?|>%)b%`V;_uW&L>Wak3|z9vZ1$wkpwYP<$+n{<@Q#nIcO(C zUXsL1d82a6TGOp?s!U#y@Azwx6dVneKNl1CFXxsk8YsBseT1ocIpypIC*VSw1+1*g zH!<^W989S&~8UGNg;mgz41|8Lx(7Y}LyoP*-xW8@Y1JzdTMs9_LzSw+dZk zX(^%C%=N5sleW^wH43J0jWdUI8!K13#KN1^d;XZ7F7BudyJ&@Sp`nozrdg$#HVTUQ zd0F)Iw?@3I^HIQM3&uR$vCHmLV_~z)R?8Ex%X$y&@cG83h)lb0$gHRB@WFQt(`^nr zWRF$xaPy2bIwUldd6p)^fTuke`gJAwbzkSKA`fId1%d7Rn*&PJmBVf%f$NSe?9HTj z*{ohHc)gv?8s)P~=WOv16VsBdy}4b^j*NjD+c8!la-}5x)YCuvua<#@tT61>c6RE; zdD(ZU6>2ry$i}NqGVDU)&$y|L@3<`7B_2wSt0?-Pye|XWML|f`U=};{nXJ6X4r30l z`pw>z{(=lRA>hN2{4AU$%I6ytY`s#btPxmPB++4xIu}Wjw zR6B(iR2LTV{fW#=M+jU0-`iB+yuJ!a0tMaSvy`rG=`F`xC zM?N(yUo1EcPh;r$r++A<*4|REV8cZNxmpoddkt);j)Ys`w%Zow+N_Q$5nzXB{yo|K z9QD<$#Wn~oIDqMS-0clit}-_0duOmwvuQ&Wxy}xLXU7H0gucR$tpd=wNeJ%{DRcP}&3 z22Xzkv!2!JsNL7lPtx$ES>_}tzaSe7aDQg%=_SW8b-y3RDzv*0x%yl!)iu-xaDSg! zwo47wt5OVny1OW{+4Gvp`Y;+Arg66*KPzJOPc=MMSMO*Tg8wuXeY}c%yjylvS7*1y zKw`e|$Sn)2spWXSx#C=2q5rnsrShr@#;B~z5y*7=SoT^f_Ol&ov>L}^cY3RjmT0)* zwTwmAv8We^Y|tWq8!`DtP4()d9m?eJ{>}E>SX*ttF*)O}@~m`J3Dt3)f_t(1j5?od zDBo6An7yf~C>c~;Ejen1wS)SJ)9$`1cP1N*b@wq6lDKNZqru**jq&yeSCw!sTSI5F zA(JYoP3xke%+#%B_qD#N{SzzrG;m@?zi`!{P7Fj;5ys^u7Ihrkzre^D4EI@z_IkRl zmtU?}GnFgS2Ad1l7X_Oe>T-b?*btwU>FEzLH&GwXTVa$fo#>L(NV#L&!k6=&;$CcH zwcv~mrq#G<>gkbLJk`PP3P!fQX6kur|65sYudSfayOQSBS@qRejGIb+9byi;USB!= zu;F>r=HKjhx9X`$DLB{WIEzVfOii3X2tr|Q%=Jdci{!r zrf4nowjGZDWRvv`<*M>r8^${BXZ@~$I?~MsQ!XE6`dPM~XRmX8<%?(B#mnCPEx%sA z{#?{zPFjpUG)_J=)MZY(jGD_d&1IyysMnnI8hvY=d~2woT+>iS8j3p0NoP@`IcYTN zGACU|on@r6=(}U&yIVJ_IR9|e1Z(^rhwm=+S*X8^^cQuRlP;tFa?)SaTuz!hY*+<8 z`vk_Y4X_CG>2dPup%!z}V$@ttnycHW%bavsx6!A^$)|@p#Yv|EdM5DMcosH&-ZqB1 z%t@E^{5hR=@O=HOF!tdlhFZ)?i&48dX}WHsK627cjKSj+gQusXzH`#|UR#>*mmOoE zS*c0_HJy{bqmFaZaXlS1nv+IjJRYZbJk#X@Kide;i%ZRC=(ptLw?sDJ#0IFpT+?5! z>2Ioyn#)OZQHwcgG3q9eZlcBkX&h=LkhY@U0qGrTA}6gZ(mo&byc+{ErZjeFacX|l zUm*R}^P?66X))?Akp7}>0_i5k?*YZ{q1FRwJ#qpkPCy?lCm$^8CXlw`8V7&{~RG1Ee*$wg9ayI8TAr2h=Yh{lYZ_v^69(59%6_-k~2A$d8IT3#7BC zBS1P*@jy+eawY~&+9DnL3#8Ggvp_nFS`3;N18Fhpa;lB%Eyf!BT5oYp23qq`Pl1>L z*LI+_9k~KDu1L*;S^%U4s3Sl+qSs9?AGHZco9Y#;2raiMcoP1?z;zO6oz&YLwGT-9 zP!oYPQEyw+O&|@`%hB5wc>{k7f5qaAA$4{wHq|;PPI|*K+`)Qy+gk=kY5^g4M_X+vuxDC)ckrL z)Hu*IF4abj!x-CN8iyY3^=(Y8oqx07=i2r z#7@YZK#Yp9{12ALX#)%`*jb?Oj*;)qQU2wT>)~Xp zm!jV8o6NQ1dRSd*r@;Jz@?*N7^wXUditf+X!;)-87}|{N8!`h6+OP?-j(;K07G%#j zA0x(vY=LbVcN=IkveyoN%?{^4|K5o1VrD^UeEJ#!(d&MQ!ae4S5kcFb%CT3%b;lkt zboq7&{dQS&ymebt_UoQq`tHK@alo^skk5f@3nWN3rctOtR^nrJOJa`xX719 z@<`{+hoC~_Z4><@jQk|c!poaum!cnR#XEuiC`SG$ylZ39T^r*@T0WA6!NeykM90DL ztZSaV5OMWyG2+QAGf&$C@Fx8yaoU(DmYhEYZq+7R%8uV`HoLSNK3{Q`=qqF7E5kgD z@&t#R6;JWG_o{VdPTs}Ex+_+wTSu}HnfHiL-&b2 zZ!AIV4iy6?C5S@{LZR=iJU@MLpLRw=`DRC1*25)5_SeT@`6oO_x{+2={T<`;YyRC3 zzW=pAAD|!~Ao{W*$(M!g#;D!?-Mv)I$P@-WtKl7>@bU(=mHnzsl)iode23?hn1@lG zHm#lI`&@gW_u4=M+e%Pdp>LLvZ+7>9#iCnI6Ovt@i)}bQ4|Y5O+lytBU%h9G^Bt@( zYu;{AK5C8VnRh>YcXg52R*c#T-ne z<9#!Ijf1n-oCS^_PUENM)^q3sKLIHT870<-QGL)yXONHX`Kv2Np+4c@W=ku5bGK&W zTE)TMqMjnbIX&O{J{)WACohCcR_1*w5x`aR}Pxb#c^3P<zH4R<`>+~DPNyF0G5SE1lpWzoL`*g7xsmuzChopB;P5H z4NhZY?E*J>GWH}ycM2BR?~M8##}%V-Rs3mL(xn_@366h8;~$?Z>ACn`oZc&DZ+nq-Ec$h`_O+nR$c|oJR9q@`2CRjJ$sb)a zFS(xqzp2+uOlOqdq+uV!W+>Yst*Px~_T{hH+a#dJaGn4eL8^a(Ta z31?YdP~IAJ6t0cyB&N^JC&#*yp34*mQ}oyT8>uRU%BdJB7o&eA1y0qHDD{P?=wuX|^Yc zdxcIxzIWY>;q~u|Lb(#*L=tBgLIcF3nNiUGubnLH@?EiXr4_!$)fK%y#f$Xsli)k^npe)JPqEJYnEPQt94B7tP%|syILckmrItt z1}NyCZ4+DaY@3`=FB-O$*kNu@x*?;wS>f@?oor8?IdZXEG#q|?+q^YwtK8xpx9|SytD?{i&q=X`v4{WQ(P-FuW|r zP^G;f!#l)7MDF&i+LG1sPNoFNb#YGZEahg(UbEuB^a(e+ukR&Kj*NklCEP^1umN6REnlI;VPk@DE!;HIWx67XY#KFf?tyoy^CGx?E zIJmNXIosi7m!tc~LV>WE>|pUZvc)$A`Lk?i=m(JG2k>5XK@M#l4{B3oqnPD= z9}$z8>wp9qdC3lWV#-H)Hu@qb;d?a<8_r&~y(qu=DR>@H!*H4RQFgUT*svszk!i#Q z**De>yFUz!EOIZi%Du)8--Dea7qaXYEIk)0SP37w2Go*zwv;_GVNQu%1gh z`x{5+7gjDU&`))C7)$PxUoC#Gpl6}i#@8D8)cFaq4&F9!U$1CiKY4RzwXR$gSVk;m zK@Ey4^O1rYaVL#8=L)I7J2qHfBCqBC=Zxx~qVaIF&^IHX?|V6+Ogz-i(418p{y^G$ zCcx(^4~>#t)2b(b#X`u%NvzPU%*ydDli#Ihv2!!4evuL~)a%M#wJ5A!?nl4h=yL4A zq++T<*%*u;cxJ(P6-DtX#rk=uZENtFTT))ub)LKO9%YB~=@v#F@Nid)@eWi(rLPe; zpVw7QD_X&KXG_-kD5!33cG#MG39IbcP_-{iRBvH1=ClR;ueMNEY`ErFcd}<*&C~+CdzH7!UN$wUg}Qy+3V&xl@|$nG zNMJ3MJt7KrR*7I0T@3Z2jurM6+raen$V|0WLYNJvKC-b%DHauiv44LR-OW~xv#8;( ztWfz|65faPQL}SeA%1lXt9+-9O2pW$1`}gh&hI{|9oB7o;yH%#-iqSAYqYMfKI1*L zfW8mdkRV@m-q{Adr+i}RFL|qf+u2}2{l(_9%6NC_iVa3pOFoJFKBevZ6z%&8doWde z68hCwUNv{-Hk7bMLyH2_&CwOPs<0k8D)08l?5=f{kFO1G>|A1sR&|wsp=ik9G0rSk ztijLtw0qtKMfHpIRlbvUke{=O+r1m9n#oo;-u02$F{Pmza>x!dzvUA>mNiuaT(CYn zi;9&l{_3)~9WHfFD|#+%rYe@iyN9E5iNJf!R9&#cqfcc7#xN_2VV-!VwmM_SyZqV5 zvJ8_!+51|7AFjo4&#q|CzW#}iI*`Q*!D<0pRIRFdig91lS~?r(uTbQ#NH40X0YM7m z;BzrCx`cWa6%Au+^<{J1D=Jr^U}o#?Y|#6%>Qjqo_^a3$ma9)0wKpLKyU^UGzV9Aat?w$ zi&yZS5i!?Cr8^J}Deha1OtC&HE&$uJWLCC$X+zZw_akYlzB57>H&oSM*V#vy(EH_vi1t?-#@OM&nh;~d*k&rehZP3a_+m88-ByWZ*bXh< z8Y6eNQkS0EpwiOJtcJaxHap%$3-cAjFZ-d*H-WYF-*HTCDylMNgb-%^PZ7N+` zxqr38nY?%p?nq5l0R7|xk|v778)~Vk8SJoVVNDTrwx*g@#RfMg*A#Ou)KF@z6<)w7 zv7w!}%23Y=ALA^d+O6tp`FuM}>D5)Vep+3ns}&7-XIB+7($`Rr`rF_{y5izh(`u@F zS37L^(ol5tuBNtSiiZ6g%ZPzRy;KEkhr5BU;!9mG)wnmF4TU+0mQAau8yMfd_g+oW zYhW4Gccg;Ki!zy&zPl@zkQkVK*=`^sabl#f<9T_yA}8U~?Xd#S#~GcEBQJ4{mpJj# zgq~S=wJ!pe`;Bz)5+hzh=3&G<$WDyd37Llx^I%LYqnKFaB1T+Cp)Y{ZxjFI@BVIx-V#GzrPMp{Y`HB%=Aun;_C1fN{jD+XroX*XWmpJhfvJfX0 z!ZUPEXXwaFoY)DOifc@jnvU$miJg#(xW+}CxCl9l6GvgJFQ-^vJd5Xa7LQ!SiHne( zIC0dU(vgceaS`$oCtgC1;>1y?`Z02+!y_ozZ&+cjl9Z+hDZmET&Acac{iKoTd9_2YYa0 z4~!Y$6f=Nq!-;M1T%OapJbo*H)3*YU@i;LaavdkGL;m5!KNuUpDK-H4gcF}2n{i?@ zNC4CM2p2x5CAGI4u zyHVeP^c{5{NcWKqfY<=fnt{%skspBg0l5N*E08yUctg*ROajCt$SOdrf(!%1FvvDP zUMT1jI$iPN1<95IZ4X0r3^`7!Z#krvY&q#wvgos{joK1$sof6F+8$85ZfbDfyPuo zOobc;#8JpsKzxNv1sYR<##BH|g^U5j7|2dQ?1bM>0Q!CcvIh`*AX5P`6*3qQgCSo5 z@fC6!5T_w)0kIZx8W5);!vHZ1#yc{6#s*q1H?JV zxyharW=%w-!T*P9kY+|rPyDIJ0a!q4}tj&%8%)S(l3uRS*F%I zU>BqqXbZCEEqrYZcijW_h%_>H$3<+z$WWO6>9gp$_>q`U--H5AiK5-6I%0eJJ&@+J zvmChVp@@Eb0>0EsDVu2EDJx+>K_j@+V-_;``!zsa59ffC$*J^MbhR^uR*_en>48q}WH*Mj;Q$AC#=;Pv~X;@P$1kf}{}StBfvW#}0Kts1=%J`M1U zvsf4e^-C+!W@KX?L3#EKN?;eO+MxByvBGt3gn9CN46I*OSKydoG-j}W8TBvvx;go} zalA1aZ&(LLb-?;Fsz1ILqxZu1W%Rz~?q?Q7mdApT(^ov?wS?F8SXiA21hy5^+KN$I zjma8sj_w-|xmUT18&Mn08!ZzdQ;S@VJ~gOMJ>G`0A>4$%ZSRXxtz+1+nI?R%cU|Ba z2ct8NI@=2HCqc)+J^HA?vk6XT6L>zw=zJ8~hfQU}*^Q3_#HGUtka2XRS!3}`^X(G! zQ#~mocFt*Hw)96|-{AaW#k7>jtPl@-#<~lf3ykK%;zob7rH2$m`D_p$y8j#5>_iNt z|5)$m*xpw?`saSuajukY6yCufxIkp@IVExu+7(MK66i08tl|+3!$k;3 zg?k%MURN>WR3ha4{NBvSlTErA9)7>$rZ;JvkYNP1V z;kapbM*mW?g<`{_(PjX~0H6Id?Pp)imobo3p{}E?7_}9)p@rHI+u1_xjO}lX{!ja3 zzZldn*moAK?<{5i(|6eK7V39=F2?x&dM?(-p!#5)4Xw@w)fwN*p!dQvM1#%{@!c7{ zJGKd-AVwO5^Igz_3Os0YT@Rx=uQbaR;1 zs-M_r#5|}eZ?uYmlraW!6W&L#;oWL8guQLwK^D$p`*{bXj(=U*2j@=X0LQ+mqs;qR zz?lV%y*S@Q-h3)y)Xm)Hy{}#6=6C@YYKIv&qHD>v&EsL?>@eE$OJ9H1cMBW|Q`Qc{Y-r|^ugg_-fuFxjB1g5Uxh zS;l=eWbdBw5P#ZJ^z!qS-+RZv+(0k^LX^@^=q6Jw9xe=_4ex7%`Ha=+IJj_Kk-CUyS|k zJ6!TEi7;g1gUGf~LDImx=fz(yr^PLhf zW^NP<^IahKq)&hg1@bfWgGus(Rc*Umw!yd#?{vG^z^`>>tKcN4->9o;32h_Cf3icp zl?BAPh6!?BzIb@EzCAlv(qHmNc3@KqU>wMHc@ks1Q+P1ja%-M!hTn?Jcd|d5zcony z8*2ag{mh6#&1CKj@jvhH{C%mbytpGCzx(&jtkAEGY}+CR8Wt%c4qxpjU*LJ=^s4E_ zna~xoWLgPpzh-Ak9|p+k84|%u_*!1x8z4*VL4TTGl$pNVXnBGuNXf9mGNjaTnbA2O z7P@ew!j+mX z%VKW@L_uGM{yItix}|%Q<+ASrj65TlNAi7H0`J$j=by)lpHG%sh9*GvX?Kn0#S-L* z@v$I^^t3cM`&?EHi-o5T#otEPbk|kdi3wvWqN8}lvEN3pp_f<8F7tbF`%TPPyFD)ah zExakSeUUI|TXW-X!b5rVri3R!RgHeLl4ZW*b|{v6RbIoinhAtvS`whp{m9+dE^s zb6OR0E)Fg)Ysv;+%B((pjfMJe+Oq4hS(HcR7%1~%0@I(>a=>f(+%*AG{(Wq$8U9@M z8W;~QUM<i5YC zccDR;mlwySjJ=+V{k3LGEeg5f7)@p`DCB3u5(p5u6T-mzn1%9WZPtqIa zTb(I?yjKZrUstnj4UzbuD`uX^_x{WddHq_4eJ^t7?^0qD{f4`T32@cR|&yi+h1A zciGDawbkIMcKG_wTu1y5r}!U?^WhZdgUrA+W?;k&$O)V{0r`OuKj1x3M)yFG9~kii z#^i8{$-&qgPO&%05?o^muCW9smO%F4#2&~DoR|R_gA-#QS8(DA71NngyKVa+)r`Q{053aEX*Vuy-dmwLc;tk{qu5kq?u0Uqs z#0IPnHD1}DZqedMH%sK1=_7d4lsYHmq?PCASF&Pm^q88|Tm zvI-|wK~CVr38;OXv=3Q@6RV)ka?)AUbWWO%`p8Kikuf+i266}|4nf`Iq?@SqoU|T! zh7-@AUUSlG)NxKaj;z9oRgkGTF%|LyCw@R);>1hH2AtRcHJXz~BTH~%31k3H41jFI ziEWUzII$M;04E+mPT<4|$T^%i2f2m85D*I?djPQq>IINqpr!z63hFYDE@PYzP@E6y z5s)6?nh&(*BcA~A32FzBcA&-qX&mYckiKA?22h*^Y9EmHp{4_AI_e;h4x;t}X&-7m zkk+H718F+yAdn6ss{pYI>JgA0ArAoY0BSvu)}xLC={RaMkVYe$0kIh}3=qR0+W@f* zavBh)A)5iQ8L|)%3n7C6F&MHF5IZ4j0kIb9GWs=Bbs0#PQGY?xUm*QO#sgwJ)OsMT zM-BwyK;%OpK12=y;t*soAO=Im17bX6Li|q8FD69p0^%;@B_LkHd%HmQc9D@lVK16l`VkcxIAVxy|1maKR3LvgPrUGIrWI`Y&M8*SRJY+&3CPan=Vo0Y} zj{n({CiQ>zWT-!ycYgUVAN9F2bo}DUYn|+Ft|>M}^{<~14uxLjFAiJ4vq={IZEj=! zaQOsS-(w0)ihg9Yt5}wwUO50louYVRvcaFGdCJd~oi93{?xhmaJe6b*zt$Ia?<~NJ zzrM(e2Ln_tu$iy@k_V=)N|2R@>=S2N4N}uT42Kb28kh&_9+p_9qB8MW%JHmq_^i=Q zvPefAE@K_=x14^f*8$5>R1Ut2%y9JAyI>uZRtM#%!#u3RpPq&9uISydeWas(W?}p2 z@4m=;G!*<6z|U?qIND0H|7UuZU_%~j(nMw(K2EI?J5B4b4(82g(;?0;SVG}wv1QRH z9Ai#SQ%jVT?jcju#t*Bw`>m2JDtwGudwT*bc@jQe&lm^9ibTr_C~CO(PkQ zeVEeA$2!aM&3@GxpT+1|SdNOoI zHBo+q383f4zEEZV(-(S~dYjBYIRXDKMQL6pOJ%OxZYq&)`5esR>kRri-r}}SV?Hyc zL&|<%=-Sdx`1SBmm`4`;Po8{bcJq|tNir?(tmZcwt5&RyV$;Sf7CIg{|B_k;nUvgFo40`4o{}9B0=iO#|J| z(jEBS2cLNspH3L_^y<*5Px zmps1B6#MvaINYzWSKjTion7BM4Q|~EV1G*Q(*9I!VGok4PmfW$ZJsKuc2vhW-@(24 z)U-FG^On2vSyW@tZ9UKN?v?n|u2mtjS5>9kQ^L#ei4Rut_CX_+ZXbS^O$D}YqNcT- zCjVp~30fm|e{@psT6a-@vLA0c%HBXGSzzxJrQ0{Vm<*g6^QgxYLAN(A%^>FVxXEYk z>jwq%&6P826j##CP>yfXES|lIZyYchE*JD;ud3s>w_kfGJx}E2ZbB^C$FGkV0h8`$ zXZ^OgDVNZeusqKcIo=b$Sw6WDq&?y+x`f%d@3tX$M{T@}{JS`OZNt=}ytl>FPHko9 zvlCRecWp)2yJghPXZXKVwCC!1^m2ZCZh;u1ey$1X`G(0-e;2(>y*{ST7_qTJTUh-p zD{T1dl3D0=uzVOaTIqH}7gy1{i??zb zT@iigX?e49lc3_Hc_M037s&L@Nex}TfE~*7w;a)Jfch}qRerl>QQnqvO8>2%?mV*= zoBY8``GtGoo%j?{8NZR!Cw-~k%F*kfKNtTGl5A6`3qN&a9Db+JokveDr3zN%O1Jeq zdiihG&ftk(_K7Fq<3P6?eJUzC>{-p87M>1cf*$hQ1DdFyfOAq$M?W!dzq$?N9q>cy zdDaImaOhS*??(=uuJWd0wXJgqrCmLtc%6PBSMc z>z=VPEtE4udfb%Te9Fm8w|l|Jc8j@MJCt=)W7WL5bA;_ie^@#GvefgJD1Th;@hApY zdskIHz4P)a>z;@@b0&jsf7mdQpUvYUZ)O??dj9I&h3xeHF)y93xpI#UQ&sa-rrhyu8Lxl6*KfA|Ui$my9KC{n z?ia`h6d$B?yH8-U^y;&NFMQNqEh$;Sd~?uKb}l&uYR>hPW7ZC5?@vrtwR&V%UX6T2 zP0?EIjW$`tjc+_IdspSZ>w(PorULNOd6ZMw7?mUaYT3tf%j|u$2$W6Auh_b@s=W0A z?_%Uu`O11Jh`-Cv*iXtvcU%6JuICRp9xpp4w^m<{p5`+X>!=^kHp>D=ZqR>wzv6ga z+k-=%`^6wvk0EON%58jE{;s^uw{|MekMYc@NM?2XWj65mut1(z*;wg$qCI?g`z}3H zjhlC6$^9PcpY}m~X)$lm?P3FS$eUf)@W9(6m2RiGRYcCIbBx!2H(15Z?8U2G%nR&o z1Er^Ld-YnLKl51JJk}lVo~mqG$8?gz@=b!BJDRHSW@<-;?xSA5v* zZfbM!Dn`h$cVb(qX}^{8r##mmT$EqqhsrMPdV=0ZMMj3o#T83H)zMXyZin>DttR`G zgEl{2alOuZx;{2Wf2gab6~4*S4E)Ib&g_;x$Mdl~tw*Y~oqbe|udd3n^nfhrSzJ}f zewTmWR6?D!2Jm^wLsYgAE4cpKKjrtRu#yLD_E!_TW&pkXis!qk4r%+ySJC(RinVoA zz57lWgLO^n<3#`MpT@BMTaUi=)Z^9e7V)ZQi6(7#v*blcV@jV!1!1Bg@Hj4?p94`N?&uHgcLI zuDe*-N3KJD`;7ed;+#Ja*Xen5`%n3i--Ltf?7z59JVmba|K}&y{m*n{E!p8e+|?!R z4Ssv`UHJ|94VeubT(=y#PS1nPCO09!g(1KFDgSSI+MkNJh1@vj7dNKb$a0`@-T$?ix@E;vJ>0zA7(=?;>2lj zC$ot*cn&$)uN~<5^>Xs0O~>0TkK>Dm4RkOeeoNpN6YA-D`N(gq_J0|V4MoN~g^V|A z+d45Pe4N_hHH+(YKxRwLbE=LDFEOJkbig^GmxKJt1CdepBctjz@|*GHRj~ZL8odMK(hQ!?TTF z?1y~CbN+|HkkdG^;-Auy&Eyf}wDP|=E!Eb`M1~a0ks)UwL+W+Y)Ajlwf3gF}pXHE0 zk;kM&X8VH7rrW*TrpW=wZ14O3aIhRB#tX@wjW<8o1phx-KG4&V38n9U`7qUfoVgwU zEO33owb5thGze^aNX!~EOXzmBZ|&gTm+`DB>ihUeDfZzyc^%hDJ$=!ziW2UulCN`) zgsRS+WX`x>9QaS*GC2(yaw0P1NS6|_(unHn>z&G|iz{Te{(-y$a#6Wm4|saynGwh{ zdOB(iZ-h+J{n%;VBmS<;8GTaLK!(X=y&!8N+tfm~(QUnaVc6@xH|6>Yce`nRRpH;^-fF(v5~jDU{@VdAZV>gXE?hghQR=o{H@yzX!@TByn0ZR@M7j7sTwS5( zOU$(xJ|-L7ml~i+ZYV_xYu>x{drVwY@;9jXKL5I{P+FOQn~O z49_*5PqpSW|*v0-Ix!xvk_j!O*hai3sIaV)6Zy(RU zbMjEHUwa3A9O`B2_1DYP+XweYsqHEMDT3b(ImX)|4<`@E!6za!??7hO?e4E$^Y&*S zi|5G0nLUfcW7oUfb8`uGbVqZz{=F}Mf;_C-$is3Ba&>0p>Qd3BxPg0(W4PDQZDc%y z_9<c7o$zANlX z*GJ}zxzF|T|1ag}za2Q*3m*5{z$+Cmp>$hcTlBR{pPTx;*4qL15eDre#_q|-%X_`z z{=fDJX7T^-5&mZ$y^nBDk(yuc7l&_oSctRO@y~SiV#+PnN$lali-rUGz&ZKA>#>b| z^FF&c+jkV`{_xBXji@e|LD3Cuo}Mq58xu&B#BBCl{IOVs5|E*m9=P-A|gel zw9rC}rDO{sJK6WF*{V5*>}21C$iBh*^BNlR^b);D;cz}!ZXJHwzdA9);-yto_c>sX!M=Z`pr}Lr(>su z^=JI6zaR4S$ssoEa14j}RGtsZb9wm%yHdH?oK_|4-kLMwnj>D)x=GA7kEYo_jK%P~ zcgcGeP95!wg!u2{$ca-)|1&-3_AKVzjPj-nTX5y+cXitePYz|!x2at5U{pEW`^kn* zi*e*_>pHMA6I$^|gP#904cUpwnM!%u;Kq3&sXUE_|JW#w*V1N+ELA?vaxho%wdP@K~#op<_LDk{%^p`*>@ zy8qm4EYMSV~ccsGT(0?#4 zD2>K!7|Rx445wy}#jIq}It?$FSh&pIdYZ$|5wYl;C?o>p$piFeq`RGOLb zqrYwVe?5P&dLat#{{9^cos`DNlEbWR{cx&0{ULcBYdkoNT6E86%GaC9>sBo_h@W}# zhqNUIOnE)%U71KO-Wz=~1K?VxS^Jn{*kyf4G3h(MnqEl5Ck;vP1 zsjlMyK3*f+xyOy|#I{`=g?*Js`)$3N{r2xP?4RV$zy0&?G_=Q-L_#}o0ki|dJ}FB3 zWc<&KVz_OtkmVN6&mM(w8qtS^Rv*%7@Q)?M%FFMb|6Q0}yH6@lLmR9x2ijl{LL02_ zt2D*bhnB>%U+Vu%!~Q9Zs@-pur`sQ?!?sNx&HLZKL>}9&7oJQ?r;h$hMCF_V`((+j z+I9+`EM@0Gc#dfsx_x+O-uLoE#$kP$*dHOV4?sJJDy@Y50roK}?PDDF zG1zuw9c;&XupO0`SFX#j4-3;1tymEpBPl8Ch$(De<8Jv(`86FhmoYoopF6_-to$C7 zUtjrkR-6-PdJEWBVBdp%Qjqsa<=5G>VJwl3wTiCA?9Iq4WKZoe@@3g8(hH8YfH!^r zXa4oGE;Inz2RzqfMZR0zHQH*em-hhETrs64H_E&eQ8$9ljyp$N_i%D+qb{YZ7~N((FD=jVbg+n4hTk{+zgTL^_}Uc>}qZ{EXzj@uLIhPAyradyuTt949R!$jgkn zpuf^|%ONi5wxXu_0!g7$yI zNdFlr)bzXy-T1kJ>{|Sjz%-YpFT?b*DW&Ycr487k(UH>668UF0jJ4&`Yv#ji!tdhp z@6znElYAMmN^JUk9EYDJ^3THiXVUwh0`K4Vf)176Cwv!6A%B(-)1G8$OkJk1PT_IR zg#^wKEWYVj4)d8b-?L^u`#XQTA-8fqE~Yi;&kxTIVJ|L!5-c7i(ZX$EWbos!LdEPP z>bbTbPs;WqX2*4M&+-V^76{B13xRuKU;rGM>6_dLn8i8;i=dAD)jr+WQ;M-ezD#sHnW7zUKFN@ zJl*bC9Dk=`!3zCz8B9YhvS2r0`qg7gaxgfVKGw5i&?n2Ke%>JH=T)9=Fxo~4*n3P= zTar$HKK)Nf+0z@oi_(JM`jkqOZZ>D1i|UKkKVs<0*$0{KgHOc?tJCPrSL$rxqYH|a z&3`*JnLd-`EJ@@6!|w^I^>(wuvKZbl?~k}`xeYsGI*|`CccL!P*PjA?{qyEzk^1*G zG5xh;XxE+N$heQ;%&&Po4e#HPzt*$izQQur>`^9Zw*3a_dtexcJi|rEGYs-f#l|i? zY^yf^xUiD#`D!M}ee`h)b6I%FdDiB}Fshuv=6IeXF`M?Xl>-8)vx6E{@2*GP-?!rC z)31{my-G=Tv@d<#q%A$TuL8!MwWg1!>yQoIc9GKC(eT{ZpgX2F&y3xafkQQ1>O(jJtF75 zb?J`u>yWFg{GN`qo<(^*Ux{r%8#E~-e1r#w_rT=$0Pl^i=ktV?!0O_SCwlh^I;Iay3v=M7+;>x+8gOpQpA zqn*MR_LP&&h9Ea`Bm9{&Vw>#`JqP)*QE~Qc~ zZ4J5f!p1JtuXY=Ki@L*duG+A>9-$o8KmXRPX8psuVm`I&3bs3yxBKdbbD4T;f1=$o zmPfQ4N#`|(XIR~N$6&t_<^3wNY8orEI8FlfLOE;~B5xPiXPCUtz;>bXcIou>B?$<5 zE-qd?f`9KEPPgg!G0lh*Y`~CuG-j+FA4TeLjpLn!8$LDTG+;i@fcdU4AC~9x@^CD0 z`B;Fl984a|(aNS1-}laf{g~99mo}Th4tqZqZktV@t3=8(ujP>>D?@2Mk>^Y2>X}+c z1ec0*S|Cy?EfWsQ7=+yrtOlu)-s4hv%L@a!O7wQYET;*yX|&)ITXbUAGCUyTw4l=T z6PV5$(VuF$?GhF*F{CifrRhyDefPZqugWxoXRiEa_75|7lGPmNri;HRcI-&uxyw2c zmqS*wrIx(1ZtBup{t0kS{%RNW5(nx)aLRzC+l%d=!T!(bW|H>F$?bN zJiO3a%1BJgNOd41rT;o1ntxqM3L@g^E#2&5IWHX?u}JJ4JDVNLpTHa4@)r)OzZUvd zrSa`TDvO?*K)Owjh3`x&_}L9lS)*(fdTQEv!L3w_ZhG%W%_`f$m%Lh#?PaO(eQ|3( z*`qDjeN;fKwoM?@2S=0UgW~w44JyQa@@(R1Ii62Fb6!~Y-hl>CJKA>qDK=$sI4?cs z#y+;#B($;~LmRBVO13q+Eu5y~=!VAyEVtodu`tetZ&vR{Ki1D-o=vRz_fM9*P3kyd zWW)^epl{;;J3myT6HD&3m>v5Z%iHZJ5Et3l^NBMZxbl4S^236!B9U9Q&Lqap zo>!_*p_W z2>pG6>C+v5$j5qW>{FL-#5gdRKCpr3y+QueF1`Cd^I^;v%d~jHf@6o#6;AV8Yxq@MUl7TD^h|>9wQm)D-e;2DUWxxR zU39OXa4dZiw+QIQqE?J7>A2I0pEtMWjjW8tZkG3m-;Qv;Z?UUba3_sFX!=EfOk1Lq zY5z`pjf`c@oxSOk{S9c|fkWbJmOyB35^WVW9>$3437ukKEX3!@f$f|Zy6L|Vm6u;|j*FHbT2PN=efYp%O9kI^_t}EIVI0Q#mq=~b*P-oNd4AP<6VW`% zluwWMpw4pwS;=@xhpL$V&+@mbxKKPSo)6f&ib1XxuS2fxIcSOaK6(~e{Bu@w@5ne8k2|aZu4!5<6rxS6;qB zqvu51p#e3W*Ns;g9AuLi;jdaX=8oHRc;~{OY;mFmkBE2RUH5gDTjv)e3&^(hfFt-V|ciVhlGgpGi)?el4CX9Z&zi`O2U1 z)gT@A>4zg98*Bw_;;j`eL?3$8N0&~!vxI!&pGfabz8rEoX?DCd?`_zXE6<<2EQ37| z`|)T;ZECt>G0|IT!XNi>;u(Aln>RNU?rU<6T`1M$p5h>SdeH!JVotDla=j&Ok)_~0 zTW%M7o=BySi!|7aLw5WdwDC^T%@KYIQ()ZVKw25tfPc8K2kyHa!(&rk3(7y+{Bb%d zb6w9CnnY6N>FjmteB~xzXm{&MY%+(k15IM6Mb1*v?wC7Y^P_@&+WLwF{(QtfoVTEh z?io_$>7ys~x&5zR+^K;dt5=vsZk8wVl}EaW@0(v{pJtBY58u0zt#)@wypKLWkKAgr%>hjuX3E=ydKR@t=&X^iyMdtd9I>)1izSdnbrC8Ni@zKO_k@n zf1JS-;z*v*yOb#}Gg^Bt%a4!cWpBLL+_U>xR(n61ns$$jn|hH6%Z*s-<#4Jzy>QbM zaps#C8uX=*1vRlDKZg0zh#U>7w%8iR1k505L7jPI)JkFz8_6SQW)btOS)}tTBYI*7 zr6-$q;C`p>kfA26_~v9APIEa4xM0GS`?8gnxoFvgw>#CAM|Qa_Dlf16`pUl-YB7~+ zap$Gq6wro7z~fe+u2T_i-*)@7?l?ZnBobr#z01i9_5^~JjM+Lc92#c+Vs zcK7#pLH%WN{e`+rrMhefbs6ffDA!-8xuRTi1BS&5kG%V`AL$dJZ=oFSiEl&Wp-m5J zu_)Ez6Htqx=8Dsx=3a!Ft2_;LnJAzxYks!m%G1zxM?9fTZy2=cL7gg=>r~X#4np+9 z6v5vsgF;;vpRqOML5)PAE@KX^PxtI!L>DdV)GLv z(s;aWFdi?mpRwqgSC?-6HiSaEr69FiE{1kX$OeLx4dA|x3aGz=QvDTd{?*^V)7_Vh zRLC_KYOyHQ;`M{NvAd(j!*|7N>L%1UL9TH+2M!5ap|%cy+6wiK?5M4GP!mPDR;FD% zE!bT5qhr(>Qsw2L{)$rl)%_DIC@&ASm`JslHG3gK{T1Z;3w2YJ>Sip|O&Gr?%H#K- z))Nb;_1B=*LrxH+oG=P<0<^&javN+x^eiUV)-x@)3(`5fL$L;fdPHB<)}w-`l}tLu z>%%b)=Tat}OG}S+5uw%)xz@nBh0KF<%k8&bY+s%=)s3A&>J8~E)i35+Tfg8O!dedZ zrM=)BqP)zXOFPJVsCT+h?|SWe%Y307H6Pkhq0SPi&iX^0g*rk8LLE5*b!3TA50d^n znOYcWk%{pRbi}Mu@}j*VhdN8=L7iO+brxzdQL4oy$DtOFgjx*s_wTe`k(Mx**wKlz z9qBOmdgBQ==fB%gof(8KkQt^xW`J`$c?jqBAUL-}u22m5mn;4*1GS(;t_9Cjb_g$O z>xlAuQ-1v`C-mW7d%bvJeLog)LX8A&NaOi&4;6=!ZRk@tPd0_~r1Cn4+DA4*?Td!m z*E9D&;`A(ldaoZyl-DiPO*Rv1=z6H3%CDomZU>lm7Gof9`0MW{%F8cm+JV}^xjG-t z)hdPu$tuV~had|n&p($niw%c!`&2l$Ll#mTg)B7a3OpNYn-0x|yyOdc>3g{elWJuY z)XHDK?MTN3lW0ZhL{Zo1GLdR-n<`fV^-+-P)aSk$7M_>ttW1)?t5A_Rl(lmPvWo) ze8=SPGF)Cplf}_N(_EnKW)=(CZb;>}JL#JGZjWhmw=o{`6w`VCS%HA?!+N3RgcjxY!J)AHj6j zmk#{pk{RM_FMA5pRGKb_>Bm!&X=<)h;|_!4K@j+|)4M z#Huwv8(l6gIPcD#e~;orErNcQ;Dz3RMz`p z425YXPn(Y!N=H<9vCH+|5t!!k^ykAqyroM%JMZ+7yc(22j2GMydyG!x_1-%0T`2`@ z*-c|O?`E(ixpzcwm_O%cAyIw)jxB=cgzh|;#&g`%*=+Bd&d^RmrFIgn)b4!$oH8=N ztW?}EHiAQYl;8pFQLCUmYC=#xdAX$KyEblFed*e@*=&1TZT`$#gMPPJ&-TK749Y?j zX143?oHERze%Ec*cM z?J7^$%42Qmh|*hZj^#44_+=3N>Qu!BxO`-dT?pLseiu8UI4(TyJ&r<~7>v=aX%iD2 zryp?FeoHoN9LaOtI`PDlr`W10)9UZ4beg#mj3WlUOE z`(a&8INy|6AFX1Q3x{!?w=qOsrp&^R?;lviv^U)*u&%g~?RvHj))lnP7Rhb1dFiet ziYBe-in+bH|3+hy+DMg75(Buurwz;1Y(WoKdT=|%V&QsnN51wW;jpf#w5|$ZUBTz2 z^5@m|JHT2rsUUareK{SRP8&^~TWmPwxp>2=ib(6w6xN~idDn%WB0bMWaoB&LKPI2O zgZ-z&s3fvwc1s#u>B2)Nx+>)NqxtnEyEOc{xEb2$r0bvsPcI57E}r~~|19#pYb$!Y zy@G36ccx3uToN80aN;l39BA~M6J*6s0}gGT#d4dca~B1B5#~mneT+G5Um|T^7+YTb zew=6N5qrNh4%?T=+t(?noGoZwhtHbp!goWBlYj3GzXRmEZUs39pRvP173f19!b+LH z^nRH9etPZt!u~91O4OZ$IkeyM_O^_CUUhu=dh=-BIs@)AWZ$^0t7sQ!cli!oERo!oKl(<89&;7|ty_?I$mHPi3&(iM-umzasK}_3>1p zBCpXPa<11z4xfcF_$-d_S)OmSW6SeClk07Ua`@gE8w35vAK`mvF`MkjADF)n=3ncT z%-`nqVI9r%h_nyP%}XZv0m;&FLFD7&r>ogSStlNvn)m%q%qq`v8~s0chK2a@#&^3nFiefu%P53f!AH|H*fzGW|M} z+WD74JAc%uBz73~z5cN8!MTD-=L&Z?SHSs%$>$T;|3!KKhu_QP-wU6M%AadSRXkri zC7DDTdNG)$(sTh#57(%}RZrVMehq|Y84P84R|%1}W2{CU+N*YcdP{$v@b$KE*j|e| z$91F+UGEDE9|#oMenq+M7v^($J}ghA<J&km(_9|Z-KjJvtlPH6`Yfl#!3~nNPD;>ix56veUb8^`G?;5#MHjup#AW?h+E=?k_GK3WwIy^a zJSrmfU~J&r2CYfc^T)*d+a~dLDpT3Y2z@?xw;R>$^Hj)PR*x><9Z1LSd&ue^3E_nS zlyuE&M)n0q)7uMov;JHA3EyUnAsc=rQ|0M)aULY(OlR7DfCFE*coW?BC4<(zRY&L> z94{KxUbnj3-|p;fcUa7We)^oAznvEbEFtMR9PRoZx(=q2c zY1Aa19ip9h(U>k=dHPR1%aSus;5&lr_mbd&Th%$hHGCs}hcO}J zhvqm7hs!{M4;l&{&h51%RMT~FfE zos-y+-7T4iR%5aI)l>@C{^G>Snrr{L=7SVvt{L3TcA2=gL27$e>aAJB9t@ z(y7+Od19(-SHax&1vAeNr4=)0vLXB8Xv+AW02;u`urz(Ee>XDKl;#>GaA4>BU#DTX|3smLA~htoj*$&7FckV4TM@Y%4Qb^ z#EF&A4iH>9LpU|nmHN$X%SUW$E;d{k%nc6zAxF-S6qdh*?;I{k=Z`&Ci)}oH^WA=5 z$u%7dp|!g^KX}oM&;J@J-rqimcigMVS=I#MxXnfQ=7{rqiEX6r382=gm&#GMn3QkJRkB zV!*^S?#*nN|ICTheavIwP+$q%gUXK@=xS4k9@k2$Ze`HvPm4-+>TDN1)YPfkr2u+z zfH~9d9?#EN&1Xx$nKQqw(R@(RcH*8%g~-fw?rC*Wa9vt1?B3ObrkFyT+L1b>7{;qS zzjujj3!5!W4$a`CzKh~f6zDa)8~+!&I3a44S#-XPdl+ z+^=K6^)m@SqLJm~_dAkyG&{%A&c9?=#rkVZEhO}MH|}!BXC6?8atQ z9%&fFwI(eWoKNqA@0~f)$stCxahqqXPo@+7R8fx(@7WvL`1PqyS^(qA%}F+lVa|jx z%*HA$#qISIskQwa^3!Pxqfd4Cd{0*n*X&HXX771!qG*3~Akp;?;ltA_2!*!AO+~RB zo;jp|_6jDoSHwg=R0Ku_vuP}uAKG}{k* z#;t;Tr3`OJpRaEy{Cbo|*BtvL_!;$JQX9^*=32zxyCKUSm_{Fsa~66fWQvN&#ykkx z(A~qW#M~*Pc*FBg$ar%FTdma|o|&Ye9nUu)V`vcnkfuW2J9{#%N#XRvl@pLp9N4MO zcC>42JGyb*9>oQN(fniGyM#Jev4@2Us)%Y&Rdd~$iQ`yWac>*bdD}>+TkOOuA6xO~ zQ~NUOC^*L&?_+aSZVShs2lELD-^tv7Tdd!Z!TkH0&7?z7jCjhTJ3ZdUhGsT)VYwax zojSWMy}i3HpMAoB+N{ziQ(pcNbu3b#FTnkO#>jo$v0Zr6D2=YZScg5EnN6N&b%J(5 zcvj8;ef~NBx)_?_Nmc7MppzO;RrFmRz!!bh;LG1=vUULz_~A{H$%sE9 zd1h!x)%JGfV|%(g&;FA^pFL<^Y@@5i{rnHHKAl|YI=6D7Q}l}rg=ZK!|9&9Ud7MgL zXgw5-0}@zM^C9$i<5wiHn-%x`cAcHmHKOhHPm?R%zmlp|z4?x_=|p%toTt3H#*W5X zK}N}-B-mJhj0ET6nvC?VTM})2(T8|{HD%C0PUZe_$V*fyFHt!!d1>~dyL$d6Ev}uE z@)DKv5@a4h&ODHv*a*l@$&j5O^N1rL^OQp7fibayJSG-$5tVZh)(7OT&>Ml zkg3G_kg3#zY~eezTjAdH>C{&U6rkT+w1s~2psF+uc?sGBYVs1~B2msonYZr}DLXxc z>;(Brkn>f)2CbQ#mmnjFaz=uFbJnJ|-yHH1k@8X;LOwK~khfd@^bjVBM{@UyW znTjc8s=xCgJBd8`x#*k06ask(?x}4~|CG5=$Wfx4qoD4Ka@~j8P2}2b@qmeZ znJV905D4QMXNvGlW8M>T1=M;$uJw=sh@1f++rYj1YqAaG1R~{xt9+E`wX7eR0e#~8 zpidmKP>Ga<_CgkdK6*j!qu=6tfDG?&h>bcklwWa-5C>WQr!Y>;kg^Bq3)!OtvImSA z5PK>Tc^r%xfNVqLY*T;SV6qAN<@-aw{PZU}qI|Ca$ao4l<3X--mUA8CpAtF$z}Nsm z8XMpOV*{S<{;81j31l-84B2b}WHZQhM9Ouckn0w!O(AklgRul9@>qfe&J9UicPn-r zvLfU|QO<{u<%n@oO_m#LwveoYESC#e4#o_S%P?l(F!Z%Rh7{xs`DkMliS1dFMIqyn zEs*g#K*odosgUxg7vxXp9kE2tv5>D6@XSv-9r6`qCqc?ipAY>Zkf}sDQ$darm2#Be z06A(N(q7KSa(ykfVr{qb~TVi;&YqIj2Eh5(8({;qMYj>BPpbe zl>fY_1Tvm*9x|R2WIV`PqLj5hp3G&_2AGpy-Qu~8^?X+T&76cmUaC4=otH!@F9lhj z6dDv)F)zqM0%W1(npNyt?{cO-!JR{n5|2QR8Ur~BvXdxfr&tXacsPg1G@93(hvC^2 z!hao8Xn1FL0_Wsn>72YPsCjX~8%@#-&f6n4PbQ&_rj|(O^Nnym|ESW8?t=4tcR0_V zoSDsBpcY(#S^)jp@SL>@)@<7=vj5iuQ5VkJME#-o+U_oE1O3!Xp`UuPTRF3-J-0(m z5${4x*?y@G>!GVf?P|~eiAM)AGpOA^(kjRur!B+^>ib%#@49tb3d^DHFM_%s+p{;7 zvcZu_0c^|?Un<>ic2leRC)BDI<$Q8pOS3ur?`%eY&KPk%v<>euh zl(d0NvJ)~1WEEj0WR+czRd&RlQ=EqkV-FbyvJI274fH#cJm`1s4*kxMf5<_|KZhXy z*jMP1iI9tiLN4;^lvR`s*=dUDIp%c!B{>S&NrdbK`HG2@f^b0I@!xoPsw!*+-PkS!k+-62xuEQZW! zP*R6$Z#k$ag)Ew+vy`brcAXE|ReAbpStDu!IkrFKSmpkyfj^^#zL0?rKnBiN{UR=f zYUWo8jFv(K`4B4z0gkfkAGGbv+VfsB25!921MvbPgt@4;JJmvj<+=pGp3 z0r{NB`5eZ{ki#%eCJx5QcnozB10chvLWV!OV+QF4+5Q$}d&pEI=U=8`Ql_e#u0kP4 zk>`-3+Cq+kd_`J9zS;%(3NlrRl&LP)WGZ;RxPo@7$y7ueGL_2xZOm^_0{LJzgr3rU zMfwHYB2JK4ax4Jin@eiaEjDI)) z;~!STJ&CTv!^fUXa+R_TYYExr4`dq{|HDjR{Ese-|ACw%N;#+RFk=C-E|IdXO4Id< z1RE{tv3MYF(AW#^Hy%u+tZN5Z7jmgE8FJ|W$fb~11u3ugfxN2g5Jz;4H2A@l1Nc(! zh9nU(tyQA40N-aRk-yIZ8CaAu@Q&lZ1jxqB3$k%2WMjz8&a)shyKGuTJ}mkyI@M*fDLLY#e&5BnaQ!&keL9in-?Z+}<>g@+L0+aJ zTZ^U}J`|6h@}uQGT6}a>rMRZjk3!!HiFjDkw{qz~I~vvAiRr-@B$$S4sG8}RW9lTB z+rYkD4lc5~Wbv~!K6Y3R>3*;e>2NicZ(8m^O=%}~pqDi-kEs;keq3bn?nK`H zs~)!ss7H5?H{+A9?Ie{iCo2Xls$QPU%m13$j{l^)*sr;rX)C>D%=~sI8o8!3&->`W zqM!J)Io63ZG|is1>bIHsABm>+-i=|*S00JH?@q(+7mr|;j=L5vpj&$^7}}hz(2huF6&0{I!5d#8j?}aDtJ1mDupSL@F-aLyw^zwu_Rt)P3KCdW$-WbDX zG_Gtp34-xBx-CAD{KQ+NPd|5_>HdU#Q2R+vM$-T3E7?4LDeFFIG%Ft$&D*NBV83m( z+0ca(`O~wl1;sQEarER2eshhrF#fV3wKnjCz8=a-znak{bEvdFnY=z>TQhlE!#<#p z_knJ`dy6gx&FHeC0X(ovecFB<7nAx2@_~+ZSb9rsQR{k|G)?4bScXf>%z$NzU7r#6 za1**^b{n1-YA1B9uSsWn2XNSDh_ufpg2ycF7{8FN{u86#@S}r~* zzCUuBxYuwOg%r*9N8$ZVJHmiCF29r0D38&-W z*}fSF?i$SDSRnGT@Z-u=Qn<*HX0L0>8#I|iejinZdwCDw zD}DQP&0C>LU48^rADc@(RpFWCL%7$dlY)ZSArfKiL_P>G7KMz#U)i+4ueUmxtb?tVq zJad5A!teb7zqd_D8GD#|hb)5kv;X9Cru3d!@7njgZ&)E4TKl=650SU6?L&mmPUO!% zp>7c|gmp3)*2$#rY2*p4w>hxh_FA4M0p}CQYFKZuZb^3Sx`pQ}5qX`%aYy9i4z?+g zw<#RIBoB_?t8o0nu^`CD0vxk~{n68;3mmg>ybGVU-S1E5#?iK_2Oqt zJ}%&R5$C}15(UQ#oR`F2wdW-`MwoPrB*8HP=Pot~&RyAX?t59a@{c+dxyy14S`w%&or&6HBf_yT!Y|vXY%px=G~Y|H7F2jP-Xm37n*;kYIOj0woZ|rJoI_`liG1w9F~XL>F|rYk5jb{4>DcjxV`rR4 z0ds`oMHh~jlhYfKw@}O8K`n!0M|cg#PAMEaQ16IT?<}C+N&TBIIyNCcLee;#>zI75 z%f4U4r25zu>Z7!beTA=~uMpa)xYSP7 z2->Nj4T{TcP;Fli;5VmlW6zvElkgv5V!E*^-E}^QwmYt1*G&(KhjO8hw6PwaeDxK1 zokNU?;lV3rv}V+(F%5DP8>gUA%kr?n84NRJCNM>#w>0SJd^yif;ugj z#AfXdDFYc8?EZT{@z z;3QsIuLWdXF03@rqLqvMX@w&Z9)EMEv+tYIspFOlf0k&m3l*vK%+qZpyB}rHqP1HU z(Q(?Mj(Y?*x4gpKSA-Uy+!RN5{I`YaS$c`1a_xA#UtQ@`rxT*0Nj~Y;G@h%uJs0;I zxiZs&6#j71aCT=xD1Wr+0$UQ>n-xx&&yL2#au2h@lAJ?b=nW^hPs(o}7T0Pkn{_^l zKUkg3!nWAa{6GtCV3DCX5){TGJs*)Doic^IWldmDpkERr4mh7LA%8iZNvzE*2GM!O9Xg1s{ zc8%|Dq0Mz?I&Y>WSA6Tv#!a0>e-7;|-YiwXvw6nT@0nxCPLFVwbs(8;n6p$|_WoSS z5_oSN1xNbuP(#5rC4ip$ph3I!Stxj~O{XniE)nl{ix8x?riReg1b5bAS!Q9>%i=6? zTR()A|4N|qj|LHF2NR@ruqDtArhD3fEih}s2Y2(NZqbw2xQ?UgtJ#IDQTcRsBQBH8 zd>PGsrtA~k9t@_b?HkZOO^%CSG!8NIwbA^E#&NOR25*6acb)3O}4NTfPI3Pq30(C_INVdWfL(z5 zv^>y@a_*y(!RK|~C6=!n%N&2l(Jc?7*uX8>Y@pu_);VMt9}(4#neGYWXS-Zs;l-}v z)qX>1hZ`!~=PF^7zD3f7G5grwTbmU7w`9=YHt^iKd&P=~gb+IH(`Vw)qYLZzIGnzH zdxqR-HA1-dA%PceUrM08j>+wHxgYdO9g8sS(fAz9@G2aGR{L3+FASBnzd#&XYcOBKZ6@-Gnps`_Y}#TJS5I z{e{eik4r}6WN;UoY{7AMKfYs-5kGi!v9M^m7oTUK&u@h#3noXki@RlK@UIhE3lFSM zvYcyCyqWI{@t4CHc6)II+?&{g_35q7cfR+b)90JBzL%2t)@B}Lr=<#8*m69dqA`cf zHXOusjVIF0Z8`~|!=8z8{@(ObdSkl9s54U=(UW;79RO0atHUxtly5I>}~rb-c?1Py#Dc- zMB4P==gS_momIJT?>+@r-P)4dggUXOuZHpeZoVLOwi%Mefo}Zh@mBn$dI-rfA44Zk zIm9;H_hm^p;^~{-6NtW^7OOuqjlKyhSDffx%8chL=&V2;dZ9}ks{_~6r{J3U`#M4B znqK4^vVRUfaCwYDF{9j8D={%}xrf4)kogT0Z;Ggf5i8qX=vGwOd>C2%a@$$|&uX|t1Cdhxz)E%`~CXJo~r zyUs;pM$yMv*F>LmLK}SOKs^e7i|}kRuD^CSu^(`OdAyB)=MsC1sUhZYtp5?eK%2&{ zU`UAx$xgA9_(iUTwX{o)iYaeJDa`R&q<8Y1Mu?=SC%%3{8CyBK6%Fk$S{%F+ zo?-o=3wfav#yvk>Cepe0&`T4pwu129zhQj*LHK@|`YOTQdOb;>N2utiPc7!pBxBTv zK)ZD%gYiF99{;0pYz&ph`9Nl%N|`~JSDP6iCr~*jKz<-{erOn|&FaGUKwaT`pm)D` z5;;G>m>eRH$$_yqL>haO24io2UdSLyS%OT3EU}^{OAr{3Q=KIsdk{H$KxQbBGXrFd zk}Aj;x{xuB*FPe3$f(T~_cO@@$Qw^48#5ShQ!J0Sf&4(E{9p^@9d!sl6V{Zyz?9I1r{zS?iLu;~!IQw7r5asLvc|#%P zjjQXoDj-(~zK|;%Ay=q7pAh6+0hvLu3Nph9$P77d&xQEfjL{}_INSpyl$S!rfPCUC z<&)WvPatm)Id4G5AaceixF1L4`sjDsffPdhb%grsT|S*iH8%xnF4S2;uCq|zMXA28 zhx*>mZ#VQ?InxZt43JfboK+wvkUYoY#582un)Kn{WD_l&0pAcsKRBvRchgSrW| zo=CNR6V&?K%j&|ji+a$dkY}J?lXg(A<0_*V)bV1ujzd-vZ6T|?fvf_Vszl0Eb0AYe zeh}pR0C@?MPm6niIAoGwxka>?eQdq7qZlM627D-@E{oP1UW&Fa{`P_66CQ-kV%M~Ng$gMIh#SAA#$F93_}cRGYn)K zLC!Xig~$-dLV-=Ivk;jIS?CF5A;=!$704dTAbUW);AX#T>IKvkCe;)L)D)=8T&l}4 zP?uj`JV55bIG7sSl#XK0N0kuyd)xN_}`=F*fLn-24yIXLm zgW_DMgT7D)q4v=PsC@-c`}Itb@QR$OI5 z>|pL7&w0ZHDX+WV1Dp%}iD7$qUFr zy&wy1=w3>!AcLhq1{?X&n_YtJRQJdY`N92sx_(hT!3AH{PYCYsYBIQ7vJ`+f1jS#jO^5Lz?hZy7# zaT4T^wU9#~gNafGOa3rZgp5Z+0xHRe`MFI;a|h+RR59xy*{$^8>K(;zpK^ouch}Q{gMA&qlSO2 ziL8a(5Lp|!5wZ@lybk2wuZ#Y@39=q?Q{-mI`p5>zhRDs4jlk90q;~tXKyHa_jBHZv z^JV>Of4&uR>uQIGhu8kQDOlR(^7=4CHV0Sl1GUSyL2irO4!J#8+Gpg~?||G9*#fx} zvL$k7WGiHAWE*5#WIJSg22;@lQDCDtV-8yi76KdXXG;&O>%WD699C9pj9CAEz0`hp|3DsV{tav?6y&MM)2jV%|HwqnLY`jx^JTT4CmVSN@=WAe z$g`^r>$i6Qn}eJKmTI=Vf6YanhdduS7kL5lLgYordB}^Ammn`iUWU9Jc?I%Hr`% z@=4@V$fuFdAfH7(hg^ny9{B?DMdVA!myxd^Uq!x#d>#1)@=fGh$hVR2AeSTGMZSl8 zAGreg0rErSO5{h#kCC4sKSh3q{2ciO@=N4b$gh##AiqU^hx{J73i$)_N90e)pOL>H ze?|U={2loR@=xSn$iI>QL;iy-U0f=k4^)urBG*G!MXrzB09g%L9a#fe6IlznA+k1d zBV--q#>l$JO_24Fn<6(u)<-r#HbicYY=qnbxh1kOvI%l4!U8n4%LQ(tTvx^MRr8)hTI)&2tO{@ zXD4K5WCgN-Ou)^Ru8%0POReSWqaMhv$UTwWklm3zkb718-}O;%q;Fe13KN&d%c_Q*8 zvC{gUjXVcA2YD{?JmmSvxyTE^CQ93DA@U;RJmkg5OOTf$FGF6AyaIV8@+#!j$oa@? zkk=xwLtc-(0eK_xCgjb?TadRRZ$sXWyaTxac_;EN`6BWqji`~dkOawYO3zfL4 zUF3Sms>t<`8z8HJr9blZjXJUhSVg*Csl9&EtoFbDX)WZ2VEFIv>uDo5Le>G-lion> z>o*3gD*e1JauZ}d*VX54#*v={qOq40=W~iC30tQ6Q%cKg=~#% zgKUdzhinhlQ(7NgkR8Cv{T*GA9g(|%mD~TjgO%IkoRFQ7703cIL8izq$UTrYxlUdRKG2O@hT`yl%w`yu-y4?+$=9*i7_9E3asc_?x) z@-VOg91rsOZa8uXSh>Av1XyY>l8?`k$f4E#cYKaQ4g)K(`O zA&;&0zt0y9R=&QDK^})3iyQ}5zTS*SP5>*{%kjt)kQ0%Ukdu*9kS8KfLQX|aLrzD| zK%R^|1$ip+G~`U=Ead6P*~l}HXClu+o{c;QIR|+z@;v1E$hpW1kQX8^Le4{8jJyPS zDe^L~^heG|%aKrxR^)BS+mUx57a;FM z-UWsT{P%pg8+i}%UgUkqh1LF-SN9_ysP@17dJy>#82T7Ar~W;AdAQhnIj)T zK8jolR?f@EkdGsuKt2gp&ex}qPa~f}K8t(~xeWO{@&)9J$d`~WBVR$jihK?EI`R$V zo5;72ZzJD9E=RtLd=L3Pas~1OUn9RkevAAL z`8{$K@(1LP$e)luBY#2uiu?`vJMs_YpUA(EemxTn zRzp@t)cunIKbS7vvtuuE;%+-H_dpJ&=1L_eSo6+!whYa(`q`uyXs1SGE5g4+D?~B6}nI zfR)>Ge3AW-{gDSD2Otkd4nz(@9)dg+IT(2u@^Iu3ha8WbfIJ>~0&*g95^^$f3i3qcNyw?lX~^lw8OW27 zryx&7o`#%>oP|6cIU9Kf@=WAe$g`2>Am<>@MV^N|A2}C!0rEoRMaX%`i;Q>-$mq0)&93WE?4_s`}P&&tJVIO|E?ilN4|l4 z6Rg}mehc|F@*U)ICJc6Xd7J&yb%Zzd(M8{0jLs@*A*n zf5F>o|J%Orkl!O$A%6fX_a}Tr{)GG)`3v$_zw+l( zL9Po{?(e9FtcqM8xdE~ovO2N`vL>S8k((gvAvZ;ChOCclfNY4| z9N7rD1#(MdV`LNLR>-Z9O_9xz&5_$6w?%G;+#b0Daz|tfoP|6cIU9Kf z@=WAe$g`2>Am<>@MV^N|A2}C!0rEoRMaX%`i;mwV0mHU4Uk((nMA-6zoiENB)g4_zZHL@wP8L~NY8|1dg?U36ecR=olY=PVf*%G-k zvK6v5vJJ8=vK_KLau;L=zSGN&igrY=FFM1yPUy0knteKgBcHDJe2V;#={wpU_6rXD8{21 zk6}EP@i@j&jK?#cz<46#NsK2mj%GZC@l?js7*A(BgYitpvl!22JcsdI#`74@XS{&% zLdJ_2$1q;ZcnRaBjF&N9&N!CwUyN5UUdebB`Hpbf-?_j)>81v_K)z7=TRMx&P>}I^j&dJ{&_G zSYe#Nct7Jr#umm_#x}+Wh#lwm4>CT)_%P$Y86P3G|NWTSo=5GR{Qcn{#>W^R*Yef& zJi+)R<5P@JGd^SIf1?C-;9>V#ntR+!&{2oQ`pN#u*s9GxlJdk#Q!*nHgtc?8!JQ<7|wxGtR*{C*xd< za}zuMy=flCc^P{#&PVL{d`5o81sE4(?9I3kV;{!8j0-a^!q|^-QO3m>7iV08aY@Fd z82d9W&A1HXvW&|yF3-3ElOmV!wnlNt4xEbT-j9V~n$+#8c z){NUQZp*kGdo%9CxG&>=jQcYl zz<40zL5v489>RDi<6(@4GakWsB(dZ3BBL0OW;}-RSjOWRN7*^~{d+v)3B-=idrV|J ziScB{(Tt}sp2~O{5_zf6Z(tn9cq8LYj5jmh!gwp=ZH%`w z-obb$<6Vq*Gv32^FXMfT;~AS73&slL1jhRrCo;A$wlcOcKEU`O<3o%OGya?L5ynRu z|HJqgGgml$7We1-8<#@85MXMBV4O~$tv z-)4M=@m={DUon2o_zmN?jNdVS&-er5 zkBmPt{>=CbaRtT|8CPN)z}U!GVk|Qb zWE@0Hzrxd>M-FBj!Z?(%iP-VqlL%8;`+LF4c253%eYl;Ik5`3pRmRnb9iJzvPVDJW z-x`c-GOoqAww;rIUtfoDUB>ko*SB->@9P^dZpgS1aW}@@ z8Amei!MG>mUW|J)?!&k*<9>|$GakTrAmc%d2QwbRcqrpxjE6HG!FVL&QH)139>aJn z<8h3m7>{Q>f$>DflNe8C9L;zN9&tL6kyod2##`_q@Gd438j1|TSjQ2B6 zWNcwXB z{G9O%#xEJaB6j@uF##+4WcFg7xl7|VAW*ovel-Tj#LoqQ9vvczJQ<-r% z<0@Ld+W)IEu14(m{7-epH5k`qT#IpS#&sCiWn7POeZ~zKH)Pz1abw0!7&m3yjB#_u zEf}|C+=_8)#%&n4W!#Q&d&V6YM=SNQ#WGA=O?-|j%3_}aZkp* z824t}hjCxV{TTOWJb>{)#)B9SW;}%PP{zX;4`)1r@kqv_7>{N=hVfX&;}}OV9?y6J z&P zT9>8o&$;L`aDIwh2BUq;NEB!YA;MCkbpVA#pMD$u$-m7JU0JhU_#GLe^smRV>|emYWKirKUbpmJsUk*G#xXc717LpzFkl#i`; zhW518mX@{Yr@f&LE$dLZb!j1UE*GA$ly0PPkY*` zPkwuPtqyHXqL@O?Bw9|PnoOtVR9e@k=|}qq8u}TU(7Gut`x!dYvMK#U&{hPsO-K4^Yv@EjZ4I5t z>O{-VhGw+YoR)*=r-E3tt*w& zmbN-mpp0g;?m^L&j^5AEmwx&g`WuE&^rK}zs^>sDpCR-!n9jB}^@@hH>`v>}R8DvL zX=~^}KW(Yr9Vi-6IgMyN*S1DV=5WTxrRCPGne+vq3A~61rBibrrsA8y2;Yv$ass)y5Xq}ptuJq$eTbP?dy?klyLy?Mp z3er|8gSY+21!-M?q7eOf(N-b4)4b@;%ST&56rmI*`_h}%CNfjeGL<2mqKbWKpmh~0 z*_Eh@p(-t_8miHciMFa4!e|{z5k|`}LuL92qOHnwp9j%>A52^R6s0Ii+LvLpE=guJ zT2?cZpeSx%R;6`uD!B;#RHfsjHx#y?aSd8mr@-rl4SuxrGZZ7U2rd2SmGrbsZzxJp ziIz3!in-Bt4O+Sx($Q9WT2`W;bcT$y%xI`cQNh0Spmha<2aRT)v~;JXJB@DcbkAj? z$ZTI`r*&q!A29}Ir@J!`MNW$8w9G)R2Q59QM0dJ3bI@HmnzqJJWH6+qbq3m#*1k+f zYd4B?R6lHupnEng{R}6omLby6jh5XEJ?W<=ZPlV>6x}Vj^CuX_(|Qywqv>Zny&g?5 zk)p1BS<^mJ)ud6dCq+%__t@%2>z;HEwWY1D6p^%yr2DD|EnCu0BpstA#W;#6T8^XT zcv_C9<4vGF;|zv|UosjD^XR%88u`&8OC!uO;@QMh_Vpi5W$%mj7aHTq7z4FNmd1F7 zXV8jW!E@^*nHqQ5W*K$kRB*qyNv3L@w^^poO$atlyJt%Hywj4!`*85%`*%(CzV5WZ zzkT$s-Oo5H&hEhPaPCm>g)etZuKhMzJf6M@HjlewnnBym-CqPN4eyxly7yRSb8ec6$EC0f}rXc~l?%K;AHK}!o z?XSD`@{hRG4$;bYJuHVDX@1vU{{gM4g=qCR<*gs0)qnq}u#n&0ckSm}adoW_?R?=+ zEuCaPU-(-4yz^;dcW}NafAjt%d-bc0WD9hI1i+|m*Z?|Ya(C*-MI1T0}>CW=O_wCyg*FFdiP5;2YjXD$x`?GCcTros@ zz0AFaA(|gOq;rT?&izI`?QMec@w!$A_*xxMPPz1d>Vxv@pTDgiS9`rsaBF)x=s&o= za>pe7`tBT@WWT4a^qO z`0_nd=Mol6Kan}a``n-HUDG^5I#HQ;{q}$iAurbd+1|M&eMnX+Q+pldU>p94hJUtE zjz`#^?Fat3^fJ*VTKnVNwYEJzBwNT%`A_|$gK~ugn*P)u=UDkdlKmXfALhMIGFk5K zvA4<4MoIQInG^Rgxa`M!_BQ$0?PBmt&p&?oxsQWmqyP9`8Se(?q;p3b!vB#k*`Hvz zXD{Ei$!U9^LHW4fwebq$L)LG1?BfZ>2lu^q^zm66uTZy(SMKQJkLF|i(R?^ZXWX%m zC#c)`8F%gHg7)9n=g;+h@X=epzFlV&)~_#eZ~6T3w~s9qqVyTygZ;fNmHyuLvwLw{V2hcdC)Sm>`43NJ`#vm{>DjaLw!9m&*zg``3}|BWf8uI0 z-fm|dk*1051^G!WW?JDZxs5i9F?!#3@{2`y*?Lj5Y~^BW)o`OVQ>i+(!5Lj_x99A! z<~-2SmgD{@>$I~)Y^Nxy_Bw4vUa7=3wi@Ic8*U7R-}#RpT9o|vNvEthzW3OkcAv^O zp?vtiO4c#O(lJmzxuz;}_gLqUzwB%g(=94L6_p>o;8bYbf>YKURR6V4TuoN0e-Wzx z$?nBXE2;i3sQ%CBTL@TsdQ)tz>s2VCsuYx>-LW+?n6xs4{& zJKyv2w%m(Oh3;K=Ds(LQC&=whIkU+hOKnMQYC`+u8%}LW$8aYfW#`zG#WaWfs(0F1 zi<6J?Q5X0Lj?Oxuyp_Q$nc$Bje>lB{a^_PxeaJ-}^3v-q=ylX#&!0M&a18kU z$VL574%&grx7Uqcx7QoTrM_S<2iLb?sXC?)4K{}2`qrfDyL`@`P+Z^2V|&`2SUO+o z3nuglwZDa;Prx_K-4jY}WI}(VzF?w0XYx(%Z+3qq^&R+=$S*`~=}NwleAF#79itoh zZK$tl<)d%rq&|xBC2D`v2kno(jPl{5FQXk$|Cc4}*sN;*Ts|ZwH1tI!+lBSMw$Y=m zDBn+4wRs6&+oKlWLl<8AV*QX?wmrF8$@FnejP=n@Uz=NLchhxmciW)-zP7!aE161F zT^yRp=4%^xsH!RF`bo0ksITor-TZHdw>)ohu+miL3wwN73))TXmtep}fY;}!a zLwnr&7P`EUY+EP!nqn(W4ZV{?wiRAHF0kKBk!?rl^)rp8Soai_Z4bVDwQl_N)tcI0w*AOA#d@`quPtq1**3n& zl+bKleNAJ$W!r>JG1g%>D%mD%^|ie(;BGtT=WYu->}v}>IViBs$+EUvbli%OQ$x3x z@U@+%Yw>VokTs!BQs}YM5w_SS$K$)S`w;5(DZ)17bavZ>quEWf&v@EC4-2(=^^?;`>+n8`V&T4DM&7QV? z6O*iUHw9UnSt4wwVm?^c&6Lc29!1!0&p&1DLgQ6U8m~UwYG;k0d%gwT?=+rR%SINr zEury&#%5as8l#WV_<+7zg2rf!&lnrVlOI5STN-}~lD|nEPkzuC4L?olZPqL<+pJ6O zMo{}_5Z^{Nwq+BZwyk+qhh`odZp*RN(`H>06xu5)$vVgyf<kx%q>&%)JQPh*Q~3 zpU!8ueK_Q4TRbq_^ts?_>juTsR;^P~=$zR>);#}2*yLARL(9I|YW@8V?{HJozddb+#`s>Bnj%YMe1XdnM!$fh-!B*{|M|X$Z*&IzuetEu&ykVm$S#bj zoD}=<+X_b?M|5PGEKk9xi{t+Ej59EHXN+9OeELe8f-^DB%ouIpn2#rG9T`t@Ix_yH zFh|CdY>td4pBx!aJ~=Y}&(V&ICmS3&4`a-PJMPE7B;d%H8FXaK6ghGM#swLBGcLr~ zhcSK&cJb3FD@Wn=x+AxCP^uj9W2o&A1KYwv5{`ZqK*_;|Rtb8FymbnQ<4! zT^V;{+?{bG;~tEAGVaB=H{(8x`!epwxIg0oj0Z9v#CR~{A&iGI9>#b$;}MKUG9JZv zG~+Rh$1)zrIEwLj#uFG%WIT!SWX92qr!bz%cpBsBjAt;O$#@py*^K8fo}0}7&BoGf z)qk_G|INn!HyiukZ0vutvHx$)#?ow~MVoD;*+Yvqdq}gB7KhnMi^FWDMVrl}*-5*D z*-4rmvuLxWG&^Q-m|eAKv#T^)YSCs(>9_qBZ8nx>#}YN4X2%jWAC5K~OS5B%TKP2F zm8i{j(d<~FHakhPV~JY%G`o?g&2G?aW};SqnoUmB>QA%JiQ4Q2%|0h;=L=t({e-Wz z56wQ?9h@)9*Jev;_9W3^b~RC(T}Am?d*WQQ*;tyrwP-%go>(*=jy4-hv%MCre3~7$ zX!W7lXNz{eG&^Z;f6PwOOsK_SCe)(MgwkxO-BD*tE!r$9&6ZlU*;Se?wP>@hsDm~e zOS80z+UqpKo2dCTtDC5mL$kg1Hc@AL6SX?P*Xn?Bv{_e_ug%8dxZ3M9n`tjcoy|;i znEg!DWtWGmW4EvTm8i{% z_W12$(Pj+sx;BftsMz;JZ8jEVYO}HMwb|He*Ssv+Y%GqY&BhMdQq-cAbN{=KMVpPq z>)LTscQ0%4X4KW8ZJfY|&<8agN#yAo_zg8;ds4W(;@b zsAzGRVYFy7j5K3t(Pj*vCk0rv8An_b2D ztc_Qwn>HJZ@kjG%_BK)T;b^n5sGBxhiuTuLV;8-5)vqtjMC;cVx!P>(qDvnVwf^va z$HPSJTxcdbQ9Bo!?M>9mAD829qIT}^wYGwZ^2F&pd1n2mL0%*Hx0W@8;0v$2kh*;q%$Y^)=DGcLr~hp{i?!i zaWTfl8JA#Ol5r`<{)|gAF2lGi<8q8K8|&C!n2mL0%*Hx0W@8;0v$2kh*;q%$Y^)<= zHrA0b8|%oJjdf(q#yT=)V;vc@v5t({SVs&Tdmb>s-f9T|6G+?jC~#$6eAW89r_B;y{8dou3DxHscIjQcX~ z$GAV^0gN#l>)2kHjdf(q#yT=)V;vc@v5t({SVzWetRrJK){!wA>&Tdmb!5!OIx=Qs z9T~H+j*Qt@M~-4Vp78|66B$opJehGc<0*`%GM>hGI^!9PXEL6}csAoXjOQkE1m3Iv z{84P_LA|>6?mD<%-wcMicn93~tGVr4hV%RVT6DD1wkdJsTT_`Er9&%^dTTPQawEgA zbL>-hgJIWjEa|@q^hTM^zV&C3npP+u@BjEO6$M_)Xq~ukvQKy8@e%FJi#J>}V;}y* zJ~+t1e=Zc@i1LhyPk+J4>mwxI#_i)b0JK?o4VD4_4aozsg=A9cW2ztr>AAFPt z2kW#H$T=fKfD(P$SgPYy^Wixr-Pb%g2>58fLnk*@%ysUaF>2B;bA!l^DSXYt8g6=u z`4xXuS{!@LSSL%Ic~`v}y6;E(N>bqSLIw(4B@c>3@9pu^j|7^BR?cbm8MfR=FWLWt zUxWfV@H0{%Cpac9K7IclX5*y*^RA%7y6;Q-;3E(B7kuRHvL1=gK601YrSeL%_pNLa zy=4Cneqjpaz|Ty9oKGVQnM=JnW&X7DsCi58;<{g)_Q6M977F;tTl4&Qe7Voh%|DK1 z6`3!GrSQFJKXTyXb1icI4j&&MS^kxIVuRP_yU(lXehJ#=O@ZU!GcSDPHT$_O;Qof~ z<{N8|nB{z)Df~jT-dzBlcI??V9(K0Z6|AN)A} zRm~7lzH$@uYyWk+k9vDkz(>821HXOYjPVy-W{b5Ox0s(V`IN$kTa*GmTznR(WwU`m>4VSs{ybAMK7~z(>0y2mY5V`2(_@_Z2T)XPd{5pOwOgTZ{reT-=*3YdQoB zxR6Wu#s->Ol$?~phwD!PU%U4gms$}p_uD4(&f96tP46W42h;~H`WyUQ6zFf=%Z(2B z-8aTu{KC8Vx3<)J`Eayz%uU<)-jM2#AOF96)EVaqA1=OIP<`T^)d%InMIV3<7vDYT zeB+&+FMPP@lknltytDR%2Osw=JoxzTLf5O3v+D&PF79*qaPi%S`a^)T{-BKq zxCi0E$9Es0erZ)2JmS-F*+Mh;A8wl4t$I&$f5Bnz}a{O z7yS)BT=X~iG#&;x8xP@Y_qaCJA&17>0B7T^<2BXBQQU7dp6_!uo@?!gYXo1rH|hOi zue0|H92+_CF~%XM7zMo_#XEaH(#{V#@G(9jhu-hvoxR_oEs%rz1TJz)QqcQpytDUH z_}V=MA8siMdcTf$_I?ew3|5x?kSD*-(dqeUr`j6Qq&H75= z_tK^C;Z{+7xD_d;ui7F#STxUEH`O+yU(|7G55<+5t?pN+eejWo4+%I1@_w3=q>)E*it@{R z#FN9V_4-$%eaL|?(Hc4MAC*}wZ?1ApB-PBV{3=#JZ%_DetI`R~_A4Y51*`oo8No&rAHKnh#=S<>hy;pWKe zugtUVcG3NC+J|d~b4Gu_wZ%Cf@0US-*tDVuY- zHOYYw7w1#V!&UbFa@APeyh0Q{8m0SiYterAaM8B#GnQ^Chlk!UPHL51DU)ew3O`)U zfscC=IW>FbkUOp&CEZ()PZ@hRokEJe{%9BYI1btcKJr{_Q{>%+=1O^Xeic5i@~80O zW>S5)=u_`zbe2yGgN{TV*;+Jsb+a+XLfQVq#3?lrET z!auF%z{mAN&M;$Z$*046bEYz7L^@R_&YU)2e+`1I^PkYM44s4gE_qr~UHkZ@=gS4+L#lMtOkJj}m8c@uL zsVtc$ca!_Kb`@Un*HZX5$VCqPh7`!z>(*PI*)Sk*!Cx1|t7cmhNU>jExD`|%ZX?z2 zS+2coTT(JGaO(uc{B=zV|C*Wuzp9_&_X`u9%Z!)-$je7H?1@}BaNZ*83^kMn4#{QEF%3LkE$T0Y!n6xqIc z%I#-G%QZ?@Q&v1nrTcKv{_x?V{ozYLM#vu$2FPI@jLO#;FZA|=`$cL-ZN~Wy3#30S|sFih8$xOAl?i0$hgl5$WD8GHX8CAAJ=40qu`I zhyE~d>0p(4G7e6=$zMe7H9$P%d1IquDE8mQJ)SAs$|e6jj1U z>pspGIq-45$bo;f?L28opDX5N4T_5C8}sSDhgv?)0q^Z7A9bob;fb`ZWo|LsD~|~J z*jD$^KIlV*DbPNZDKNHl-;^YMxH(;lJ$qDa`j}B~pLVnlIqFf6;ziGkEZE&F7YO*A-8B^~fc1fgaqd8 zH;K;$Q~C-y$bsL90y*B%`J_!vTFB1|EEgXOpVG_kqLz=G&Z>(X@`W?M1nol({4Ny8 zfgkWBgLo5DUQTLpP88p?SuY=cJ@SzQzbgfDw!Otl`i`)5@(Jjk3VZ^ANr4l{9d$;{?nU+ z+S82o=k1Ap1|NByRUdiOf9(B@_aFFhyHfe^;r5}R`&~G@-QxW9*ZtID z=JA{Q^};v;7daSrI;uJ38~>LN_q^((`~egjjZKUdOg-hDKhubfIdAFZAEbRa27G*8 z#WCOy>k=fvpI_Bg6bVT7579p4z#m9!N!a0gRNpF2yQf4XI0CeJ;_>Fc{CiLQjoCg_*ZpAHhaC9BX&X84kK`LIubm$&SBqRD&3>3e_Xkq{fsecq zs*k+)Mb^pw*T>3Xris$uCqL`gt3LVY%WKIQNrAqMdw|{_6=&~{s0Ys1mGV#zobM=# z5@#yQ@rKQE%{f`*=J|c}`oM#KNcG_38nhZUL@slwL}1~~bL3SOlfRFk-Z(}L%0s$fU;lVdi9z6JC zDDn-;E3eExSMKYYOD?`My-&w7?$Qh@)$f563inH%i z@G(Z9eE1k6P(FQMQ=ENYTSxogBQJ`!;UkZ}4=T>S55nI~ft)B>V~ju!ecu$$zHh>R zOD=MvD8^GDhwfkD?EZxZA7cbO_!uK-d@ws3AK{@Zs(j}HcU{y*vEXQz^VoG04y zCI!wDZ8?pi#!!E$+P;?Zm|44}9b-=G<)bdhfseW%2Y&81*`!yC{pGzQZ%97M`V>A~ z)CWFX)Mv_BSLyDfqH?a-OVYc#$)A5Lv=8^z9g69+je86C?~S8nmAI>Bd3UBX%D${+ z^!7p7IA@fPvT@ERe_^7l6nD3%oO9tN>1Xxi^5G|{Iq+wwIaOlH8&A;h=u7 z{COB{10Q*48~DgO=@npXNbQqG-Ys?Nkla4-(f^SHe}bCREv$v{$fox4D{(~I&=s(DT|GS8!e70_tdzl`I`-=+ezA5z| zA9-_CA9>Z*#VIYeuae8hUl$(5y;AsaFH`yO;m)JDn{|ouC}D-XzQjRs`cQ7&52NyN z4EXcOLk|3yoTHTsbt}t5*Yy(V@+9j0;VgN`fxmz}UDQJ?w? z1}W>0M#!aG`6$ZQ8!5_%zeFt`ehdZu{#J4J`&-nZE!7A2FvgW76u5`!{uR#dU-)ow zf5C@~dy?*7v$OjbeIGgSajzf;KHa}&XZJ7qWnGF+75`pElB^^r&KU*`Yy{)O_9hii-S zkw@=eW@qnT=nHV`sXp8l6l0q87E!y0$azmrkmK*a()%ZTxOk65`EcZd6^e3T8pB9#vh{u&COkA1{3ucOAy?JmmEE{TE^0|FlW4HWQJQ>>*(SGb8X zp5EhkHmVx9XLSj^KJei#RDHM@v&R?;D4||MrD-w#fqB=NbRQo4Iu!8Wucw%|CQd2U zu(i~5RdC>=mC1g0^8SHKv4Ole3S2W=>@cPGr1SFqx)}m@*c#~LCw#c*Kk(tA|Ip_p z#o6a2c(})q2M_lc^62xJ;_UMneDr2o91Y)tQb^V4mju?c&lRa`xkulXXL;~ ze@0H^lB>#vZXB}2CtcGbZs$6uMe&fa^Rb38^?gZHuFwVuUeA1La9ndk2gLke7Lw@ z;KRlJa&UW9<@KIubGJJ$j6>4pFp^?F-=5^*81MzHkpq8oYB%L|du#m4pM#Az;~K_0 z`fzc-!?(M%{<5Z#lC*oJ*;wm>@#*WyXo6@M+{`l8@UIfha zZlsqFA1=lq_;4`>h1?yeq%Rw2zBQnuvF65!y1#}hh8*|_6v%*JSDJx23 z5%D{hi_tkgr|{v1(=p(~JxI~@R;&{JZw*o8g;Df<*In;#<7r=C^3%}z5XE7NzbUfC zP8Gk0Oct|_W;O0jysG=~;Mbyn2mc5~)3k2N+y#e3yQDbd38R;Of5C@aiq`Pq9;H}c zB8_sWaCdR_u|X8}->sJq4?gaBc<^!0H)?QAy#L!n)UI>Ve6f7P6h2&hhJg?FABr5W z-ivuzQi<=iatmRVbRQmk-1G3@X*#? zU4-4*F81%uB8qrr(#waB`yDy(ala!cVdY^F{Gf*TKIgjGW#3nuui%%aZREf|L4lmjrDBv*$I~kPtNNKU_ivoS$NhyI__)82 z(|2DE{d_4>erk9!6leB3ij$~I8y+?grX=Fcd`*E^TOhZ{={e7Gkm zZvP#kJee|B)SdXi{QX;U|AYr0_a!{|2PhI7H&iO;n<(1X2or}JTJ`eb!!1K=_y;IX zQB02vQ9g%<2yfFT^WVcK=srC7b*Vk!9iTW(@vcQh<#o0SVr9pCVwU%i6h2&ka^S z&nF0H&nLi#`$+ZSo~NMaH-xk2H`(bLsOHe~CyKM@ zPtY!Ce~h1Kmje_BDK6~ptNhwkK%9GE6uS-v>g^97?j~~J!@Wc?%_E;OJl0)^8RN_q zs|4#lJe)7`;Ng6cN6(W8XU~&7Bo{vNE~`HBJTJTwo9?WL?-IUC?6`kUe}93Gwm}Yj zv<;47T3A*2ajj8&toJdo|Kt??{cfA;BkzjpBX33HDCPc<7sh4hBqg%jRzbV%_b+_3 zDUJajZHi-@KCw-Ce4~kUB-~BeJTQ&o=trnI@E55$!QEF~!;QWAGcPIq+|&IrMy* z;_Ue}e7=B>yy>csJbM03arXQh=Cj}`4M@(!2VqEztmk-~b- z5w&+-)_r*JaSV9y!Tnb)R&I`dV%&9Oy*OGTPWRzqe;0KP{}#oFA1jp^bM8nbo~2T} zVtecT6Fywr2grkqe*G|$qQo`(B3ZvY5k0F<)O}oA91MK|*Y-9A`UE{sC7eA^)j{=< zcSrS+N6%9UXU|i?huco|;oha7=c$CV=c(F~haC9#$ip$<)AJs}+4COo@nsJ=@RKNz zL(h8%XU}_}F6ck#7pM#R=ST{AzD_uMz79TI)CWG?yNEm46=%cc7pL&yZYBpl+-DTKHXk;IPO~WyPhyn5P5pEq?n~8&`&{+s z#70YBt(z2|tTUA3XS3;kPuh>Nk%RXll#QGU6Fkk2T%wg+zgH;pkKNbXrw8pr4t#tz zK@R-puhSV@ANVLH+Hxr0q8g>};TBSTxGyNi*E<~GKV^m3Il(NJPfDx%xW4EMttfDP z(HCA)oJ-hY{@f%+I(TD|c=C5vg?8K9ALonq^rXP~qCH=pOr8x>o;ZG=Wn{-kMs94r$3l92P=0^fj~w_I&yh2HTqg0UUwUO!q1H<5v`%{Y@a(?o!N>S{{FbZ8yxUD_ zJEfIUd2hR9pZ4M2LLNNaGbrD`b(mN>tBDeEf3uQUYI_R*KDo$&kMRdNv!7HHUGkcg zZ<*#R!^^MGeR%LOKEQ*IF=%0~-R9?$`V0DBG6}y;MA?>~{WUP^J4;w{BHiuV+= zn$!>2d)r$HdivaaHgu+5K76=%0Y2Oh6r;Qwo0lj37D16;%$b)bpD(;Uv>$o!K2jiW z&F4*GdjCMBdSbXT@ab~Bd~D=UbKrl{a!zzGcAoH9d>oq~1{JBP`zRYe?k|)LANN<> z#6Z#V{3y|A%RzA|=PCVs;lq8Y`f%-I#DO~EcTgR%rSWZ1Z_Ntb$NhyI__)7t4ESjR z>q`eWJQSHaPg61;4AJX@^MsE)oF{zyeYtLeT-x|TnR4L1(rIt~3*xPRfp#r<14 zdYzo6`$45l#VF<3f>OE<57!IFfrsmbye}6H$yJ&jRdPt@MWL7qDf|Lz4*bt*PFUj? zvV1#TLZ07^l**Nd>OSsu_&5&kb@<5JH+QN0X~yIPkF(p99`|0P@X_ay1OE#Ja`q?1 z%V)k!Pgrqnic-nzv+iF~UF3XKUF0lC_g22JYhOaw$l*#YYoQ=2&fY)a!|h4|AMQ7b zTvxp1zqcs~MK1;>+-X`kg%39`6#yUZcZ$tBcSskPwodSS7n=~#=b&C6U-Ej;e)NfR zwEmX@eZstckNNG#^rFWvcQOBI7rj5ghl@T3A1?Y_)!oOJs9SRc5>L+WB-5rZsa%tU1Uxteu z^kuln+1^kwmV22>35c#GO-bD?g&#{ka^U||bG(PFHvfu~l~Ui6jHxcHPT`|(A_qSD zCUUZ_+a-6}WK)KY+$yc^Ra);4B~=$Wzf>1F%@y;C}dw@Rp1vW4!$%}XwPxaiC9 zef)go+WQJ6lr6n5!4Nk`_Y2bJX1K_~4FnfC-}^6?wnvOoDpYNju-V776~Pl)*>c^!mVui}F!6T$DfRVOqIGP%)*p@u@OA!;%!f7rCCQ z?@F#4MV>K|u~)lEN~P3=l&Kez&llyx^`bS(hntq-U_g)fnXR@eSzA?Cq+ZFN58fY_yHfT z2L=2*{jy5Ci&@3fwkws58%pRtTwGiDaB*$n4{BnL$J+Oz@2Y8f z`@n<0NA=(zqr8PpmzqVn+hTwHvSO82W!;AdALk4YKF;}P_O)i|Q+2WARxRbjgB^PN zz}H;(aQ~t8r!C>)!S~tXT;|Hkyw#s{9}ax9D?IpU*T1^t5GQ^f47hi%m@*~O&rC1b z+Y>(A&a{RP7waMHZzz_JDj)`DSZkhhWW3(~qsVzd`-f6wp>2E)%}TMn zo3H#kdc5KiTT1FN^P*lKxFcx)G}X;U>+BS>&ODRawTl(?k6sJ7vGI#uK76<+A7#Tu z`MYk+kS7HPD$$Xjv%o$wSs+^nh(7oR86XPy;*^J#Tu>m0v|+e71YAMKB0z(@O| zKJeeHNt6o44N@`%u8*(v*NGH9+#IS8*NdW-xv*sLc_U6ulSRoLwRC?Pc{m1qd*)i*9Yf|W1xJTFLLblnK@nR^;fh=*ywINzv#N|qwE_L z`_;1XUCD=n=IbSA^Y!rIYIT8&bD-w|Bxlb9z+Ff=@ZsY782kx~-QSFTy$#=x>z*oi^AIj?O0}p;#I$wD33sb!5v|0XCZ-CM{O$NDR z@8r*W@ZsW~hYuI`{J3A+yWd@ZlDt*mPmNbYxRnrRX*fx%s5#difZ8kOMzAdB}mkpnrL3OL#8j@Z=a{ zv!f$*e=6-m4*cS@jU4#Z8@@OC|1O}cy&h+rnkD)39>yy8$jhVp$a_4<>scSPi}JI!^P(<_=Dzd+&4UJI;Gj5 z@#0JBNZtQVb(u(k?-%$!Rf+=NFUpkKBQNg#TbX>LZNk$kol<J^Z)YU7E^t=Whhb~KN9e7v&o`sAA<;LabGVV zZ4VbYXivDv@jGIy>^9fw!3{YLe*Ti95_C5^JZOPsN1$2R); z!i}P~fe*JB1^ik+9~&G0%%?~*4jNO}nV|b{F&_mVZaLNe`Es(f?RP2VS_5ynt^f2C zKKeg$;G_Q|XVmIt(#27El(82I$p;Dy(tWt4=^Wt0EwB3P8kLeqK5eZu%6?q_)Mb4N zANMbE;N$*9PRVX%OM*M0N{ zTr2zUG-!=$8$j_akHvVtxlt*+_e6%ZaXnc!zHon1wk1+xse2hOd zzEyHIzQKp}R>-0272xc8!Gn)EBY5ybDK?MEA24#?LUBZ1C#5>`98G~+*WMT4A_si|E^^3^ z|6e}7MQ?|8XK z|0yYaj48;0UtZ10y(vcO^RB9LvXvrVuaP{z3=jTX)q`J|B5#!ql3%Uz%G#~}$U|>U z)XRtKLv?`<7h?+ib*+Nr`PDlr?fSfud%Gonzd%30{e^yqet?3|cr^Z-osIwSagC7! zAJ-T;G(MP}jSukPkEVbJKb(TvUpQ-jxVX0P;i5mlr|TQi{1vuJKu)bH=6yA?~yflK1D$pqHNx z9z_5}Rr0D)RHqPrQSyPHV7bY(%yPk4MWL7M{U2@~0{C!iP{6NUY>C{)Aj|&#o^r=d zLig8D9$e(qR9)mK1GdVhzJ7Awph&s&w&Z_r=LhXW4*Xga$blbQXstY{_P_E7zf^&3 z$J9@tm+bZVMH}#uSDOMp^62j`WM_YW0UvHo3ixpAP|)9B$j<)$0%Im};Mb)<4t)Ci zBiY&CAI+zI$bnyv0y*&M@0(<2f8T_D4FBsK;?w=2fwOj=(Z>_?1LVL*KR^zAmza4{=JQ4+VBB3feW7TX zUb2_JfY!)?-+*334*WGmb4ud|T@VKskC#IN^QQ38N09>`eGWN!w!JX6e6dbMwX7}w zoc2bq56Uk|E^^>Eq(Bb&W@kP;__$}_!N>hY{n_lSKR+iAE^->FE^=sm6VApr-0$#_ zhm%6t$fNO7I2%9lUX2|1c&|ndeENJSoP9n-U&})gNcBNqLtk!8F{5fJIq#k-a?+TI z@`8bf6ne?t{^@7~ZI5f*gaU1kYy8ibGEyPiBvGT=O?k}XiF$j&N1GxCKH3yHcQ#Fv zy2jNOsb3zD7q2dt!Y@xQa^N>rbI2FYe0cEDo+ukW+LQW&aMmBP(!PP@Vw`A3+xWdE z#))m+r^+IQ4J!NNq?^&GoAqV~{+C~n1`g>Bz+251GN1sLx zeDqP|tbZ3K)lDB~Y&GeqY@3<<{3m?;O(}BVuTgWz7tVZm@X@DHHhlDHy1#_8`)dyE zgNvNzv<(+IG~Nnl<1OwJ_{hV30v~xa-U?^qEqu8Cw1yA21qFRx63#v^4WwhkEk)5% zbz9Mzz7HzSz7N8kPdV^WZfgqo^nFlq_I(gO>Vq8ks1I`J^O)l7^B6q%3sn#PI(jYR zlm$xP&u)raGylN%(~`eW!9`obhr5Pc`1F3KID5ZC`EY${ZLbHd+Yo>36Rj8RjS zD;ZeZ)la6E?Biz)Z6F7JTiQkrd_#-7NjBd7=^Iq2Es`&VD}$e=zMw4*bp(D4%{msW|)nBwX}0_;AtJ;M4CX6=%PnM7zU94%!_q za_ILDinHH8z{fcw2R_ajIrRGn#o6y4(04FKp+BIXt*1bL7@2Cm5*hlBu|=`Gfg^W) z5cHD0|G^IT;eV03_SG{}=AzcIHx;*gE{?pO zkH_*_hsTCXrCYwzd|za$F7?+N>+zt-`=<_wA%ou`k7V$TGRNFGdi9ScQHCaV;LC2e zKjZ1oWbpK7G6x!^+xdFiT(fr8NPC;U@A{aIC)ZvIPwrHr9j5=y4?6$2O!m0LMWcB7 zGRwfzm&v@h_nY~hQk%8E6t>S#jl3S1TP&XCbZ|U5x&CjwuK(jX2FTz!23Uq%|2JOO z|M7gMPX^!7$*fu%-FSVUh~=2UV>xD6hJ2r>y}nPx$8j?FPEJO?Pc&ZNCt`a$9?NS6 z%aH5&+Ut5g>w@Qa#Njy}<@*BT^?gA$aV&%N>MV|BuwL?grS|&15|8C~8+dFNDf#}_ zczyqi!_%%fJnbsq=Nhl?bMe@oV({3mQu2MV_WHh<_wl?2^Sbw~I9`K!-IMDZ+UxoT zZ9@i6+mOM_^;_e0{g%%QcyeKmCnwj3wb%7w+L8>Owj_g>?^Cqb_bI((8lGGU$CH!q zQ?%FjDR?aV0gq)r$oIwC>-%C{3i0G{aiz$~_r=QV`(k`Q@nrDvoQ!;5?DP7*nEiz( z$Ns{TlkbbQ*Z0Nvluia8-^s}L#oFup;^B@bcR&hHPQEYJUf&nvvGgB2mi{B(7i+KY zi}BbVQh4k^d6e&qwb%E>I6Qq6ho_Iq_r==l`{JrHjST*v(j(%B}-gdY0Xqpz(e1tR~wj7G99 zWyRE&$8PfYom6+J!4tOGC3lapl9g|!ul3Dn|6H+``6Zs96ylt#GnX!O7|Bo^aPp-G)$qg$JKkS#Mv+SC~8|aG}Q%3Pv+6a%OjT%n9Wxx2T zv7Np8DE)fxWw(9i$-G$xzK=YT!T&hqhJAloP5W}=E4p>%)2?SRvTm}gOkZkcP3hC;4@ds{5qNAeF?j5cQu^^_d-I7Hwl0}WwaPouZGS9%4UeU- z;fKDsWf#vo+HQO0YIuT16N)^086Uv*8Xo|UrQhMP^g9`U z!1fw{AgxRzgD)hHWbiV+f$cTE0Uk>~#bfEGGJb;XHGTpei41zLqqYj58E(AO2*Hzy~fYM;d{s<4nI^%#^j!}?>%$oL_)*Z3iLEPW1-rO(OuA-31}A+uy!95MVRAiF$< zO68D}&v&-h=R5pTnN9{jLW+!hezd(lKkkxgcyb}~h$koSXKb(cGj(M>@Z?5H;mOH( zR<_r8R##=dWboOf$lztX8ry5U8vJ!9gCFH&WV{;NYrGofjjtz<%o{&iO2(_PyvD1+ z;n@c`Jo`Y#tFgSstHEOnh{0pWNXd9Lme+VSI6VCbho>LOcr}*Scs00CDRQ{6QsiX( zE8A=QD?I&~44(c>M#jIgy~e-7;ZHgaKTb-<$Fsf0$HU<{#&G!Hc_r6ud!NVndwA?= zdBkHmPduyn%xkhj;;|KEIe2U(sd>eF*kvaaw)bv`Yfp)@$@L+!?r~-M zG^t`zHKfW($@N>?>-sHzwoE63A1_5luE*M5*JE+`e;kLeCMDP3Y_IEY*sM}`>;x&i zTz|8@uD@Yd$U5P%RiyATUZ3qXULQV|v<(^jL@6>d9-!?t9v}|ylfvP@k;-}{S=h}7 zOYJY|ez!wzhPdZ{_AizU?T;msGEHB*!@?By{=ci(iC@lk+n@eJ22WoggTJspS=jLP z7471K7TA3g{Sn1uIfvk}lcZ$)J=<&iJ^DY(z;m3C!OM7$VP4}sev)Zq@ROy;;AOl= z+iSc>j$1rAj$1rA8Sl>a8t)E|<-CH&a$b?~^enIO^lAuplJWX%ukrfuSk8;g z7t483#sjpy#skFRIj7_BBcx=!LECG*K^%U$^a~t*s+3&+4D-7FiC-=@jy&SAp;B`F zGtBGy=W_a+Ovhu3OX21F0^95Rg5~08%5*Y#j$<C0qfd{NtLd{O!uo*aD*Pfo@!4f7hmbh$JI89ePz1~1p!ZLjO? z%f+XV>16QqA2M>i-S)cPPWvpE4D+Xb$S{Ao{%?C-|KBQ>YyLhlGo;ARl9K!V177$0 z;}gnsGWh@YpWN^7_qyL7OXhFKl9?kV_xoF3_xt0qd8C*(cCOUR-&!fJ`~9)6r102z zQh2%F-}1WOAKy~;EgAfLDKd}uRkytE_s=iW@Z=Uq;mOJU{@Uw)f3}qjo^2(Af3RwV z@w(q1|6Hb%!7r2|Blr6oulxP6WPFY#GfPVD_cvbm`{S`Cq?k8$k(Au;Z@ljJ=ldlx z_~-IB8NA%@Z@ljJ$745>lfu52N4ekMc-`;+(6M9|JC=;x?{B>B_s7?j`7wX|M|oua za=*Xvy5Aq4!O7r1i6tZV`)jZJ{ojgtAyruFPjO55e|ePgNwnAaBse_Vjl;9uGX9D2 z8vi8dFpk61rZT>Y@fu%+et=~e^aCsz8NWq)jo*@9`sN5(KEH=AAdY-KDfvCW_WC{l z2gj1(wFXN@?iVm#_Y2T=Wbo0&k-^LT2*&Gv1bjMK7c%%|PDbtrH(vLHW67}3uw>Y0 za=*Fpy5Ag+ec*WPax%Tk^oO98jNC78yzZCZAk*;VRydxV+>ful?#IVt zOE?}&f0q0Gjo1DDc&sJc!Thl+rDQw-<29ZD$1au($1awPj8|a1#w)-Vmm-5-B}FD{ zzvX_f@euHw%gNw5|C5pN7L?a`3w+;;B~wreOGd_Xu)M}|;CxO7&-t7TUdD^CyvB>b z*B3(uUql|s$aoZ%*LW0PJD!|h9G;wvcVT&rcY(*|aXgmS3mH$t@)}QreoUWxB8I+C zA6+da;}00G@duL1G%T5)9ZN>;XV+f$v*WS!IXsp=D)+M+ulw2QKVamUWCtUya+s&^E30t=97}~D3sTD6wI4-i7SuHn{`PqCF4aH zukj*Yio=rO9ET+%<3(t%@gnfpzvU5+-5@37MQE?_BCxbQ9!uNfWxNROHD1IUag(H2 zP8M+)rC835Sn*Y-r-l7@zU|~2@bwHOPer5fSmuw%GXHknKl;zVyQIr~|5P`V-$r7o zdQxQYS>*{b_=rjORka<*{C9??FvU8g(O3$PWgGBVwn6USx4iD(-{@rU*`&zeWqbh3 zYkUAami~{&(*I@r0n2OrfuF^b!H*J01~20qSYG2B;ISN+cr3@IjGy558b9H-Oe2He zC`AS@<1_fZ#%JKXKnBlwfeil2^GV8U{0Gkccyg=c5l>FWm(X70OW?7*9^tXP9?AF> zey{N>IPW)*BFA~ZkQ6x?ufXyeuKo*LVdu zd~m-xev~}Qcm2Z%kmmu3y^;9;x;k zj}%LWV-ib-V^YRD)n4PBu9az6GWQ%yM#fVOc#Wru|6baX48D_-k?~sn|F7{{n}{WY zf97OlJWs#Zc%C?XUdQ3vONETM?{B*IqIIXqDjo5xwhneHXrMm!2DUixDIP^OkIyP%AG%!a}FN6!||OHebTos3{XSER;oD_hx_H} z;QHY3N{ad7!=)xH+o12wo~~*{|HYqc*s&-cs~wLGNcpB+)md{NRWW0&4lRE>p1VHm zCzgR{Kd}t_&4PtZlTOohhZl4G|0cW@#bY_Q;jzETTxd%==>=n-;c3x zcgS?Mfqkp^f2oL~ll7p7_vV2O+%$h>{P?gHFy1SnYKiHU3t_}92h&L{*K$rbd5hxtw^*|#$`_# z#V-_32EWV6oNPPRJfAnyA1liR9TMorq~QL-;Tt#(zgz0n#CGPlF^R3O-WD_U;_Qjy zv5g#$m8D+o+3|{Pz+r)#D?EMe*2N zV)58Z^7wA)KHXtYCBGRN+awJSaXq%UOvhu-$s_*q!gA(8for}jbt;&4CT|o^dy>J^ zo@D;%{+0P^-UJo@R8mu_ReX1U6>}_^Gg4SGx6c(cWyXC`pHhF+^_Rr4=ml3ChDe7q>cRdoA#C))A<_zq6StU>8?*LnbuB@l@d}1Z`uFI+5km$)RU8?7 zfx{I{jy&7#i#-ph?{0rhw+i+*-rwQL{VIhg*Sgpg6J5rjS+@Q+^(;odC>~ozwgHcw zCY5LPN|QU*O1pFR+B$C_qw7nGV;T5k@<;~XwEHa6!y0YZ&67{h858X0!SyLCjtqW= zI5PNZhsK*pS$f)um#x#K4nJ_uhZ|)&p4@NpH=f)-N5-4U;!`ePr@#Ln&-nvSj^h$f z?w=;ZP4Ca0>_^?x=^7VqMwvgaTjX%ROOcb`-|qDK{VnsgW&ULFC#1;8?{AIQ?{9gJ z+Dd$DdAumgm?brv+FaJe8gkv57m?7^IorlvAGQ-uj_t>CY60DfcLs{VC>C{oAQk zQ9QQ2$|j zWEvU#HTjziUd4^Qv+;vYcJ%bW>u-OL{Jk8W_926(eaOh~jg8mujd}lqC&%w-@Z{w8 z#>VUS#(uGQa(f(4PJT~rynauPXJ3)Qv#(f&{GQx+{hoY-Ov97g<#=-PdtKx8dtH22 zCxbsJf3pnvy{_^4y)N(d@#NMyo}B!?(Rls75&xH1GWb*S$TH;jjmGQujZbA7o*bWL z@Z{w8NXF~;Nb4L=?z9x1octbXr`PY1a7U!b;WkT=li#cC^!mLD4$tcm4$te6{2s=5 z{vJlAW6AJ3ge4=tx7q3SdmHxEdMS=y+Wm|a$FKa}ey7*(?eVlF89Z%CMt(1CynZiD zTVl!3Hdr$9dr{-{dr^EPDKhx8Qe@=!qC35QFG~C1$YkUtJzLw+gyuQo$9>!~Y4?MQ8v_JF3o|BUM@r~F0 z_*h3J6S^$3rR?|AHaslyou znUymZ*_Ar4u%`T(%Jn#WN5|oLjm%zTmANwQw0-+w0e_0Wzlq|pn;nnkHE+p@rKZD` zV|LFJnf;Guly!Y6XI=0YoDBZfryVBmv6c2Ond1BRU(V!uUc1QPk2x89?oAU+?qWaL zPfvyD7L8uI=V$soo*ez2WsplQzPk8-#1H--Prt;IqhI35$^9(G>wXq|FY#pX7p2I^ z{W8Yuei`~Do*exWPfmXSY`lK|jHeHg!PAGx$aoRPYrF^?p8br&(=TMa2;((g1Rl$N z#$)LZuXC<41+EOS%a$2w9XkHbZBMq744&;IgO~e>3DZb7U5S24}lRS|qF2)_R*7^}jt`*X&x;+x20NCwJZPLw{v8j?#SPF zrS8bza{OwqrECc_iJd(l7@vFU#Up#F|1|MvH9&-=T zUdJ!{6i@EHzx7YE( zffarkFaa(%=0y1s#JCbP$5>&xHxN~_k`jW#W_iw3UfL|XE|snoG*wmL!%5PhQCN%a|_f#Qn(MONMRk zDJAdsY_IowShg9DrET!?e$w`OKZ(QB&v5wu@|3(^wY}c2;_zG$#o_zOqr4xsz1|OF zX&XG2w!zEwDBJ6L6qa)o9@|GOUaoi9Ue~+uv?Uol?N27boyzv*^M~ymD`M*_y-T?5 zxnHJX$?!Uf4eql&^X&}>ON7mg*+>5|WvlC#$@GuRSGI%p?=3~U%Jn7N>-rM5s#rXh z&v`+AWW4Ql{R&H;!(-`lc)31idtD#H^PZLr{<##HIjINPf7B>v|FEi?j+bt?`+A4N z(@$}D`rWPM^X&UOm)NWG?$;*{q;@bwPyCQS08C@7i@#_`)$)ZpKvnx#$w6Hzo%?_ z{d>yz-<%BoCnqESUbF4>?=@q|RB$Yrms0ZY)!JVFUM(IwPu78XWBW+SzlUpk{d>4L zJpB}hr=QC8y)duqdpJD%0f%Ql$n`_p>-r%M&o@I8s~1Tj`%RALTF)o^SD3j$1sIF)}V?ENQCV_36wBQ(O1@4s?BL$CByb zSTaSPR5VX!mC(aW$FXw$Jk0g9VLY)hrT&(`-$=cc%9|#cnKC=NUG`>n(=n`-k*9*| zgU1e#M?ChO)WAR9=nO5B*`o#>(PMZ1;QGm8$>85hk--4BO z1?P{)4w1rRY1^~qvYX?rCs`K;8NGJP7uVC4Wbm{l8T{*ilbbF>7X}IsIINErd%j(s z3eF#orG4;0E03jSKGJap4)tHJxKI6YGQKpnSZ8V*M%z-^+#`hJ&=6& zStU;e=TH0N$rNBn&3e@-*=_4go;B|Lariq@IQ(a+n?-t=!m5_8JEgN-ZGYsy z_kqVIbv(A6)c*Cu%&y^c^_ZO{>~qJCx$A?&Kaj%VzevR@*Vsh#->tu0GQf^mB8Dwb z1=|OY9qf2)W2yQ>^O|K(>g(LwhuPC=M)qeMeuU%j|40>0vr7-@GezI}JlVdVX1BXO zc&r?j!TDmpm3nU<)SGKB(@kdewu=wA<$4@`u;cLmO4Z!dN>_HmgjM8NB#BXNxH+`TnGz zNfg_PC&#wp$=yjiSJ!QQTYa^xyS?z@nJ9jkOece9YymRA4nC|O{nJ}FPtx9A9c#I} zK6hj?p5?Hw@Z_2m$ZlpQ_mGyihW^!6YSw zxc>AtJjm*-=)81CgJX@oB`6!N-=r$xN(1-AvjN!&*`=wKZ;B zI1bM_tM#u>^`1%Z{V|^XsLp-t z8O380Nsjqq~xvUv8z_l;ab~3Z6qZDu*NC+kG+t+n0UdHKp}SSG9WW6X|GJeK}| z$I>4%4w_~5Wr=2|{H>9dDtUL;_TxE-2mv>h^bMHG+a7{+5c9={&F zRbOsV$d1*pgZ*aqLf7N)%om3bw(Y}_x_$X??1*gg9d_T%Q9PFO2_DP&L=8Bue_Wi* zKAd`pJt{P^{c(8q6AsUB@F&zPp|ezpZKo;F)oy#RmplL9vV~5N`Y)GMeANNVwB0d_ z-6c^$`)bU{{)Wf?w+&dfVRE5m`hC|d_VFhL>=CgeJr4gu3WrZ7W$qQ!DRSnwYo9D( zSFaH{UI8A{7A7rF|T3-DVJ6bFro7wTwKP|8RiKku2;IlXx>7POW|L>pJ zcVh8a){kXK|MYwHPkc@(GWcv#WTb!kz4|9Mfml42zKNIq>G$fN_zAKNWbh$UWGa6O z@qfK)thH|4OzZKy$o@?K$C9D{W66kDUY@>72G9E{GWgq5N2p%u2V0ld->}Y1yyw22 za=yZoizbC9ciAqf2b73y$NR3Uy=zD0`HJ^pSl;vTJ`DS>Jmwf<>xChg)!;vh+9Pv3 z_sdh!C>;K-{EfqBmkR0JTYX!iqY59Rt(I{ke@}~L-SJq~9p9kzFg2w7V5?=_8`k1g zk?YSfjwO@Bv1G*i|6d-u4uKOAX!y?#v;M+To;92va4K3ZO{k9aJ77?0&R zme*g)>-G1Uv^^Po9w{<-d40FNUf=Op&O>-C=OKCjV0*oPVEJV5><2Pn*)V_A1RHrP))_x5`oFMo+;8Tfoo z1~12><#jybvGh4SmOdw+zbvoMU(dyp!RHr81}~q#EU(XBcr1MmkEPGa=P%3a^Ve(f zWbg&Vk-^L7FWc+$7amKW!(-`l^7+g1`usIbJQ;jJab)oF`OEhD{DsHT=kQqioP7SW zy*__U7e@wPNE{iweEzb%K7Zk{^iw>R{UM*fY_HE>cv|DBi<7|@aWZnf$nv^ggysChGO(PpScY6Lvb?Sr;U_v7 zd>JPr*NZH#>qS`3wJZb6xt3+f`PuJve#R$rGWgO?CQjP{{_t&ab)Cbvtfpxr&*z-~ znLioM|ID9^c;)5kXB;nY<&l2Iu~l43u76ry*FUp~BZH^Ek-^LLPuuJICmuV_@z_j~ zlk3&C*Y)a5jwO>t9G1-A_e$Genpk@Gi)7aCl?J=7UwCXr$74gKo-NL2Us^XppAK)S zn_fKPdK{i@#^Kp!xjt-pT_46{IZxoRoLA)fv;Duq zEdN}|Q^EDWE`Q+3m6b<4xr57hs?s+$`19-^rCYx$omP~mmESb1RHmZG(s|4yFjL^H*E(*v~(J1_4DKhv9QeOdrU%uYzdpO|kH^wK@mTujh;PQLZG)!;GRHcjTD_R-`k!SQ8GKcFB!j;=^$)dY zZ*l*)7}533!QpQIp&ygMGZQlS2gwJjWhYbmZ^c-rN*0(F#q$}D48EEane@?PtJlvj z_{J1%uacRXQG6}&WbiZunP$^>`#RlN?mt{8malxKxLTeHwm%O4SpFY}uP&7&MKs^{ zNpo8fTdw%d)S4K@W7mkmV{1@V$NLWDu4b($SvR!B+jXwzxT0^;hd8e2oAjXp5wUfV z*!crh7uD4bOPg?cD!4v)EPVoxrB8hIc!e(Bs(N_5tntj=m~GwdW&K%~v+~ILur4*F zs(!w%_HLN$-;}0}?ocPGyFPd zr0Vwk6ngf-D68Q6H^mEVycxw~dC!f<)|P7Wq<}B1e|Kxbl)d2xiu@YIV}EewkF6tR z^?no>-+7h4WwV~TN6zd~JeF->{#dr*P5OrFXke0mSIjAT`R5d_$F7v=c{so{k*k5ieDwu$>8fsk*U8b zgO12{RD~Uzr3+t=<9ZyPV+M!km^m?Ork+`DzS{NkJl%Mq@yk=e^}+J_0*|dHg|B+4 ziN5&rw`%sVPP*64KCZ`dyyLMP@AyO$R;e7_E2(1hFRFimrsF=V1=)UaJq}O*#Np|mUm7e>GmcMD-~O0L?>lkU^;qS2Yy-!qN^n@2Vf$6b zY9(~`x=G#k!Ey{Re=NrU^G{Uql={A9eAS`B5Pka2JNNv9?<zL)i&Zda+W>&H2kOjE~_+0dz@sk`8jj(?Df$Hcu3q1BYW%b`Iz`=hx^?p&?)>p34o|*DVmWQv%~4(S z4i&T4SRHG`JGVW@i6et=C5{ZfMQB0QvV2DUG-)nfJAPkxeehVe7msCor<{8oD19Qo zew93(PC9&?>p9-Z;5pvO;Q#PVQ}>U?)ql@ksPq0+-u0|Yf61^7tV?StwxM%@fogln zUse4}L-jYK61zU8cr2MVjwSQy#T%9FY##sL1E1=#86GNmD!9MmiJve3L$0knwv!@v zFljw?xpQZ=Dn(VDtM@#&eQ$tU#0aEX`k3yo(ir%ey#iu8GJ`6 zGM}Rz)(L*@;cKR%n`hQycmCzYVaarIESb6Mcj^{(`>B-;TASjh2D`^E9(zWXgU5E3 z3eA2@7wDHl_s$vHyx&#QZGVmzGI)*`GWf(f3+YW=ZmJW}#_0i5Ge_}$@nrB_{>yx9 zpg%53ty_gn(Uohqa6Oh~a6DqkG?IGTY`#waw7!nf_P8#Wb5RtJ<(z`Ya!x5Rb&0-} zsk1&a_krHFZ=LHoAF>QQ=R-318OLJjH1qGOB=Z{U7nSn39!rMf5le>S@kF!;^wm|V z)@k?N(T#r}8^v>eAcN=pK<4kR?R177DfPGm+jaWb^<2MBreVp@&#+`>k7}mlUy4xq zI*-*Qd&i98u^jVwEXVwuJ-Kw7^7GX8u9bA|Oy}I~-6n3Sw9i#BU8TB7eJ8c0>gm9% zd`DHsxU*E_9vR*FA*JC+`@mP*w{Kk}h)a>U+ zRh0$l^*0k!Me!45eaPT@IGGl!$Eb_1j;cW=LUf+9DP51la||6KORT%SdL@ni{&`J9(%8PbbW`qTC0T4 zwIYVQJ{hF#v1EEVmQ2YMsrA>B*Qr}23+QS~Uc2+hua)U!@EpI)fBKRRdTNdLs{4Zx zdc&Z|{)Ycorjx;cFGZ%~+mZT8@)UZ;!{&NdlBVwZU^&+D*v?p~{586p5iR1H0w=1P zLGP;A@>H<@<9AE@kiqwsBGXxZ@ANRuJN?HWrOmDj$R zReFBG$m1P>*EHU^J(u04erc=_Oh9!*jo@ z*9qe5TnEy*^T(1I=U6f$j;MqeuBdK|uzECPrBN$T0VYHD~$KkZ8sOZAU+ z)b%(#=Q$jn^W2UDrvrE8Hx|=c$5FNBOm;o}`Jzm}Bt?H7C`G^fJanrG?@~kVA&+Cq zY+h{3Q^Dg4OCQ2x=|lJvb3U8(t%{q%X)2m8Nk&HT+htwI;0H;OIb8XMIiK@|epKzX zuK7pg`&;HeSJsIPey|i7|N6@&Q@po&=&c|0jiQC!`Ln$Z#YdN7dxuC3l^TDbv3fFb zl!#=0$Ls&8cr1ob$tERV&p|kG@S9Mm@a6JycMYb1*A1;-0|3&r9nFW!cQ)DNH;9DO}F0H zTVHOK&}|u``+!O={_kXL`Gy z`QqtA%ok4|8uBn;2A`jne_d0nhWpd>d*VbRE9kdU5{lM z8D+m=$#DMa7E!}2{PLCA@ypMFYNb25+l$B6lSe#uyj1M(#+Yd>OPJi9%c;R3vs{n8 z>3Hk}$7i_oNFVIm+ib~R+Fy77Vb?d3`O+uoM-%0deM~>fnk$~!QnZzcR=Tb_d3Q$? z&oap1Sq7QTg;JP7;XjxTb%&{gZ;ra2ZN-vdTd`!WHr{3G4`^TtcS>xw^jQ_f(crHq%C| z2irg!b#MJxXL!-hWH)d9k8{g+bI$pY?@+L0COMYOg7;%}Tz_5D>hLCioUb=V@mS7T zcr53vZ?cWi6Nhv(k6PUKz5FS1{b_eB8QL97X2ba<`azrVCfC7q{qbtH|Iv zSCRQ^V}#E3?Nrk=<8c3XKR$Ln=N>#c&OP|x{+$|K@A|W&&bw!^D*d;1`{#a{&bhgl z6zB0lQoM(_Svbzl%Zn4}u*q3W%&`sp@>Dbm8}4}QWGVc%t@(C-b^beDti)t};Ckfi zBYv)|4;ehiE}6W)TsDjAr3>8gDZSH^1g}U)5$iF!B2BC!`tUJI`7XqS;sj3>kETl zv(Iv78@Do$g>ZhUGC822Jue z4CC}@L)GcCKf3eBV>!<7K`W1+w~x~~Lo%2qm*1%+w+FhO z@1x1!XNe=jah8A4wm^wtsZGn>b@hOzk*_Zg#gW0!7DopE=1Eb1zTpc^#o1-78Mps+ z=a0v7eBrSiUt>O3*A>5;Ws3Ap?)z}@Jg&%bMieGfQ3H#jnN%+X5Lihuf4ZbV0a4kp=;#(e=Kc@$I_PgNwbQX1G#*v z^{!Ux_M9C)c`Dfc_+Ok1evuTJ#C1RDY$;Bwe^T|=x5mVG*B{G1V;NZX8NNgEqUQbZ z1Ulb~4f{!WoGS)Cnwqwy8r8N_x#Dc@mr*rH-3p!w{tOeW;@YE zf4II$SH9oPoj)FXULNt-rBY9P33o1NGgdG0ztmrrMZTXoDATxR&F9Ev@^@pYCQ^A; z*rtE>O}f$Q%4Si4zuo!c`0Pjy*H4OE1z)(l*Y2Xv9m`-|w;bhq96r7?fBbT(0n?4S z*|)S_eLloQMA)vU?_8b29ifPA2xr*MhwtamJ#s}JVtJmC+m(I--vidWi2@z`6kUU=*Vsg&nd>$BmztWCp{ni>tmT;E0< z%fN4xM>6;|zzix=OaC(Ss{U+Mcl+m5ai3)RbE(ZzTcoy14Jb2E)l-$NO(S!fSZ~j3 zc`DdHv2UgD*lkkyet!>FN&mj;uhhDbNq%`u6hBRtK?c8FicFGjd34I|)vff$vzvC6 zuecsd`{S{+KR&d0PQA0bj7fAev+2?yh1))O`VJX9{f*4=x~p}QN7t>hLvxs=^O{BR z>@zZW_8FN}rPu0m&*IuelU6h}uRR2&A=Iv{SAj_ zzv1xgw?=21n%Y?&S|vMtYwYtq-1)zhX;?DhjwLg;e_t~$@dK;vliud~!|z>>CBuGZ zzGT?X8|#iWcPp&6e)y}oIo;FedaO_8jmHKYe{W?aGxzFAD|Wln`nSZjT#wx^7LQeq z|7mk)GihfxRqVtNee&fJpFADx4>&x1j`hIP=YCJT#JuQvDRkA%lKSzoM?4+$I6SWb zI41CVG577yCSAxYb-#B7{pG?5|9_tKr)@sUBkNDw&{}Q$& zL5e4LO6`&w{qUWdKW@GM{?sI9cb5ikf5u}u&hS`{v+vK0(Xmb!37_!y0DH`YtUY+R3}P4QUT^v_L$blfdd{7G_V zH+i~Mb=N{}-`j@CT&G;8z72`0vCi z=-)Q!vmXA(CwF`CShg9DWo1uXuA`fFGWtOI)F#@Fl(sw-oc{#*gAD$l{7nWQ??Pi0 zwm6GE6=$?g_;IM)KC~wpJncya-zU=~`8`h_yjVE_V3Qw--l>_Qd zlkS1|=hNwb-(+%+M?7|p6drq6>Q?<`s_OVrfle_$sm5i7yB@b&iX85U6uH>($ElFt zo`){>rPQ4h-VexA!R^J*lOlsZDn+J$jZ^A=%uc?RI)?7EKa<;@IQ9|q$NehB{5uY- zqE|H=6P{~i4sGm$?)-6h+7ySUP3y$UqF1$yr8~VHrH2P?xk%T!?(2HOXZeJhW6EU#bIm)B}_{@K>C5!uX)za!5-IQ(qc1|0sl zRDm9`^_sP({HGFTGdm6scKbgb%Q26~a?D3GjjOZIS?hn8BbBK#EAsq+J=0i zw%pno=y~qB&XX*@yMOW6f25c%mh(x&um1|IU3`bH|GC|IUbCg{{=(sBI}U$RD&x4T z#V2mN8_1ovhOY7Ou}_`~wm%-rF~EGW90Mm~y$Ng`HAwlES-R)*$lqV#@DC&(bn^Ep zscWm#t9}1W4!le;P$zo4DO8>c&L5ARBae72$3dMGS=Hy3D+AGfZlcHen!4-5m^N54 zryWbCQ|TsZ*2A&>YIR5IIljo>v*G8-bTW93FXn$N)+tq~(qF!pi`(cLL+82eGgqeJ z$(@l$Jh|g*;^<-nD_SS@M14xemY1i3>rb2G$#Fd5$(6htPbWY8z`y)uR(v1)u$l=aQk^8qv23320T&v!mn0oN&fv#uX z2c&ryPEd6RL0vCFFavhSE1 zsJr-JK%NS=5A$Yy$S`j#nM^Cns`GzN^EED#Snaxz)LkDuHml>YH>7@wdppp$#9yJG zKb#8Wx-{IKKMv1&;qa{2nA6t+BL=?=OFxL zBhWu_S=VE8J05$>@u%|64E&L3Sm^iP#8Mwy7I8gxk{ITXz3uoII~N6>bbK9NaAQ36 zv~6OaJRNKwd>$u*zvE=KES(lOll)Eix6h(0fBEFDXWsZz(x%KCe^<)>Q3YnEuvMBI zIo05rv;Fc^aQ--aJNbVc{+`s7FY5v|8v9k9v|p=zGiJIThiAQTc-E`t^dAB@^TY_` ze2`GJn4R8TA3XN7EC-MMQ|j^Fp@CV$VgyzuOQ#;sP3d}UKCyW0eaGADdjuZsE*WZn zmsE{emo6Yr2iG5;-^t(~IGHlxKjPX zXu9v0d~msHat3b^yf;paN;f;@5_N>n?6PEqEW ze|f6sD$%>h^E3T{V}Slff1pp(pSR3D8EDY)eE9D1cLN7Ie-4$Wg6+xru)VY^>%;ca zuFcku3e-!LK6K)<%Yo}fUWfnZnLmB#vAl<7{`8@TQZq{xRng|1Q8_#Pr9wXBwB)Ja z{C^X7OzMLC|08+wvD6c(ZF7DJHg3#fu;2dghHM$Gq|6dPQsse7EejDs}#Q zwd+1Gfz`Vz8)#RS%2uR4<5Tu3XgpuHMr%bz`10L zRM`d-)Xl-4T~FJS!PE9+@a0n94{X@|Nkw}yKov~&t-F8m*rQT->`SS`?~bSzr`D^Z zeQKz+y%M>e{YnPUekFsiy)lKF?;D}IeeM%T_2H_!J`-gc8T>0LGWa`(9t8@0H&&&s zUM|q!;Ga=EeVPoOK20X~lLy5=4>=tudigGGy;kT9~ zRd$|(Q9PE{Nj#R<)fcl~28LcQ8`?JPdf@f!MDFy$hdjlwejTvAx(|5j>R+|6osxgjdr z;)`nby9l>^8i{Kn)lBN0xc5>Yq_P%nq3X1~@B5JbSfFN|2JZZ^tsIa2==hBJa;u4_ z&xL+kp#x=BcXihv-`dIGKRKCovnr|r@5cF_H60Pi*EM+ADY*X38$aD~_|H=&vxVRZ1)dy%c?9fLjy;WoC!RCJt&ID&Jcsgev!)hX}D^% zrJtI4f4WLgaKGC=SlSYgr7iL6-WO3TTjo&FS{7CzRYtfTho}GJ@brIEe6VlHEUo%a z4GnKRC-V2wSdJMymOhRDs#Pi9H(k!C4=w73M_h^gK8t;eC&#|UlM5MGK)oNGROO2E zgKEB}vAaHa`ZF0k{h3UmeaTe3pPmQOX054yIau8FY%lG}eq(!SPxf1Z{ms?8ZgYKG zcA3Ceb&@H0%H3aG#CDdVFZ?6*uhf`srPad{@qKvyO8>AMjZA zL!MZ9)YjB()wA6d)uHl%C>~4u#sBnF3%E02A?POmbB)C_NVGg)BPnSP=2bZ~uec#dNn zp8cHqe0r6-%#`quIjsT{A4GnB$79<%9ve@dyWA&(+TDLwc&e2>10&0SaOaO@|KhRi zUwpapsnx||=faou9v`qKCh^JB?)jmUGk3Ms&vOE?pO#e#nqCV`&A2p*$4(QA$I_>!Z+jNF*MGhG^_i_++=_g?#^LGDI6VFN za>mEL*$Y31{&FF@idic1_}VAa$l!S|KnA}$|A;{Ij4}OBD=k)?-VS&B8|#lJ$NJ#O z6(}^-x1!|VD$kS*ft~9kf1iWLUYEjS%Sz?`JXJm1R7x*3S@ogc=3DYqG^&HN4Q)y; zq0F1MCpV%?bk(8e(m<~K#@c~8-O>l6WQ)B2h5m*o zNB_i=i!t@5!0**YhEK>865cZ6l-u7}7d$!E1y3$^jVXcFZFhxt8J#T9?^q(Y|KPFo zPdt|Xwr@>bwQ^dEz?O8i0zKDnay^!HIWF6dWnB_W-AJ5T9co-EaO88`z#q})xSr#Y z44&hW3_e5Ftm;U%G2tOU#tSTeztvs;q0$#N%k-vFeAmNo50XiJ$rxA9%u!rlpDd6?5p1 zN#nWm$MSv|k4+(kzZv8x#j>D&vdRFSF`nu*UfA<=d^njLW zw2)x`VcW1|QaP5)wIWIN$WB-MH7Cu{vsboqeI02}Jh{}4C%3<9D_v~G80*_2H?)d~ zZvLA;ZA}KBMv4qR&Vvyu_o9FN586!Ao5n|8@4_FDFd2MWDKeLr?@@bSePwko@j(B6 zYmU1*WbW$ZRyF2!cYM07m2}zK{rvUg%~rX~ zJ#za4me(*mme(-mpV9AAb2feD&$l~cpjFSv^9g>IY%3Xj1}QREt7KDy78LZ~S(LN* zm>iMUS8;e=$8dOF$7&C)pzbX=>{~XceYiEckh?xOJnwUH_;>O+tUxtYw9)}zpxXRE zr&7hDcr5Qv@L1lTJTKB-)w}T2w>kE#z|lO7U5{n{!8Vdd=FfIa*jHGky_dqDqvN2! z_PL{6KS!p~cj%uP<&nNa|6JZVfo?mgi5`EapH6aNvn7**{h5742G8+A2H#*nC0+l> zHC480ZN2My4%gEcn14^%Z}bJ`pGhiatY1~pk%z1S8B&{4-6DTqfny(&!?BOawcJ}r zbqMWiJ$-gSZ)^L|?GO09vMyxsnVrn1kzu;;fV%!x-M6UQ%}==7i^J1C%o|VptbLJF zub4W_Uu=_nkJ|IK>*@Dg*Zx*K{XUCSR;fXw>gkd@uK0IPSgwzD?%=Ku9?S8C$8vm4 zEW1zp&#krM&&^??C(q>`FE~8MJPyzKC))}e+sbc*jIzkk6p9vU8-&GFwi zpQl?i{K~43ca#2c{%m)BIA3AOa9(5HWa3snuDczMp)zj%RWGjAzqqV+aR2U;X=Lyr z@<;|h|Lt*|JlbqEC;M%^bipM5|9Z~3WbmAG$yCkULeHJJPYqPD_2Jpc-2OmYGH|?#qpPVHB|Nc-1AKisT?@@DssFCju$++caA4l?6sw4eLm)^Dr1MV`4r~P zpKJ4Ya+e%WF2(Y4s!aPt{>NRm2cFa!8pUJjZ+I;IEp|vX)qF}Gf5ZB{7nYm^!hcmJ^d@+oYwi&nr>a9cr1MykEKsfZaG|UT(-vl({EE%za$y8ObYJb zUGfLZz-Jdn20x?7R(-xe3IFI}2UOZxd)@hSe38L(e38MgZ?R1me%jst?bR51_L!Hh zALMv)IUG-J{`aB!;p}07ciA?m^nt1F`v*Lha|9mCIpU!z>ig@b-~H>Jr7|hbcXihv zj~(dDADi?4W9u%UqqyEaj^nPu-Q6WSGYf=bL5sUn+}(=1yF-xR?%BB$+^tA(TC}*e zxE1L8eDhB4{&NoJ^f{ZdpWmH3_uiS6Y<8rszxd{>Uj2$;Y+S3Nt!b(~=PE22&Q(}4 zUF7%I-KH!xcJ3IhLR;n39!qAk++xY(mddC;;6GZXYO_IZ7^GIc0dB?t-?vY*jbu`EYGX(*t}Bs z%FR=&q&Ev2&5XBpjX?+W_~Y>ZNdIv7H1czbHX-(-0-20&7ennnS5|0$T<*v78ZDm` zKEISvW05_hdk=fv!p-*n`{Bla`^$4NESV&(C6nWi&vu*bYwf$KzT4R|MA!RE|H?TyU)PH>QRc0dVKKMW6~yVV++ddv6FjzM@MzDefi3%++WvgkNs6L zcx)lL#qT~5-5j-Nn7z*Ktq$B&+Oz(#WOBNe%=qBBcJZO1W}Y}LRnjK@&%fbW(`4|u z+|1aJZAP@E5A6LlRwHWoH z`2sLJHnrT=PE^ot)jzAfx>Of?bg^ODWB-)<@z_-IGd{o7)gF1Km0hv%aeMm2E!tzx zy6s~NyY1KX%r@5M9IBQ#Z|obi_KqGOdtViGU$w91 zdU7dUPcATbjoqczeN>g(8NRXonp!dB-zdB#?XwMhQE8iPj4Jlh^YZmYRr#&Y(;|H- z?c>RPcycLRPtIB5$oJFkQmW?!&z5hQqWCLvKN);6$+L|)=hCZ?WtY^?MVs1X$C=tQ zw|KV0+~Ub??UqFi+aFU+e7(xI{LwFZfAObeN66rdizj0=Tw%XBA8fZQ+t;@^@diEq ztRFl%)(@WC$!yqE&G&xvIy3ja0(RZp{?Gey z-odjS&O3N=M@~;Qjs`Y0mn?{9FPm{d{nvlIS1cKPpqr_9YNRptUN>{(*=fFrR_C>6 z{o~28{_*7Au1aL?t6R$KcjlZgZq=1h{7Kmu8NA2cMw*E2#?Chnj5XI6`hrFTYtM0l zXFD7xcyirib~AeIerw-uw%@n%LL>9P{^MEuWbmy0$ZZ6zHV$4`XOB}^eMPIM(VpiH zd!=~J!E*Z&)(Dt=cL_iQB$_>W=+Ww$ysP@mVlDIi9QI$#r`ctS)~~rm{Z^ zQuF0{EAr2g?c=eWZ}C{pw==(tSN;3uR)daPs#J9U=kf5^m}2l)Lux?WvtetO=T!4P zwO0$)j@Rwu@T`9vp7npG?;@jry~@7+$9CCqGxyWam+)AQM?99}(QGx}Q+U!y-|#0L z?clHBQ9L%T>m#lF95a4rV_1)hcHq|{s%Xv`dVFwr&L^ha;yIsWh_laAI@>7wK*=|D zVEuF2H<$a!;4Qf&gHQS8q%UOlpZ3N&CDhbp9=*SK?4Pd3az1QTdSTetbDMojLsP0r zTleYyb3P}7=X}mK@RMH6uxEUlVeeV;#;$z!uI|rV*OT+Qo?O4+nfBY*ZS8Su?%Toj zHb?Q;*sjO&{HN`fKK7I9fp)*u;db}mCu+Y@=8A3LOG&W}{MU9j?c;;vs7mdss9Oj9 zf1kp0A2N8J`;ft32&kimrIo*7Ydu%JS$a#455B3~PX^EPRx%M0tJI;XmDQTYZB_AI z{_msUy^QZN9(?BYkgT`T^8c*wIi>%y2Q2JlF8UPTNnP`Wl7EU^&sZ``q_AYl$nDTs z>+L4PkJ#(p9#W-q#?t-4;aS%>JnMRUc(CWmxViShN~=}T;1ha$@L1L<9?Lo{7?Q^D zm0zIl>^!W>Px`Fe$FY9M;aET9dSxhXWX@Z~*X^Ho_R6uAUJp1tYXXO7P1HNK(bv95 zJX=i(P!}==M(GchIm2U_v*9~l`?h}F;ro!Xm>M;Eoo=7;VH0H#yA(W@jqmc5aJuzuX~xdd z+j(C!hW0b0-(>LHq{!emPM@Ya6dz#Te^k$zb~$zwkNrmqkKHac{reOZYeJA2^H@3O z(90`&e|c|%ePuj(Z-aehJU8Bbr^dXvZg=?JNsZ|1|9uCZ_fW{-c~6AQ`c6t6YPQ=> z-=l}hb@{PgpE&#>*WsD`h@17D@gbA#^uzkAmraUmkHhmG3J%YEC@&LsceWI*qp~EO zq{bDSX3AZW>j#gGFSmGXsN6odIn!C4ILxkdC%zLpIj3%)$6PEK-k-seN$|X@^QKQ) zRj1?&)wN7M-To2RlUpH$Cl|NJZs$(ZhMoyCt2QtvE9HIh`^%?VF#n zQ+;jj#5^%r_Xq!*^o0yQ$jziT(m4q)7cl$Q%IEAUd|0=iK<>wri{*N9r3>a&885~+ z3T;i}{QCMIh9Yu&@Cn@vzN{46D6%`cT7A2w@9Zo2dxt97qj-K7N(Rq)olLP_C5?f- z4*3>Vo~r6zZSVQ7eQZD1V;jmH_}q_c8#CqeHa*()QxStt>HWp?I~_9kIBurvtqq>j zosRf6&m3sashV8-zHa+u61$enj`cA-n~Ph%^r_d{XN#55{lTx4KF~hCto%%$avxmo zdG_EB-=akg)G_B$6yHO}iVU9pCewOh5!-6g-&1b#efwsD^m=^wUSKR4eouxaQ>pDd z`*^y7#x&~>yIVW|=VO^G?x#PDJ7YtCdL9a~N6*QlJbnIAGsbq+>kW_P*urBQOAQ>D zMJ2y^QKf8I)v5P;7EAsqa(-DiWbmvtGWeaFvpKcO%uz@GDe8=!_?vG37rFnTWbcdl zNq#OTRbHy?zvaUhReWK^x8|tVsXKmON8TV9?QFA>pIo0 z#1QRqE2Tf=aFwLU{Z#Clv!eV(YjpTd)v7>M?QwYegu~OP2lX6hOOB~lzQozge<#M( z9*6JYI()EHtr%yVHycY^?;EF7U37;{>_!~eyKix z(tq}MsceJ(v%giOrnSrI3`x`0I$UmrN*Uw2_D@_(rmAbnGtH!Q?bu& zjN%tb-^t)>xS2Y2esf~JF6~`BYlo^8XQ%dzKc4L{{&;dR9>oklH6w?2e~%lgVYMaN z&zF6`ll$5AQuaw$lGjI7o%pe@liaM^@himmpWI<2(S7m(EIiNZNu|%i}t^X zV;lII;>h49P013T-`Q_vTKlJUW^P&SnO`z^=9dh9#lGs{*J~HI%6qC=0d-I4`NE%d zGx%C=CgG)u;Tr}{wtCiVZ#|8X%-_DWizmmr!IO(SCquYg8OMBZ_MYL*RLS4I`15WC zU)#;R4Q&t}t#o0dWW9^NCcb@2NaT7r>sm5(TuY|@zsbW3$zK!IeZ0`@FukZge(~7( zG6#5UU8$I_{&c>6OKVr@zTEtfnlyf46#u82!8dj@frWo{^4v`49l!LWb#37s z?XmQqZD8p?+vs?If|DU*C-0u||CpDr-H77vxfy&DHxvEqR%eUR)w}ax21^yXr9GBo zoo!$_H?WP5L2I3mvxB@Ro}5q@J3Nizm&?AA!Sg(h%%h-%PNVT9y*UEgsTPwrXph71 zavi>z)cED8oGjPBSR<`h(@%On-8X zzoX)xm~6FcXgSXs$BN<)xEXv)DKbe)&QN)RGFr9fJW`KG&C~0%gWSjG_&dvOE2-8} zJPzy{8{cX9Z)PiC^HR0EmH+R}arB2Aj<(62|2e=Jx-_r#_oQ`d^pa5BK6ad}WjuDB zYzsdjc)dzG{ET_K! zd#Yel_4#IPGjE!W>fDA4`uu~#Gp;y1eeH_2_U zovqZ1&zsDE=)2U6+y3AGV#kZcV>gS%hvc|sR}V;K6-X4r`TT0S?mxbho58at$ka-d zRJF`m!rGfvt`nPlv-Y%&w`H7g_%>1n-gW8y)( zM$u>H-9{tT?V~Mp`*`eQX&aB_@htX=>ptJ95mxYmC+cmj*V^Oo9Ah{<$5^A3P3))f zLap^JZPlo78ofU8*k!KAwv`G`{n+k$`L&flM^YzkhPK+{@SG=bc#iwh*;}Y7znb0` z+2X6|p_`+4>=PL$Jhq)wsY`3sfo?6m8J)_iY=H~fYQ)q|4byc^e)w`QLDto;IUGo)6?J}i|S#{qL*ym{~N=KXG{ z(bxMs+YbDpAMfzkQF4pNE|c3bN2i5vFZx*(onkqUfBB?6_L1C=|8Fhf=gi&XH0o5x zJXCkNni2P3y&iD*u5P=m4UXv;t=>3&m)|!Rd&)acn*XZj7mqzDx3r60Be(NsWDkE4 ztGG3|PcbLMpnckNF2R!FT!JO@%3I4Bd3&X~A!3M{l+S;>;29G#c+L%E(sY>O)Yw?p zYI&imleWrv-98S_agW1u+(#^_Rf-i zb26ln6V$7_`RV;8Oa3YH`3e3H@nrDq2bqY?zdK0+mpQHPe=rY!{zrQp{+<*L-%ZM_ z?{nTQ8|8c-|C^cgr*qn4Gq@hx-St)b{N?1^<#T#24z|KCCini=AM7IO6YXPpZcqCs z6Q&REQ*4S;U`S8vu!*gBu+o=%J&?;G`jBbB{+di3|t|c?E z!e=K-gsrZBT548!_e8HZJeKEUcr4GaMg*n~ubRD$^Xz*$Gv&t(x<9OaGI-{V4E|I6 zS5Cjb&Z)mQRrS5t=>NV-JeKEtcr4HP-e&ZKCkq^|MwCh5$yMbi-5=IJ89eKs48Fj& z{oxIL1=Y^P8`X`EE%o}xV;{O6TUlyy&eGxEMs=|(Tu7}Fg=f+p$MHfA$MM2;W>i__ z1Y93$zUxt1^>6L}{SlryB7+Z>BJ*O}Nhe;rB-Z{fh19O>vmLoRa=ozzuw*z+uwj&1akV%?Rw z_smI{zM{H!A-gg6Z9_d@951Zp9J2o$FRbMma$9ZES!dVQ`cD1Jt<9yK*I4pTk>i71 zEI;G1OXLpx;mMzz?ghit?9zG7vMrwL_VKKJGI+*`%)z*+!`s#w;iPO(Sox+M(e2ZJ zj`<{VOaD3MdrJi^nBZhiIbGE&oys}ooY(Eg7e@x)M;sY^j|zL7(7-X5Y zeLUks2G97A+4tzHlX}b?Rj#OEG|L&T+sBegAcZB+Cl)E>+E0gvVUK>PWwCJaw9#pi6vc-RUZl0=_>@S$=) z8T?Bv>Ge-n$x)^z=^M{0zRol?U}n2znn>6MOJTFHCh-Alb5@Yut$ zJv?@}RHMo5oOs##IN^1od%MNktvwFUxZ?1P>-wu!c=WWf!mpS$yceQX_5Rm?JeK1O zkL5V4Rl03>=|FFI^unpVcY@|>kHd4!;P4zXcakIs@16O$)8^W6>%_H8+E0@Ecn^X( z8zDb8lw!`l6|e7f9(~#RxpZCc^6w4x_~WsRKOW2YXP-0CNqXmm6ySbclMV=UGuXXYsXqZtSFL*5Tg~u{qn;I5!URL-L7IEM7rVj9bzT$yc zGWbz)O9nsr;{{dec1@?-i1Oamw*S%-hhV(VSe#Cpm`-t+rlPyrJ8_ zE|v^_j5sp*?nRC}({rW^Uz0qU_fe7ldcN>j<{6J=p6BIA5#H(KHs{x+;nt@4@wDe0 zNCwaOpA5cA%Z*OEqWrr$Xg-n~UdLSJnmS{^PMc zhT*Y1hQ$e->y*noS5-~7(0YCUfPQ>TE{^?W8_XN~OP@-d3Ug8?T&Nc2`ex<4wLXf+ zvK>5@?VL=y(ur~To|;@+Sv&4$(EZ_c9k1_L)9uAImSRmi6=$gHAw|4FGZTBu++3&E zCqD8$IJw1R$4fN|ex$awF75StlX+KN-KG5t*R!T^c-HjGS#h1wr{7zNcJ=a3iWnHh zW0y+~kDVapG;icwIrYMNS+16M=7etA3x*K0UDYZ`}VO-DZ&!>Qb@myD%p_$LL(&33?M^J1AHGNw{{b?ljRxMUcd)9HJms{2`p4_gqkDU||ZPonrF}+zI1V`}!(l#0VbT`xa z`%PzRteJMVWhuQMipcbY=~$s*3kIom*QTt$`Q7V19rn>*UR=|_vwE~{psH_K_hsoFa61{8b+zBYI#}j|m-3ETP zo0*vDwiB=^!YF>Rfb(_981-L&QoEkq9M_Y}{L45e^w13>`ikPtgo9nR=Y0(_c;43_ zgO4@hw3B4{dA0p?d$aSYwEB3#hr1d4T(M-HR(PZ8&W)q86`AZTd*NSie4YzWZn5jh zEnZVo^(ueQIJ@i*r{%Hsx<7bq8rNfIOI2Ey-HBEIqq^!F>nzz&R`+MEj7@C0f1TXU zlYY#XS|C+F+kCU&y@Y12*BPBW{r!KxhR1GjJ$9i~%Jgf^j2o^P?WZPpUS{sC`@`{9 zK-ym|9*18fxUe>r`StqGPL-_dqIm2k=|3L3SZe(d`JVK;CybeAYdW{P{HpyV zag*6!*~SuaAyVwapuyAt@hJSTsyeNf z_QR#^ky5E8vsBzNspV2}mu9z`E_-R`+c8uv%;Wz)7Cbgo+Q(y8NLA^U$vRQsnteLM zB-K%_*(@aTe2Bx}m;cA%L#6&Hf8BhUpqBb6{WsNb*PJLGn^rP->`JMdZRVQi!{Vuw zXYZ*>`AzL{_z6-t{3@x5FT#w2g-uoDRC;G)k6)vB>_pdNS4-8&c+6P(w6v;MBc0Q< z?e9ZMRDu>GIYL zDBsW=SJMCefmr&B$8M6sze{F%cGb*ocHX$nm$liXDE&Dp_mjbImLgN|;{wkKGrxH` z!5_ZoWoK$1BJ+zSv&FS!YA#RYnYa3m{dQq?mGGxRdOY{YePr-krO4phZ@zAn4-8QA z%G6WabND|Wj$b0441SvwnMya)2lo2X#TQubq`l$rNY8)ciC-+141T*5nczJ>W5BqM z_Mk_()#M$k^!av<%p0EE4%d@AmUp^QwEumhYLZu;NrwOR8Xn8*B0P4dRI6;)jDM5Q zGVY}J_}(V{q|eXHD;Yd;fL{9dzOkpy~vnJ+SU#-9w{xgWzUwj{Up zJnnpRYSKyC(-$&$`a%XjJ!vDO&!=qW#8O|wRxg>T=L^r+lfg6gWHKJ@XMCvK!aVjl zv7IwykM{J1wa-4#7v`FMNWE{Q>eF?j8NY59U%`iob$^(ri*~dE5)snS|b%E&L?F{ zEzVoYccn*174fu#=S8lgdcEPXw28+msZ{AptMdK3sc-+*G3^GIw8!E9lKsHp9jPSS zcc_Nj6R14(GFa(?=0)+?zg>?Fm-_jS%_@4zi7H7*A*;ffSe6V)vk9>~V%fTu|Yw{I7rU*y&>M*u7E-zb;kHvNv-kHOrzB)^>FJI6PyD!!xF4{~2bw zwPT$Q6;?RW*I&^-yL5~UexKZu!Ozd__&P1g>2x_))A59k)t>nxgJ-_T;9K>aWuAMI z-)Z-}wG%DC|9aLZeZiC4?|O3Q3w|{+1*URFuj^ztoi$Xqk7qy0;19T&EVEA-pFF9Y z3nePszaIB{))t=JLD!R;`tF3U#+JOQO52%crx;81eEoO+BZEKWX5ulZ+PS-S*b&oA zzR3Um5?Iz89?P1ePvc*2vi}@$!|r>yxcO6|YPx;=O6e0BJZqZFf@0--G1A9XSwH=4 zd@9yUd)mdaj%XLlzF#gQ-@jDrk=_2;Y_q|L)=@kbgXfkxxHqw`y=PQnHSo|-^L(wb z+H*giHH72;SwlrK?e`38k<3Z(DZ*aWy04yJ?#D8}cr0t^_rci}zDM{^cD5M(wdYvm zeDh4U!LfK$>X=mYN7d{Tqb3>)PZu(azC5bWw;Wq!@EluY@Yc%3YR&fcVIAsCFptDc ztIt1p>>Jl(k4t^N>T`^;>x>nlzo-diUPNgh%P~g#SdOtJlN_f)`!)9XCO1_2RVnoN z;P4zTI6TM8>(yJGD;bY@&Mu$klz$ki+m9*ZvRizJ820sq6zA&;-BYSjWw#hN^29UC z-;JS!MV?RaSoQ&rWgkw&kE1S>tzyf~AxGkyszbcYR>iE%jb=MXYmdWsa~=M)RK5;X)xE){c`B%mv7@K| z`8FQQ_|Ptv@hLguureOqGD)4 z$lzHEWbl)c8|v4u;GZAI8s8#E-n4XEF&3<|N==L|dmP}2V zblNAA$eCp){$-@Ox!*lARk6cS{7bh___J>Ng%WJCFKwJ+B(-Xr?dBiW`-^28yQHvW z&dIGe*>YpsvjFpBff{DIL2Y&WI3*c!IL4LSu*-Rjk?k^>6>`S+9BSczJ&R8)ZIZ$B ze1lApPO*)ii>evn)m!*BruTn-m~nB$G6(D{&kZBzEK5tD_k3aV*s_;_74P|v7uv;> zqg_0?_@B4h>l*{^P_~ zl=0~;=91K9sVh=5YL7K4{Z-48rf71{*<#OqLL$#6*q>aFz3TdsA4VA4zF+oi^+XTr zvb>&dAIo`=_OaJoe{AS1V{_w5MwdTJc}^_f6U7g8Gx+On=9f3=j7KA@8P5~7^*mqe zXiwXC_L;Wv>~qTInSHBc&NoVQDr__u9#fAe4qr(22Zz5QwK0M1yZmvZ@kjX{o~x}= zM)6q26OUy)$J9+?AI}+K6l*ih^ZaZ{?Xm4$kNw^CsdHwuSIzro{9LM^9kXmR?Xk=m z?PHlU+J6(fi1IEQXS{7Z*Jw5Lwfz@0p{oD6^$VuKYRM+J{`ql z8Gk&M`OUFnu(9|34bLBDfHCWK6Yc3g= zOAe2{DOLU1XwUrNwT%@y#{}*l9Iie4J4Ad(Dfai4)NQFlGp-o#e@m&Vw3%xEJ$Q&I zcSob}*jcg|@Lu_j3>^Nx)Njc<7<>25wWnVU zu=B6@VhD-sKl_R$!@gq4Obxe;S2qXRM{eEpWlbHSJ(f%l=@*vF1F1wW9nXd(dp);1 zWbqv+S6KHShi9B{c=owa;~2(Z-xSaDva9SBZ{ui>YvHz!dniTj!Jm13#bQ@7Y8@_M zSFh_oKd>I~B1w4(^mt zd)6iyJZqB-K1=7R#_4SnJ@ev?_4TYD5XCdcWbn)}nWQ)S8mAK{FnVVW@eNtx|Gp#6 zhj_Nb`4CTT-;24%=%wF0@h@!O-KqHy-9DB~9w{uDM^YV{RyAUziJ|V_+G@wG;(xx4 z!*dMd@EpS-E3bs*?sMF3(EGUk{6i7FK5_kJU&-MfOOeahHG$ndMMXPVv>B>Lr+tRp z9l1X7rtB*j{1Z15eq+9G#JGZXj}z_H_)-4%L$H^`;;~O%|ETCh-}Vtrj1{@6sAqrp zujj(?#Xi#?jxY9^{){=X*7KrL2^G*cmRkSH|M#b~U)bFS?LU)Z8(p_F^6lK$%!oO> zu38*zryfu2WZ4FN!ajHXKN(_sez$HI*Lxka`?Rq1`Wztl9HTGt=sRGAb?%x5sT6 z<(Y2z|9%r2SK7v7|91WLQ+tiO{pQ;l#sOE6e0Tz1 z`TMi9$JTQ__Oc5FbPKmkj=$6qy8-XPRLt%lbkFj8yNhOwxak zk8LgY??#(!+r}C5_!Dfd2Atr=dp!M(A1*l<1%IK4r==D z5}?f(Kv5FYM%^Mr>w~bXtcl%%e(wA0pKl@9+KT9z_TdvPGM#XsPdwDdG zadET1KUl^dk7exfEpi?;s(y^_YY;1e;rr_UK1tT{G^s+e9oF&}sehzeo^NO#9x~28 z9CvG2qL2G^|M6JXKOW05_PW3hBiWn}p2fp^+qbIqvgPi`@&DPiWWKtVOr5|G<3Wm~ z#^!f(?K8Mf8UN%aONMsj!meyBiK{eeU&LeoX!+8f!u1fhw#=!Lv zKGip`5${!8?diu*xgSqIzPY~LxLQWps`2eC`zQFWc$!46uQy?$(Ybbi-_GhCeM3Hl>f;yBc#^?0o@7Q% z3^u-1@%au0jqyzC9$$|q4qr=hID8DbEtV+AFw>{@lw5bqx2sO5PwtLfKRA3Lxy9j` zx1Mt<8`t`$4g8+0jh#7p^e7(N+-(;dQ*w7JoH7C?WVRbU_~a|_q?_&!mbt}anOpqt z`5Ys_ThP9=yT0B1<{0g?zX8L-Zfz-G=Px~$(@5la;<3yx9?Sf$%(}`Leqf}p$^8Mo_8V5}`Q<#t`HJTS zoTqL}@w^~=^lIj^Sc{Bb29B`5)=8`TgU6PV3?3U-+Hdr|uDNi}4&#AumR)3jVeN5v zjvE}F<7V@{Q1kK9OUCp4>5Rhh8b|Tik3SC2yy5W7 zTY}zO4A1lezLA@+hLzipCyK|8aXmJnRE0Lhjm@9GhfORn$d_tOM(wezH9VH}i61by zv~lyx&9HO1`}?}(|EM2Nv7_Dgv58#&s75&>V@NKeVW|Ulw2brgc;Z>lWbmwKGRcZ0 z^u(#M))R0n#Gdq9674Iy?UPCDS~7JQj>lSFn>)o)%ZQ_5#NxISbDv2ykp65ykp6vC^Ew6 zcWs*Ir|(sK&CC0*7t`4F#;?| z;IS#C+Is4k&0@T=|EzV-E@lL2PhaR0p1zR5$CJOMyV3uUo#sI*)v>St{dU$r89eKs z4F0eFv5YBw%G#52FS6fN2-W>(Kk?+)PdvFErT+0u+fl;TWbqRF!Rsk{{ot{ze>|4; zKfZQ=apU*IVJpwRut!$?M}I#mV?+O2if3%-e=4bzIesz=rdnek*-%amZTU_2hvyE= z73+cL4$Kwnq2>v%QDbOqqh<8Do;|*PdcN??F&R8_OlD$(#m4MD<2?oY4YhB5Ppmzb z4A0B3WO!b7Bvy8F;mnV|GO;VG%q9Ha_m0QblUqEN*BHNlG|ah0s(3DbnQ9++oIS;uqaKX1aaW=cvw5)o*Jgz6l^LaeE{vlJ1-e;_^>whP;N1W)e zTkekRKkI?^$*~^r?}*sU;Km$9yB-l$E}9LGSIo zn;tG@cdW5?acsNO@ZG)^$7<{TNi~-X++SOkD zVyDfuS9^{tGI)+FGWgR6CL2NLo7?a5{$yXYcSZ5oNwS9U*tAl=X02%?dojZi{$h=WF{F^he>tIZ5s zmi34pANoQDPhZI3r-W@XLYnvWByOM2p4cp&EhKV0@pO(1KAoG%;dyHWbXe(meyx{% zdx)t$V~HonSmMe3v|AZX!bW=jP8MX34fkJv1aG++e0nz%yuvZcEGlNCUO&uE^v6cs zK0AUZ$6COX+j&03NHy4Fn16@cfi3*MFTj%Fc@~xo&$IfzeQNBO|JF`=e6+o>fdBW) z^qmZzzLUYPu6N8>cj1NocF=ZPy|1LlACKjE86L~?tnGL6n5RF6*df7#Z8iQaEOI;< zNB#%T*ptCqS&ta4Pvx=W-2ZG}E$e@L!DD$ohR5>!Ds)vv^Jw3WzPHX8dqm5J`uRpZ zahs(N8|2m}w@0OHslEMf`x=ZrVmuz3($^(lE`2`1bN=AGkIx{t8KrVNA3V*=SMX)^ zWwwW&_J6(zkL9?+V>3zhJD$RL@T9-5QOv&f+KG$xdc$Ms6CO*Swm+(A2h@meKI@yx zZr8E7?hkf{jOTYLEWg9Um-}O&eR2O@qj<kl3~L2mKb zoKiJc?lMw;|H-$u(@FJKzEk@@KSF*WgU=<74Bjzj8e>jQF~%I9sfxr+t;eT=j3XI* zZgFJrDU-G{t&e}0lf!I$=Z!seWEZu2NpVw1aG~ zeB#L9>xHE^`qew;+t~Doz3;EDdi?RMPcnGcCz;W~lZ>6iX8JP6im+R~TA=+$={KHS ze%F(`Hsg}9Z+}T+VvOkO&ag1OepsJ)a;#6FX0!JCI^GU7junaJDW55>o-b@P*JFPZ zi%*gwny+`#Jm!Jzzk4ETPKn~bx*2>yH&dhPB;V0I)y$Qp>jt*?ut9r{E#{W>!?DHO zvVM|3TWOYTRXr?T)_BhTn7`=$!6oqhzsJ#+rVH+BYw;?hhWzKH#zJL)EXhjQyLY8C%n|QSECd)gBirL&O;2 z`29O$RJZ3pVHY2dH4A@wU$W5VJ5hWtH-qQ(7?~!|3;DbQyPK1z?+-g%>|_+*P?{%$ zuPv60+2^TeQm55M%Vs@Qk6byTc=}HUPyflhPv6iu;hSpgi8)<`e)V6!7>92!28ZXp z{p9DS7@<3|sF)qrs{;)?nQ~X;@rA=PrZ_xfnxkncb6o0ZYW?!*>hIP@6pwA@dMwXB z>aWgV9>{h=u5CD16}=Tldo0Ha9?P+UKRb4gIj7trd(Ya1s__#4^`LQhp2y(uMWw1< zZ(?3sTgRR^vZLyCr?2r}|8aPZcO0JMJ<;UVM$Yb)>=KKv*;5`*i{i1o7lp?blS)^1 zs!^+5cf0AtulC|>{_n5GvYzo+)-(PauNTftx9bc}qz<0FsN2WkE4vO~Tq;$9V}>*G zklmqLDV3vcQawI6JjVeJ&vB5b;(4QY%lLNt2E)~bKR@d84<1`ZGI(qWsdAsPnyF)s zw?l_rPzRPz*8RZ+%l+hVJoh8l=-_#?K*t4k(oc1qsVS30@s;F$GWb9#GUJ*bFj`d} zq~139Tjl(`NB1B5P4*d&^+@64RaE9bS7WOOS&yi;m5OTr-L+&4*OJ-Pv4d52@lzH5 zczfsjl{`G9id>(p2j;k^`~&NOIWwgeTpnPKO1DzATfD=5=<$DE^qAzx;4N`v@JlD8 zG?RU7s?2sH>@16S>i*z42FTz!2FTRwciEUUGmT17H=g_*QV;E0iX-zuZuz|~8Lw2E zw)2h7YPTJ;*8~-7^hZ6O9b8YYmFvm12rO*0ET2)mNSa&Kir-JSkEcIu15bb0#`Mc? zJway+sy6}YRMJuY&s%c5Qn}s9-CPE+v2cfSa(=5|Gau{WV@KxcsJyQnvmg%E&m)jUtQ$~)&x8QBgVTSiL0&(QeM_Zi+1&pvp? z|02ac1c^VAw4QOJQzv_MimEDipM`q9uqLRgzexsmyr9=Y>}D%MST_HmoutdF8}Yx@s*{>;5oOE zDK%r6c{fuh6|vy4+Iet;ZlCiro*d_KJh|DYVwq_c-M5o0Y^+{Y%Bww&^A9;3=O1!s zqa83_4Owh2jGsY$TIK(J5T5-dgJ*xqbW51d+$yghvz8pGuFm3|L z(xH(xG~%Y(HN@-WFO*F`UW^n=246)S8T^Fq8LU`eHmM|sV>>0|e%JepXFZd_v!2P+ zn;dS=Dqc@zueVw)D(qix@5SQDRdqeNPURX~Pttr;mo5c4d!BoAfAAcSWbhojY@=X} z?$+oQah*bEt2#qJ`oI71hO~<(SIzb0I(!&o{vMD*&3@8c?Mc#9_aDzWf()K>3fq{q zti3s-#wWY`1;c z4>A5qv(ZjgsJzPE!T)|&MlodYKZ_%SZ?R^)aqZ0sduXZbD(^-A=SlEm#FN2ym;WcT zIb~mC-rpzeDvQ&r;3=te|AS;-@#MNl;mJK8lHd4aPZHHWkz+4z-zJL3E|mV@u{EW( zSH0kQQ{aT%A?{qeagU6CFKx38{IBB4;CCOs;JN>xu$tLAj$L#9H0>En+Gl?mOWJ3D z3ufDH+-Y>gUc5SkIyoY__H)Dq$u?-emN>RS`!7FMGe%|auRLjD*#l#ph~mFUf5_l# zyBW``>z<0aYN$QQkJ%~jt4#ymjTNnJr zIFb3NJ!eTQHFmrI_bK?e;>qCayP52ELNi{&lXmwN$<)r<{`H2#Gsm=zXO71u+i86G z>zJLjbZT`tebn`gXZ&$^#=q~){>J*L@9q3;x7zn&m(%^HT`cPXk7YeXr0HO+HD23K zwym|tUHAXK2}}Fz2bT8PkC^e!7_oQ%YY$to%~UaD2m56miF=37Ew2Juwd7lJXZM!1zG^`o_5R}Px*2>cHxs+tcxz_MQcj*u zk8LkCb;NYD{^)ehk$(g23l|4#kHfR(aCp{SlDHSl_~WWM+X@x7d)cd_cx*<=;jta0 z23AXEEsi(Nnb=3Zw;+Z8`+{(IjsqN?_q&ACkh^xN(Ltq<0tXv0269v7KB$s$CvSBvgY?)>ld@s7jimcrpXOUDH~E!rszj-2>hLZ9<0hN9 zuW}--x69-8YSzwis$_?w+H<_Hrj^`sys)Mh$ZeO}1B|W!D~u=eWV) zISw){+-a8DJWx#?liBH>dw&#}dlGsVx0#@p8L!p175>LNJa&cavA@gO=z2MZH{03H>hrCws`8_*x<5%Yp!H>4jiy_`>cD~Cd0a? zZ8EW|%J)vT4^+**bWjfqH_*PII5PM?;>h5y%zI(Qi4j}98NWsqd@*0o7xRQC$2{T5 z1ujbDE%+vzy7=UZ`uC0h??JkWC4=uPjtu@plLX$$q19EVx|da_Ukd2{;8~w!@T^ZV z-Z{6dgy$Nn=R*#tF}>Sr-$xvtTtC;7%TQfeo%^G=%h;aS8S-pl6p#H)a(HZisWcb2TC=zPX`CIG)k#yq|NA=}KC2WCKS1hL zlB`zC{FltQ-Qzn&OV!iu`Xph4ua~*z=RLe|T z%?39sTHmhZb-rx&Uq1zp{U+l>yV$`}Mz@>h?!|A+r`dBk5iNS^_D4$FSTeu5mdqcI z7npg&o|xm#rf@3$-ZqNAA=@B>AL3?GUS4Bf4BKOF9hKCn(a?YW^jc!^Y-h6+o?NEI z+04l|3t3;z*K!_Y+MwJ2Q;rwrmi04K9COS1DVgH2HMDF^wPns9>Z@5@uLm4!nfF0( ztmR=+3qGv1(q(^RKk8FKeY<*AuV>mPgQtBm_}>yQvtISQ9=Q5WY4vQyQ(H(hsuB?7*q!9s7maTrZIxPx?a!Pk+eZ z<$7x7kFKYdO*|R=SaD?Vay>QcN7qxsGd^VSj1QRyt14Lw{y1mGZhJwUPFz#>=aN`F zxpA&1x4G^F>wbkb=77JNI~RI-qIlK=89eKOZKOXRVHF*c!pgI+p!4TG|MAPQh-W(- zi+FOS^6#*G`{tRIhE#FZXDq1O&nlh_o@0v)e%92%)`Z{UTF#LU&Z%fqqIhf{nF~C2 zyi}u$O|4p4o|vWE*Kw>XJ+x;(v1Hg!ESU)d`&kncKQ@1P-p9H1q<0kGmOe=aKf%qU zs$f`G?TO}DM>ytG! zQ5@@&HB@$IPjkeE3%*8^GC9G~j{D^9$n}ZGev<#kV<$<;^&gENUH_3|1xtow1xrS* zCusiYdV=`u(tk4e$!M`O{%jmD!HNu0f% z8|d>PzJ_=*_}Olzcf@!z)`enWQ+qdcV*TR(d=Zx81&`%;VHqs4j50l{;Bb! z>!0Qq$38QzbH%aGjBC8BjScV8Eb4rmaVp`L5vH)n@jNZ=ozzpQdE(|vEs&Dy9h*P8 z-Z3t^gvsF+N|BT69UDKo-th<74wlR!*OHOz9h*P8-ZA|qgQwqQ@N&Il^GDY^#z|BV?>O*B*E_}*mHyzdyne&W^^WZyUGEq_z|G)!JxNBc zckKJo^^WlzyJYYjyJX~g$M%n|cZ@A2_v5jdm740!IR@$f+r`}JNEqO zddK*qvae+D8RV9XT<&eOWj*TB(@3^_^$t`s~j{|bOWAjJXJH}&qoWWyx zoRRAtn?JhVaS<6i)(&eZjudN$_0YLRV>?5;6?TqP6YY2j8)Vd;k4#{d{<|I5K$IRAdJK%rn90II+0h*Eh|sy2t7tw znc9g88m;>S~NU)5@;c__#fNqW|+_ID8hdIQ$Cv zxu$2fy*B4iwY+&_-=MX3^#0<;p;80nvvnK(nx;Buz8>bA^;LV;JsCXfo^9X* zbJr+YYTZXwxt-w~+pnp9Ji=oSNd}KyDK)B?{H^ori>mTlpQlCoQrdIelEHJ_lEFLj znZ4oVcPZ6#f@jOOOi?`ckvKedmDHSb>CKR3m(s7wxkABhni^tZM3?92$%4oR4cyT`1ZdtakZ*k%cdcIiCWbmwKGWf?or8Vc( zer%@RklZd%_-9A%j(mKSyGE++sV7F>3$__LIF`L7Lk{ipi6?^>7P$?4EqlG^ z)SXcCVem;`(48bvJhr6kv1_F^Y^vsYKYE>+dtU*&Zf^heYsQFU8~AnN0iL$kOI18I(jI%Sn>q6AG+#uk^V+li$>8O`$PE7N zszhpE-BM=1Gv|D9tFDaVv2`Vb$8L~H6S3Xi`R0MK=K4Zk(1>8|S^I1Q&)O%0?;f+8 z-D~$-`*ySazLggmnR0hz|M6Ik0X&vtATVgPeel9Mdz{MZD_T8`_NBzof3~qv9Q({R za-Cac^!!}Mm^$)_Jt^XfKL0S5cydA`J-LVz9gNkpoxnm(&e&JF`#(RA$Ci>t@z_mL z`zzSS@@yA(XGot_4g5UHCrw87AIEwihhxo=tCDbr=fJ}pcAtTX)uR+0_4>pQl5+|f z{AM?E?BpKL(NW!OU%qlG_t*8>j7`%;wB^M%9n zy#qM>4yo(C8XEQcKJZM-UfFl zXFEJs#gl7#>!z_Q{Tt8x)&=Z!T{}nd>1BV(;KQWIOlvvH+`M9)@$2ascK;+9_3_1X zRXp3_c`csY>|#62|6}Veprcm$K91wA#i6*nc9Se#T#LKAySo;*i(K5@t(l~_+r{18 z;Q|-;_y6r1vQN+HbIzP_pMHLm$w<20?xdIV7S+a%IH*!q-|N<2S1g{K>3DMMn{L+& zyy_~?--}|+4u0o)<^vf#^MMS0Ue5si+3XSK=ZqUvYIB-LNZ9&x&>@==X02q`tev^)8H4^sH>M9 ze@Hcd-p3lVF-|zo{ejm(cin+|(@e|LyWbW8fChjkw zrF@h`%hGO$x#RCKZvC{Ujuft!_Jm5|dg~4-r`I`pOO)^dzN!>5_`Ood_@8gAujp>8hGnx@-x7v@y^UuK zaCpYxVbs?8$ZoN%<%_FWWAD~-+k>qp1&`e)1^>GEF)e4cSz6bs<*WhCQn>xeIAO^! zPFOOx3MSM?x4)rPn>@#wy`s76%gEQr;P*=*gFjHIxn6jAuwJv^9ZT(t?0$b?Z1Ln6 zTRgcKPe*Cl7yi^pDns=!;#C!!zfo8_%3ewXK|9DyXkkC)RA0y|nNBc^p2g#^KZ@L29C)ITC`Wvx)TgC4W;JhOfA!r?s66C#5@>SW#& zY@^k_^2)O%`YiKUjs~u0Y?(Wqr7*V4onuno@9eK<3yi5Bu6M^u(sP>IpNuUTJY!1+ zKdIDyUAweakNtNRJF=he@9E&Nt>lQu9+xs?Ol`f`&Kuh9iOZ~G9oo9}dtZ?@}MkJL?u^@t@C zv%)F8^N}dZf6H-eQRV(cq#0rNx76}AJh_un@Z{!wI;HzXnyuz!zHcp=KUw=@Tm?p(8KX>cJ?-HB*+Q;?b_|y?Ov?IuAN0|$uBmpvI#|Pd z$8+0*$8z0xEZ4ENgQXv6yi=v_*3HU#>8X3Y*b?$}Ja(uQ{P|mTjNpY6RqCOAt=A0; zxgJY@;<5B6{&n20#-;)_t@H^eSYr$NK7Whv%bbu5zNZv2k8VvjR>lueHSfl@mrcy# z)*m*1#FAnDV9CUJ+1dE7S4yj9kylpd;yK;x<@e)c@I}Ru!N=^j)41EHo@dE_=d=5K@9GTB}ax*)mG1@jcp_2V*Vn;nT&}~oH{1;nG<`W)UOiF4kl@a$+ZoPL< zPJ36rgKqtSV#(mSzmdTg%acR*zYtr?yE%nD=$-HVa6Fd%ICyMvDfxFs)>q!CZk~Rd z*dA6flaeoo&1XEeyz~(sds<4t9z|6D9tX_16((D?uC#SuPvY?G`N81}OUd@MhMJyk zy6V=Zk9B_F3HN&OSUMPwJtL*_?RDnK4u{N*)BCHLl@h!DwX_RM=B#7MY+D<}+*rsk zQzu`oP8Tfhwg-=GDH%LAy_9VGmzXae-8ARTt7{#xFNX8j>XO4_&q--9H@{{y?CU8# z@u9jE$M<}Xy|PxYWYRg7Ou5#xwWF!>Xj6=vs!JQ+^9uN0L7!$7!}kjMl>7Rb1M33% z7b>qj%M)37&P{Qz7fT=EvGfssX}uIXPd7}byiamjO$SwVJr2*B$KhG?l>#bjwK9D7 zJWN=}{CuIMl4`@o7l*IsI6VD-+pB3a{WE$lOvz)O-#FjBKj5+4PpB8m{lsisTs!(b zm1o3^qGtQ?zUPx*b4kHt&r8Ag&Y44A6^BgNO_zO0ldK^BPoRGTl7p0UAOs-um zd?{pUuL-6;DSdEwu~Y!KSljC5vqIFIGopLpzLDals6_r(19 z%B;O_k2$AhNq4-k(c~O>EOQ9&H#*d_slk5pz|UHtJJj*mYmUF}|H7QT;77ow zE0I;y;=b=M-=!^ha@QSCZdIO9o+kcLwO8d9srH|IuYYI{89ePFgU_3Pnz_8#2bE)L z8Z&gg@AHTFq;jof@EM&<_8-%YC4|jq`jhcu9?_qS7xQBOnwZ*( z=}pb8sj8dZ*Kc;mi@v1&Nu|)2T<;AjU%HM`2bNtm4;Q#<7V2EU?N2as;9FM&zWuSkMr$*=0<~)5#NW+Z2{exKg29Kq0@X@PI^|WZU zE2QJtL}uR;@!bBwat=I}HsPa88|3+?^5~F>X)}d1+vj_JCccHVpA4RRD49F)lWT_? z6gQ9lh-qGoJjboSp5w`Jf54MVlOcn4G-Gf`rh&1{WnZ=hNR?sZ%j;BL|L~sCc5%G^ z*(xPNfu>rGR!=-%GoLW4)u^lfcpRQ}kHfR>{c~s6CY`$!@O`;umR!}z{9liK#m z{w}4Zj~ZYeO>o|P^L|J;&wL|;XTFii@O`9Ke`{Yg^T`YqC*J{g{^0QErG6a#wv=^W z3Ti8wWl@ou6;PQf`kp_7W&Y!_%zwOHWT?4#mZkbn3kYd2$G1Nehfg2{hrc5war5G4 z`Htt+*QT{X_TBJ(e)58NGWfgV$lx;#&Z~VHn^0wo(N8s5)4**%9(z`fcB0dhFsv%re>aZ&qDrclE{kmZ^4lN^~uGP!T;-IN*0{!d6MI^8T259WzP0< z+rzyOONM(P^^=)0+|LvHSyuD;vB_%By3FqU!D9`ZhlMZkzLk(FQd zw{Ck5$#syyzZ6FXuie?`X(zAW6672$&y0BHwg=C>nGBx$Ihmo&HhV55TBu6Zov7{( z{o(p7@-;lU`|@u*xzfp>csA_*t|Gl0pzE6%r%r`Q4<{OzKpO0!y&#qU;dRJ9z zd-%S8<#ar`2U76lf;J}6=6Ob`&Odsa$-drn+rwO=esat;Jh=ylpL_Cm8K+WKDQ(t0 z^f;WyzLNIfu@9wWfBAIhk74J`Lf4;~v$tmr=dsLZJeK+Vv~e7**U=-U|A8#(XGk*F zV=s%vV;?!*dti^}($nQ3-QqkmEB9CtAWaUNZ&>Cs9?M*&{x=K%@$C3@ION{qgv!Wq zD4f6IWbluj%-dP-Ji~973TWlMZN8r!&%GaFSu>mi%bMXFJcFG* z;XLpElfiFsGArKy*6Lo)p|$S3S*7z|r~b5`>rEy9!F6!GPo&VUt+UT~>bAQavU|cq z^H7H$Zu{}{|1mk@!}?$HGm96}BF#OovbO(MW%}y-dyY7K7AX(K;h7I>?7krxP6R7+ z{U-DFLErB?@Yu|b$G(tUkA0gxU6$Tg#V_|%yYBhkAI2V%vA|=Q%lPecHhFSPzo!Z} z>#kzO_W8zQ^T;_`$?>ANr;@oW$KMUpXhHL0>b3VowT6!My`P4|^DJ{5{+X1A`#O2< z-Yo3dR=1M6cj2_#|2TXcu{iv5DNDXp*Ycj(==q(ln3}#XuiO84>?Jwku`i@FX*k|9 zZfO-y=AD0=wH6(6>t{Y-$uPcHGHI8W(k?%q?rBgkzS?!i_xw*hV@n3l*pe9(^S-A+ z(SHMed_8MsyXO0S9F{iWv9t*veD0QK)X;YU$tyoH<82x1wg=DrA%kcBkO}E^z>{j` z!hjv|@0k7LmvTK0e@2ct{7WfkbItTzj5i{nXZdLATeE_$$KjcGI6U(%O6Wq*%XaTW z@@Tn8UvB?k-$*X3KjjOrC08<}v?t-V7y&J(zBTg&y$<=~v8^PFr(V_oeps?T zo&@!0csAvZtL9el%{MG#jK?y@_$&5&&(E|QJ$st?srPNNhnxRg10GA8@Qv4x@zhS1 zI$+Z4>*no(@7?zBJZA21%cV_7fJ zo+r?2_9&zMC|6o}(3S*WbpBV z;^;|AzSfo{d!yogZsN8F&pn6?o_i3Pq4l?D#tkRvy4tB!+CzU$u;2TNZ}eH?>?bbTbf&oRqCLcy~Ou^2o7Jxarhllg8J>& z=AXUn$-d~CnYvshw}0q+GWab{1|QnDv^INW3av)x>1O*n#^yje$IjY zNB*00Y)zd~S2^BkE%M~BGYs*)pO3HZWbpqvnd`Tod*=TN(EV>Gu;1wi-1@Qk9gjUN z|K=R6GL_f1-U~ImUwUKZNEF+>Kj0fmA%lPKWa{PoHzcUYPEY?!yREs6m$>7FjqP~s z8TmKo@E?D3=cMfq&Fs0VT2-IDaPL?6tWwC}KRB5)(LQ>%jTxdmOLeRJ8{hNIu-ByT z@z}F+WGeMv@HLk7g^(NUIxK<2{Ys_OPz7 zWLQ_!Po{l|hT5!W|re3@5oba*}DwZrTf1737+*! z2G9B>bM#0?efX@4+Qf~itO^S%yY)vANBilg&*Er5{dBKRW3AGJF=qRy-&KQ>Bi;V# zEv~lI&u5xviu)oZSjzLEN^hTfg8nsYE4%6_-{-He86<!(Y2%ks{8T?Ly>hx4pSGI-V`nSdf$_0THQb^UHSyJK75=XtnZJm=wh@#GS8&Y>smT18KNDzn|X z!VR}S@vKQQc-ADDz8^+v2|wJ_%C*RE`&|!qeO0L!Pwp?rlN(TSuvS}D&^M3HYDfEY zIh5vb+v0lW4W1nH22bwIhxl5WT^H4X42!Ksb<*fU z!o~}a%_T=Xc9xXhX(!9`By(5?tijg)RpVXH{3L^Cev-jAx^Yl@(6Fl+`*JGl_s6vE z{KRAV+&3OOUCM;vX|?R>8hbKqtY;Nms=MvSWBL3!9y?b`jcDohmCd4A?LUpNMw->! z_OQOl;Qtm!2H$Q(MSW%C;E-&ivsku~&y+8RT`y}3PmZ;PCl_5lZm83}z4xzrR(le)y{DNK#p-<^t=s;AVoS-n=E?Wdb5hPqxgq7ily=s&L36b> zp(nJfX*h-SYW4}uMi&{O`ZcQ4Zr#+unJxTt+oj+g2aSr@9ab)mA(&$?6t18vE?0){VpZOhu7+AnI`&<#~<{TF?^r5Y$w;rIq*NkaSr^-nNzJX|Lio^ zKe?@aB)9{W>DxkEdxLr3DO_6aWP#;R4W*Tj;+{}M+AZ(Yl6T^KjV z%v7nOo?~Mk*N+fK2LD?e8T`>T3*@=~hs}{+K50`Tj}GUfIs#3k*{SF)>qCEMJ(;7UBS_cSiNGsP_c4+()#@L?U%>*moOQ8 zR3{Uy-9FXfKg}w;$k3BrUE`2FB=}*qlJl!fYiW%Gb`%x#oS!l;_zK@f^M{_cZ z#uc;b`=3{>?v&Ndn5A5g{UB}O99ZT9=lFU)g*B-~BeU4qPI|cqzufhX@9AXl(VfhM z#?7oB3CEhPk5AOUjL+%zXKBZhxhdC9{bY7Uon)?XsDy;gXFRs2j2Crd zW6H6{p>6?nSKsuE-=AH}mZzNSvD+Pw<-Jqzu7=CY+Z`KfGwM`|}+h z%Xs0jj90__GxedxN0@1XZ)o*8X|B&Fo(%qlSTgvW=_>2RL#C@dy-jW1p|hHNIjsNj zSmqHP%RHKTx}N@TiB;-s*&EuDNN-)=PYfA6?{kyEA77qO&lPfBHJn#Zn|#Lieit6w z-|<-1L9Q2(^xBzzsHsb*X(coH_Agf!M+X0|961O6>70#Pnz13ObME-sizvS558$z^ zV?361yg)Cg{qFWyO|Dj78&k5RyT0;?C4+zKWbn<$#nKYRU8e#%3=YWt+4ue}9y?Hu zcx)^wHO%;0p7~dlcSHPuAq#!KUzjF_4E{g)HyQl>nMJkYZU0i^+K*L93cqvv6OZjG za{`ZzEhX9UrdqcO9n_TDMbyU;yImhe92xuvIg-Jfdu?r5#$s}GlMP)zG)O^sWg(q8+=WhL2?#*~C_hx*{s=?M_|1oOJ&{$f7@zLG!!qfj` z@bo{Kp)dWd81q9^V4+@G=+$hle<{_?lCqYJxc*Y&Nap;4AY(w26vl=VL)X2S|;zSXoZY{y$afC2J8vvv6&r@jV~oi^Z$(AOCIX;J%RSKCWBm` zOZtU#;1h`B9Qc{Db{X|M)YK2uT4GI$`P;q!Y!-_r$7>%vx#EYXc()e#Y89Ad*iT!1 zar+aG-6lsome(|en)LKG>2uv0b*-v!W%|6?DE#bXnT#p`uUS_OIZ7^n|6(xE_a3Aq9u`lTxYIzedg-rrmvh zc_Z{fV(*{&arljL9vq(6D97Wb_Vy|`$<95vyYYF-CAWS&wwhck9-BmtFTR!cW5WPb!|w@POprN|{>P zFMgHQlYU<3wugSllcV49}Bb!Pw$C4`YibmwU@zZ#^@QwLSiN>-uMT)h%DA;4_IQgHP^cCT1z-{W-Fe zDswKm6)!Zc>#<~*pI9=?&uJA`7=G8r=pVWjv--C1{k)9Fwsbr;g_KuQjvKMsBrx`V z%WLh(^q2joJ**Wh8P*Dx%!@JWjNMIA8)cWRuufl?@A^{G7CgC>jwcuG*c@Y2{G3MU zlSx+4#?|3Gmiq)A%eqg$evdKvSRUhOvBg%>c$-|mP8{dJrxHg7pK#j_BiY^kMwauV ztOD1x&_C_xzC#AjeTNKw$C%hgv)}0qzm1EmCCz=$b6|a?k#X2Bh4s}=#)@^*vCdTE z_`>>ji5^|`FCRA;f9l6&lENCmb&$dus664cv14-`yUwK+`l61jT#v)AmV(3cedFN7 zFGklqA=Y2Ta_A+SzI4|+9?Sg4W10W^V=Jek%~{KavO zv{HhKwe}VZ@Pg?PZ?v`$xZI{(snX<+D-;P?bv7I+@>1#*Hwd!5^WZQ^Q>Jmc-AhN^70ss z0Yziky_zL7hGp?R?-z$>J>u}J;izvP7(afdR291}(LZHAr~b?bd^ssxFFw5#uD4#N z0^Vck)7eeOoHwGi4|Lm;UM%Z{Ih{cq>x(%Z6y=oh-}++4#|BBQz;V9k?ciC%Wbmwc zGK-hoHv`6tw`+)W~W**b|W6Z4aLQB!j0v$?S;K);qk}GQD_{P~-Q(9fi)*Czw%-`jzIV>wJ0f~w<4=F$u>o?#W3x!f z<*DRdmOr+wl`rI-QP%goKGq8vJnMxFe(e>*8#!gP(93#N@3}~o-1+}R92tC8ab)oI zC$=$SW$a~#){N}!5^Ja19y~U)G!T!?CgtAqsYbt(%WZ2>Iq$v?uU${uv0)j9%xLi_lONsnrv$09*?A^XUjbY`z9nRmBy2;@4 zIGOej#~Eq-J9u{mf7dTvz3%!Tad^&?*YV^6@(nVw-%8~TUi8_xI(KF`pI63<3_hQe z8M(HT5vzE5?|{c&j0wSWT|b<9#dDtgjwkoCP#vS=s7pq*Vzsg6?Fm-!ZQ{-N$o?&sT&oZOk45-)(%-n0+Md5$0j9ukfrd&Vgrr zagHI2A{ki|Pp}WwEs^RmYPn?09lr^B*;)W=R#gDsdw3ll*Z)EyV&;HSFt`Stw_xb_P_jfXQ zzQ1#h$5{>;AHL+aQwEPTO79!t_Rno`cya-bCs()rKx5MSTh_%^8I4i>vbvtv|9En| z{-=I&#qYl`;-)TZ-9MK}oAth)dq0mWjtt%-jtqX!lOIO%(KD^m1vIU3me6qivXjAU zPNrL#UB&Q} zE)1M*q_{oCs+h=QZ0@)%oX0W_cr5+8q)&+PeB2Q$O2JA-(9hUzd&Y=8EQR|?TPeX( zxS!N7|3u%?qL|m~P2^p1Wrurzz;bWEW4SlrU(bkXj5_(zh_|DMcf$Gp;rvP`gCFN) z>?ZY%%O_qLuS*Acr;qF6dMx(_&Vl9Lz&R$oN@09y|4SPXxv#fuRo~D1_(@I%KilY2i z=+&|>wYt~7U>wMJ+MPc*JpaStCre4vGC?RNxvFR3*S?%CrvQ64D{_6z+U1aZ><%8AWt;MYeAN}3;&+*t@j>ndik}KP16zfat{2+4Ev48iC3HPJ~XrM`W15f6OX+lM?AKal<{fr7=9bh zYlSZ4wtp-bZTv2$R4-9v+L71o*X}0Wz2H)1nlv|w1h*sybb;TTGFIZR7ZBIwJ@EYPf$nlU2#6c-# zq=K|>;{}|zB3b(`eK*_3@O^)5ByO|x%@-+U#g&s%Udqg3v9%F(QtUij;gTvDCyzV6 z&BT+zR}e=A|KZ5^fK&h03RySooRW`ayT6aXW4AaSTTx2LoZA6KE+zIPKDJs-Npje& zA4}WuSlW({cd~(}TI^{mNp$&DOYtl2{K2=8J|TmzW~oeVxrwEsWH1J7d5fK~g<^p(z-NBok9 z^ZZVM48E$9c^D^w7L+Ep`u12?@86AeJq|xeE{MAE+2wdX-b5`hYXeoc|KBRsx|OcS z;Xg~k;j2lxzi*~iDtRF_@UKwy_{@lK9y?recx+ZVPCsvI0i%`&{MYuR8c<`kJAbfa z#Nx5l9sfD-i|1YctlGK0|EW=XS1b8)SpVbj!BVIf&u6FKhcwcxo0YUuUD{d!-*34d zhrc0t9G*QGzxUNJ=U!Oq`7h+P`trv2d>Gop^)e2$hwG(ZXLL)U9p9c-y?fnK1%K(` zUN3dCW~iUKS!2}yWAGyLed~VOs+FbH^=3ES_TX8MWbmvSp=e?)?x;hI<5-4EKl&kD_QFLM{e;PotDy@(tno zpKHZqxmNt0)xlb>MYqfbQ75TXc~iO9i+v>5ipMgS@zd&b)P6@=rmkqqROKB%U5~@F zCUJPyhTud2FEM@L_G299Yn3{0 zw<@fy;Q9_+ulWDO*A-V!N_{Ez-o2jd&7)5^Ut1;>)ppHnf77#2kIt6{nSl{HdViV z&a-)SOnKgs;W^*GX*i!>+D-=F)X9_#t)a&ry+_Y=_#aurY3x7s7Z!`>JWN77xnr?o z=;umS)axXAr_Z|LyIwptP}+mX>T*2SHK{(bu0y(sSW;_&nn4o^Q#NUZ7i zmKN0SR1enYuJ`p19{bku*ea4cUoySEVoiG8Gk%obCr2;0{s704sV)vnCZ0V*i{EO5 zzOm1JJz2qn;XIZ(gvT<6^2XVqU0gp&ODNAtZ8PVf+n=~1;yDlQjFa;wTB5eR@Y6r% zuBxXR(AupZONM!hCBwWMdMUda(I%~4CQEG3fu_FKhj?ruv3TqbIp*&WU3H&VSqrVw z)Lft1_xbSl;u)`E(x=6w{frmm5cx@E?byii+T4?Q^#ZRCyY25Fo=h7l&BT)7#oGKF zMLn0hwYSbcZ|8ZH)%W)}G^x9#)J?9r_!d&g{avuMCrav=R)#Ncv@ZpFFqC2Q6Nl#< zI6UV_mb#c8*td)I^LI^M)xGF?Y$v&1Jhr9d6Kvh4*V`J$%3eE-k*dUO*JHU}JeKPX zyN2cS^;KKjhP10aPCpbiC0!8K9(*qPkLwWI%E^4aVj5b>HQLf;t*mjyU%CB*!?Rwf z8_ycc9RHTyE>=3DY=$OU4xdYoID8u^GoqyNw60vo$g@LfKTd27*B&ex+Jhxi zWZFSpdvZ(P7Bhq8-_LM;cCJ@E*U{GTHS)nU@zt3Vmkijz_$l$Bp z+^9!RI^IgKFt1VOl<)5&H*tK}oO3+6OT}eBUCetdj0@nrD(oy@4m z@jO?*>`)aB{HN8d=zIPcwv^+s9i(o~5z~&MEerIs#xEJAx8Cgg{4Mq3=_4GTKDs}? zmbPnTe5?O~A^O>%F>d>@1ssp<==l6;_nJeSCbHvvIj>f<=*=x4Y`st~o-w0dJYyX9 z$0EIPrpES!#_6rNHEh>onLl_e^9`@}oo1z4J;rWVW~m){?Pb^J5Qit%$?@doWV1aT z7G$wIovChnmW^>e?I(k${bcYr24>P}f49(5Dr1zsuBSgc%G@DGfAahha+5zC^HklG z!>ZVNy51qmBDa6A)Q`tfKR*3m$J7^3GW%TN3Tn{NA#VNnJkowLcz%yc=4_rHDs4bA zd(@f^s?iLe$8x=REd7IT-hGC3=2cBtPH#`S`3(2EW?L)Lr+l^<#Z?JFY&} zo?FHD{x+x|1Y{BD1(lSw5mj*~fC z&CeLJD2MT8!WwJTf@Q9!Zakl1qHa8&VH#I{t)6h$Dg92f)7G~azTb!9v9t$|r9IPU zyx09+#V`&YiE2L%8tvAPEhZL^9q9NIc^c_oZ`IIqq*!mAS$EF*(|#=1jK^}#)Zej4 zLjBj+9{Sl5i>wvPUWW5m#o;GQp>F&}Ir+lO zSG6jB$&B3bqS#;GPIcRl$8MD)9@|ZhLGcpm&9W3Wc4x?J&rH10_1L=7M|dp1m&WIb zIYV1ewVQ5UYiETHe(bg%+g}VG+g&XF`uP1?)dDZ{d-X?HcMdmo>&IsiM+V=@$wXgz z&10SzZj}G~ne{&Co$Ik#rQoqWq;AepKWRhld8}o|+GfhCpD#t|pZ>?!l5>#3w{|k2 z$)9SSFTFEzWlm_POw-!+Sbmp?$L5y0IY+TfP4!8GbnmN-v8}1gHiq*brH{zq+c=q` z7gy{1x-|3p+ZC*mxzD*C%kL8L*ql-~=Xl+9uih3&tatsYKx6ueudc@iiQydBykhZo*=hQh5S zJgo2CRPn9RYUgKTa{Hd){3y8wGWcFjX2PWO-dy%xBkk%3#;I8)U7ubYp7UgIJh`QN zs(7!}C}aeBDjR;aj=A$^spHA@c09S(zXQGV%DysU8#AqU$=kd23Z&0WboXt$lyyAylN~BykLw9-EK9{UCH%WGDW3e$@Gy@q|@M>SUD zpK7ccy4-41Ack8%bA}9_`vVz#*5JE(>|+y+HuVhqMT2OrXPx88vCi@2{0Dc{&%B>w z#A;vIE?6XCIM3Q8gJO+) z&aEHMX9vjOb2*vMB~}{?PY>`Odv?sa(C)eGONnECGS19><}>4brl{tv^d!Lhc|8 z0@u^;w4Dt7&h?VXKi1DMcCRsJw2{A;mm;0(ad@s7hv%B_M&D$_pBUhs^*h9herA0* zkEK0$EbXaT^B*JXyJFt?GqzblF}Az@rt}S#OdiLQxv=kyk!(h8@8*xI^erithx7C) z89aSN{Xfb-GFH!R;Vo8lqke1lMb~3F2lqED8SZZhj=nc0OiS;rS?jB@Apd;VrxYI~ z-$SE|A0Tdld?OhsN7*mqiDh@k7&OV4&PPIgTr^1BKx8Ai1tI_v6mc=9V$85 zZ>2}H-wKECA_a$UCq?#iX%X$`!egUJoAB6Sa+LjIDx&>jID94PQyhMg^r`GeQxWY) z!(-dX5sw`%N7?VDN3`FK8)+=@aixq9H&V(dDYAb-MYMkbkKG|hJa)7c*&m@I+8=?# z$CiS_kC7t#FH}VPFYwr8j>nFbBKtd3MEg5%_+!#XIDD`a**{`Mw0{J@UCzOI@Z+S= zt|_&?sIqfI)!0oVJyVUO?$0AQ{4J>;haWHH+KJujUY|MArq*WFioX3Xcr5*d$I?&T zjb0PV%OssU(SPLe96gv6BW^Z6Z}ahgP-JNWWR}uXuk=b_LP?ShNnG~ zrPO?#QI)*E(ex`9XeE5;d;S|9ds~ipEcb{w6{cGuNlTgw`;D+ZUY_9oeh^1{$l+)Y zIoZ#mmPN3i1)oON2pK&0I5M)IMT=-Z3l3jP`Ur>TJ}3KGw21bz;IZ^69!sCfeikjF z{VX_qcgf-K+!tj(iyqN_7Ce?UgU7OFWIu}@(S8;jzPa=%4$u8l_A}}c?PtVeSu=Pn zYex1nY7y;c#NpFPAK~!aM`b^wC!+m~cr5D?k7Yf|envf_{fs#L89Czc+!tj(qaM+I zMm)BJWboK2Qe;1)9?^crZ88VQ;HQcsgO~klRz&;PxIf^@aeu&*ll^N}MElq9*rw7) zc_R#IHzK9gr^+X@O~=^k&g)EW z{hHK$L;B{X6uwW)kn$JDvx)Vn16pWLu9nxVI~&xW`tjHvQa>Kc_n8TkhUs|^_tl~V zoYhvw^t~UB{m1dxnU0tJl6pk@C8-zB7*j8vF_!(3MnwB1i#wLgEXR_O{ik|F`%m%A z1?tB$7pPzMx9Sn?Z;c^+i6=MP@#JKGr4`ZsO6CHd9CLyC$;tjoE290CxQ5cF2wXFG(w!8h0!!w6)c;?XeG||l)#&zvlk0YvAQ^S3~0=rW(cvlyEA7E!=SgXH zww`rx@K|*)=H`%ipZB`$`6_+SIq>tvk-;B|mdTns{j*s-dIc+8Vc+v<@qGUxgXjAf znH!%qYgYb>o(tb5t9?(Cxb4A`VNGJmgnhrOm&o#u*V|Ki?pswhYiidIka}5PtQ%g7 zvA$S0|3%NQdl!$@-Zz+~H6QYi>%-=QWEeN*!vZOc+miz0JzIx2)RtzgXuY`Ud%gsH z!=8!9po*#s;a9m13*(d&ilVJq_Ld;TtO%{33B=@ZD!tP*?k=4EU9(rAn7L zGM5>4KS?F?lMH^bI5PNx@k%H?b#hOUHMh+jHJ7=bwvfTo7BcveTz`*GZ>$l^m z-!Jgw_m z`T8a(iCQ zQll3A^u#{5b!UergWdkY$CtK~!EbajMLrEzTYg>gZ1zMB>9nM_>v4F-nY!_e*^wbL z)W!zov`!C-dX6peJ#PeuXT9L?te4D72ddp4uX}Fle%g#X4c+>2c-n=-)2?YX#;9`t z26<8xNbEUX@TGe{q;JUJ=^HZmh08AoWb1WQ)$Msyz5JBl?N7#PlUT-!vDzes@v72& zuj;TNx;oP_t!j3>oF*h}e&RF8HIu<_b}}6*7O;Bmer%4|5J#2TzXn;K{W= zKHZ9*JF6%0i`07LC8gc#t?1NGZj0l|6-zh6>YVG9R&Jr6cBZ25?``3+%p*LOd9?BV zGVAH0i`vV*skD5t8o2X0NZLXMzf~L=eEnawthu|kX^+eqD*xVm;XJm1Tt6PWO-iQ7 zm953m=4q|^4_7~GrgS}az2mXWHGHnT$q3$mgING3(xB%GI(Aukx8D#Ut2Nz zr&g_K9~HG^W7l*4#FOLxi6=L@Rs!v4mh)P{mQy@0PZx1L>xB8woMUY<|HJ0#in7+> z-tEoz_GmS{+2a6VVe4yy{DZl`c$s3EJB;zOMl|Y(Vuv7MutPG#fj`H#>21bO36{KPcH2sgSW(y!Dsfo zSAOl5dtP4cq3#U!J%0=z$I0MrCo?HzgId_6wll=wx=QqFnkwXdtAb1X=lYM*FPww=_lV;h)ZeY> zcXP_N!e+zy3)G``lic=i5l05UR~#9<-{m$|nu>vH!Ske+Hp18cINC%GN1MpS8r#FV z-uHk?@hF)*$IJJ5Asjw|6dZn^l-8b_R^upd)q|k>s-RZF?H?@HipO%T_>=o4suE|L zs1G?xsS9d{d%ZY(Nx23be!rB#H)gATQ`)P_Z(FI9S$)s9!Qq)dI6U*G)J{t^3>o2h zlcPH!tk@kCmWkHMC=neX}M_$boqd*CnLm7g?}PrN?VN}Hr0txiv6aYbc|DpM zIwF&rKgm}=9{WR%c`S*WM&l!;iJ&$I-Cw7YW6Z!5gF2o%?@-|k;a`fSH{n%nor3P?s{31cr0rYzboYhb!C}+ z@69w<-Htxm^|S{|hW22|B+XpP%9CuBI<&5|HKdvE^Yb{?Bsm;wlHBy)nXDXLU#P{s zhpEU#io5F_%NoODS(EtNwZ^E`^P{T{!*-fYkJJd)9z1=7!_!9rH|MCFla`xnN_b42Nf(Z9ltEB^&6`^f#d@psDZuM(%|lq;L=AUU*yz_t4-Pe(L&-_#w+r zzfvPAeJ>(k4jV7}p1H$y)1S;8uG?=}a%+8xfdOMHls8ix_x*h+-uuClneSLK#j}^R zp01got*$;=EzBFk`cpq%$$yZ+pKvk*W;an)`oHkp{xn{7ThRm()*jxs;y=jEb3D26 zb?2+UdIfv(^ckXV|B4^Z^UGcS5By0dQ~j7%RUHytYZiHyXP4Q>^)w96dFDEv+=hlz zRF`ipw2%zd0;XT`y&n~JA<{==@TZ*2jhwdf^X5?(ch*r|Z~5jM?-fN7PmcGB@Z|25 zIidW!QIZU*tOR0x z!mL`oqWe@Nf8X=H`S~4BZn5LZ^&41B-THPb*Yo;{41SY1GWc0j z532ze7MVl)tO+s39&>%z2M@$D4$MvF1LF{qv$V>sm(a4v-}A~`!1wb49vfLQc)cCBt}O$xImJXAMd=S-X+)kU4l^v~c6gV35JH9?2B+ zpR78?h^wtG5E_y)$7pxF_y=vmV`&q9@qstyy`~90i*Jky86!Va2?^`}H1dy+vbIJ@ zd+JK2l9Y;4rY${SwCUI1&R2eb{qyZ^7Eg}f6XMBDDScS4S9rVCVt+5|dUN0N zyXr{2WbiG;k-=xk7R%ULsJR`fL@jmZq3`)Bcx+n9;IVurw?qCU#*mPHcH3Gb)S-{Z z-1cO2EEzuAj3slk!7iiDfVy^p_VMkly;p|w*j{oTJhq;cdv}f+_jB~NQ(ul@f7$4} zUfd!noCnuP3c2Wk^Nsa+?prT9JhP5u$m-UQ&ncD+zP^)5wtIrnBD%kwq+xZ-|9mgk zd&KEdyfPkVWt>*ZzgI}9>3>8mdS1+`T{V^6sP{-+stg-1Jhq7R4<36?j^kg2sQvkL zEB}eq_WEvvTwhEa8T@&1Wbn6I&a%#i#Ill}zHgPwrHAv_0LkF77o>a-yk@SUS;R{OV!!g;JNIXw1~l$eV$*^L&zRynr~ zvF2va>iQf~cYP^EBvV)1205~y#T##$`c^)z>Zrd_iSstq{`Aja`C3jXxuskde?`hw zDfYuCR>1|?jF&Oz=#vvpu>W`*zKXO5hi@X~_`U_!#`|mZi@Cgd?fh}Vd29v8W7|kc zzGsBqtMht2cCAikp2zXSd2DINWBE+>hMdn;V9{6lmaoZGo8;xgd2C)WvPh(u9pmcWZz}#{h4OQr;zjdjCjheA6GyMxv+ZWNN&Qj z5uVGP*e2!!G}b;xubd}z2o{VW`@QS!nFrGT?`(3O^$g! z|7{-AbLp4j+%#X7obGzY7fYtDI4qg!OX8WcSKd|c=Vr3vmdfkShbi(kJh|(RC)al4 zH5C}(XU#5N+uEABRXC3=C>cDqfs}H$Qit^T*2xU0eO#?OIKsXEQ$MzzQ$Mz$l=8bw z)lbG?z>{p&#BILcUoaQQ;F$}Y1AipPR8^qwL#kz!<_g&Qm7kmNFB1jUPZLOp6}&k@OPcM@v^^OMYO*jk1ZreJhrG5**5(f)dDU+GIc_P*3j{j$GaMYO*j&(G~-@MWEh z?5|f5?XSn-mpBgpK#>U+j}3IZ?5|f5?XSmPkp858>}$u%{(4VD`|D{B zeaiK6t&9QJEBotJMEmPmhsKcJd*w9W<>kVX$u)V zZ6Sk~{p>2D{p_?KPmcEE!{*)UU=`7RdF~5%a@-g2cj-Qs=)0=e*U3~72KK*xG>yM{?>c(TK z8{aMcX*+AQMRuy=bMzy(4A8oToi}wt`~3LQdXpM4-S%MjNCuC6 z>G)+)lZAGDeZs!ndye(<)AVpYo|D19ax$yiwXnOrRn~(R@vO =Pq{dlmJQdF@y- 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 z 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

uoEBDt?fK0c*R$EzHq_T1TTS|o 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

A18*Y?qi=%eb<`u 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


e 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

~)-7AQJ5zFwD2*I9 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

y>B~Z4wVYGA7Zg-{!7~f3Avr#4Q}H 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º7?BGy8>8@BlpCVv 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

PWS4Po{gD?rhXh1rg`g5s8VC(rhV!4`{N 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

Q&o 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 bx1DAfg=U4d;_x5!G%cP{FI3s{zD4<8??*F( diff --git a/bin/media/models/avatar.skeleton b/bin/media/models/avatar.skeleton deleted file mode 100644 index 3a68b9b1b31518c3044f619234aa9b690e5dea69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101048 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

N{KW|pV@jrcsU6}0XHsMo>syJtE^sD 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 From 1c0dc96d565b1bac4da81b0e6bc4567e6df3037b Mon Sep 17 00:00:00 2001 From: Stinkfist Date: Mon, 21 Jan 2013 12:52:52 +0200 Subject: [PATCH 06/13] Remove unnecessary CmpEntityById in ECEditorWindow.cpp as Entity's operator < already does this. --- src/Core/ECEditorModule/ECEditorWindow.cpp | 26 ++++++++++------------ 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/Core/ECEditorModule/ECEditorWindow.cpp b/src/Core/ECEditorModule/ECEditorWindow.cpp index 855636caf1..7ed7fe6122 100644 --- a/src/Core/ECEditorModule/ECEditorWindow.cpp +++ b/src/Core/ECEditorModule/ECEditorWindow.cpp @@ -39,7 +39,10 @@ #include "MemoryLeakCheck.h" -const QString cEcEditorHighlight("EcEditorHighlight"); +namespace +{ + +const char *cEcEditorHighlight = "EcEditorHighlight"; uint AddUniqueListItem(const EntityPtr &entity, QListWidget* list, const QString& name) { @@ -54,11 +57,7 @@ uint AddUniqueListItem(const EntityPtr &entity, QListWidget* list, const QString return list->count() - 1; } -/// Function that is used by std::sort algorithm to sort entities by their ids. -bool CmpEntityById(const EntityPtr &a, const EntityPtr &b) -{ - return a->Id() < b->Id(); -} +} // ~unnamed namespace ECEditorWindow::ECEditorWindow(Framework* fw, QWidget *parent) : QWidget(parent), @@ -630,8 +629,7 @@ void ECEditorWindow::RefreshPropertyBrowser() BoldEntityListItems(QSet()); QList entities = SelectedEntities(); - // If any of entities was not selected clear the browser window. - if (!entities.size()) + if (entities.empty()) // If any of entities was not selected clear the browser window. { ecBrowser->clear(); transformEditor->SetGizmoVisible(false); @@ -639,8 +637,8 @@ void ECEditorWindow::RefreshPropertyBrowser() } QList old_entities = ecBrowser->GetEntities(); - qStableSort(entities.begin(), entities.end(), CmpEntityById); - qStableSort(old_entities.begin(), old_entities.end(), CmpEntityById); + qStableSort(entities.begin(), entities.end()); + qStableSort(old_entities.begin(), old_entities.end()); // Check what entities need to get removed/added to browser. QList::iterator iter1 = old_entities.begin(), iter2 = entities.begin(); @@ -893,7 +891,7 @@ void ECEditorWindow::HighlightEntity(const EntityPtr &entity, bool highlight) // absolutely nothing if there is no mesh. Granted it listens when EC_Mesh is added, but if you // are going to add meshes you might as well reselect your entities to get a highlight. // Creating the EC_Highlight to the entity is a major time spender if we are talking of large amount of entities. - if (!entity->GetComponent(EC_Mesh::TypeNameStatic()).get()) + if (!entity->GetComponent()) return; // If component already has an EC_Highlight, that is not ours, do nothing, as the highlights would conflict @@ -998,7 +996,7 @@ void ECEditorWindow::AddComponentDialogFinished(int result) Scene *scene = framework->Scene()->MainCameraScene(); if (!scene) { - LogWarning("Fail to add new component to entity, since default world scene was null"); + LogWarning("Failed to add new component to entity, since main camera scene was null"); return; } @@ -1007,7 +1005,7 @@ void ECEditorWindow::AddComponentDialogFinished(int result) EntityPtr entity = scene->GetEntity(id); if (!entity) { - LogWarning("Fail to add new component to entity, since couldn't find a entity with ID:" + ::ToString(id)); + LogWarning("Failed to add new component to entity, since couldn't find a entity with ID:" + ::ToString(id)); continue; } @@ -1015,7 +1013,7 @@ void ECEditorWindow::AddComponentDialogFinished(int result) ComponentPtr comp = entity->GetComponent(dialog->TypeName(), dialog->Name()); if (comp) { - LogWarning("Fail to add a new component, cause there was already a component with a same name and a type"); + LogWarning("Failed to add a new component, cause there was already a component with a same name and a type"); continue; } From 23a2de415c805a6dfe2dabf9a5665e700bfda097 Mon Sep 17 00:00:00 2001 From: Stinkfist Date: Mon, 21 Jan 2013 16:53:10 +0200 Subject: [PATCH 07/13] Fix error and warning on freelookcamera.js's OnScriptDestroyed when script run in headless mode. --- bin/jsmodules/camera/freelookcamera.js | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/bin/jsmodules/camera/freelookcamera.js b/bin/jsmodules/camera/freelookcamera.js index 3646036d7d..19070b170b 100755 --- a/bin/jsmodules/camera/freelookcamera.js +++ b/bin/jsmodules/camera/freelookcamera.js @@ -1,4 +1,6 @@ -// A freelook camera script. Upon run, creates necessary components if they don't exist yet +/** For conditions of distribution and use, see copyright notice in LICENSE + + freelookcamera.js - A free look camera script. Upon run, creates necessary components if they don't exist yet. */ // Global application data var _g = @@ -21,16 +23,16 @@ var _g = var inputContext; -// Entry point -if (!framework.IsHeadless()) - Initialize(); - function OnScriptDestroyed() { + if (framework.IsHeadless() || framework.IsExiting()) + return; input.UnregisterInputContextRaw("FreeLookCamera"); + renderer.MainCameraChanged.disconnect(ActiveCameraChanged); } -function Initialize() +// Entry point +if (!framework.IsHeadless()) { engine.ImportExtension("qt.core"); // Connect to camera changed signal. This disconnects frame updates when camera is not active @@ -212,11 +214,6 @@ function GestureUpdated(gestureEvent) } } -function OnScriptDestroyed() -{ - renderer.MainCameraChanged.disconnect(ActiveCameraChanged); -} - function DisconnectApplication() { if (_g.connected) From 2756af0983d49e519010dad9d7a00cf9d73e5693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lasse=20=C3=96=C3=B6rni?= Date: Fri, 8 Feb 2013 14:59:55 +0200 Subject: [PATCH 08/13] Added missing RTShaderLib for Android. --- bin/media/RTShaderLib/FFPLib_Common.cg | 248 +++++ bin/media/RTShaderLib/FFPLib_Common.glsl | 248 +++++ bin/media/RTShaderLib/FFPLib_Common.glsles | 231 +++++ bin/media/RTShaderLib/FFPLib_Common.hlsl | 219 +++++ bin/media/RTShaderLib/FFPLib_Fog.cg | 150 +++ bin/media/RTShaderLib/FFPLib_Fog.glsl | 152 +++ bin/media/RTShaderLib/FFPLib_Fog.glsles | 153 +++ bin/media/RTShaderLib/FFPLib_Fog.hlsl | 150 +++ bin/media/RTShaderLib/FFPLib_Lighting.cg | 225 +++++ bin/media/RTShaderLib/FFPLib_Lighting.glsl | 226 +++++ bin/media/RTShaderLib/FFPLib_Lighting.glsles | 227 +++++ bin/media/RTShaderLib/FFPLib_Lighting.hlsl | 225 +++++ bin/media/RTShaderLib/FFPLib_Texturing.cg | 319 +++++++ bin/media/RTShaderLib/FFPLib_Texturing.glsl | 334 +++++++ bin/media/RTShaderLib/FFPLib_Texturing.glsles | 355 +++++++ bin/media/RTShaderLib/FFPLib_Texturing.hlsl | 319 +++++++ bin/media/RTShaderLib/FFPLib_Transform.cg | 78 ++ bin/media/RTShaderLib/FFPLib_Transform.glsl | 71 ++ bin/media/RTShaderLib/FFPLib_Transform.glsles | 65 ++ bin/media/RTShaderLib/FFPLib_Transform.hlsl | 71 ++ .../RTShaderLib/SGXLib_DualQuaternion.cg | 130 +++ .../RTShaderLib/SGXLib_DualQuaternion.glsl | 132 +++ .../RTShaderLib/SGXLib_IntegratedPSSM.cg | 81 ++ .../RTShaderLib/SGXLib_IntegratedPSSM.glsl | 107 +++ .../RTShaderLib/SGXLib_IntegratedPSSM.glsles | 112 +++ .../RTShaderLib/SGXLib_IntegratedPSSM.hlsl | 81 ++ .../RTShaderLib/SGXLib_LayeredBlending.cg | 728 ++++++++++++++ .../RTShaderLib/SGXLib_LayeredBlending.glsl | 825 ++++++++++++++++ .../RTShaderLib/SGXLib_LayeredBlending.glsles | 889 ++++++++++++++++++ .../RTShaderLib/SGXLib_LayeredBlending.hlsl | 730 ++++++++++++++ .../RTShaderLib/SGXLib_NormalMapLighting.cg | 257 +++++ .../RTShaderLib/SGXLib_NormalMapLighting.glsl | 269 ++++++ .../SGXLib_NormalMapLighting.glsles | 264 ++++++ .../RTShaderLib/SGXLib_NormalMapLighting.hlsl | 257 +++++ .../RTShaderLib/SGXLib_PerPixelLighting.cg | 226 +++++ .../RTShaderLib/SGXLib_PerPixelLighting.glsl | 228 +++++ .../SGXLib_PerPixelLighting.glsles | 223 +++++ .../RTShaderLib/SGXLib_PerPixelLighting.hlsl | 226 +++++ bin/media/RTShaderLib/SGXLib_TextureAtlas.cg | 122 +++ .../RTShaderLib/SGXLib_TextureAtlas.glsl | 124 +++ .../RTShaderLib/SGXLib_TextureAtlas.glsles | 122 +++ .../RTShaderLib/SGXLib_TextureAtlas.hlsl | 122 +++ .../RTShaderLib/SGXLib_TriplanarTexturing.cg | 45 + .../SGXLib_TriplanarTexturing.glsl | 47 + .../SGXLib_TriplanarTexturing.glsles | 47 + .../SGXLib_TriplanarTexturing.hlsl | 45 + .../SampleLib_InstancedViewports.cg | 76 ++ .../SampleLib_InstancedViewports.glsl | 93 ++ .../SampleLib_InstancedViewports.hlsl | 76 ++ .../RTShaderLib/SampleLib_ReflectionMap.cg | 62 ++ .../RTShaderLib/SampleLib_ReflectionMap.glsl | 65 ++ .../SampleLib_ReflectionMap.glsles | 67 ++ .../RTShaderLib/SampleLib_ReflectionMap.hlsl | 62 ++ .../RTShaderLib/SegmentedPerPixelLighting.cg | 185 ++++ bin/media/RTShaderLib/cache/dummy.txt | 1 + .../DualQuaternionSkinning_Shadow.cg | 292 ++++++ .../DualQuaternionSkinning_Shadow.material | 384 ++++++++ ...lQuaternionSkinning_ShadowFourWeights.glsl | 29 + ...ualQuaternionSkinning_ShadowOneWeight.glsl | 28 + ...aternionSkinning_ShadowPassThrough_ps.glsl | 9 + ...aternionSkinning_ShadowPassThrough_vs.glsl | 15 + ...QuaternionSkinning_ShadowThreeWeights.glsl | 29 + ...alQuaternionSkinning_ShadowTwoWeights.glsl | 29 + .../materials/HardwareSkinningShadow.cg | 111 +++ .../materials/HardwareSkinningShadow.material | 265 ++++++ .../HardwareSkinningShadow_Fragment.glsl | 6 + .../HardwareSkinningShadow_TwoWeights.glsl | 18 + .../materials/RTShaderSystem.material | 221 +++++ .../materials/TriplanarTexturing.material | 17 + 69 files changed, 12645 insertions(+) create mode 100644 bin/media/RTShaderLib/FFPLib_Common.cg create mode 100644 bin/media/RTShaderLib/FFPLib_Common.glsl create mode 100644 bin/media/RTShaderLib/FFPLib_Common.glsles create mode 100644 bin/media/RTShaderLib/FFPLib_Common.hlsl create mode 100644 bin/media/RTShaderLib/FFPLib_Fog.cg create mode 100644 bin/media/RTShaderLib/FFPLib_Fog.glsl create mode 100644 bin/media/RTShaderLib/FFPLib_Fog.glsles create mode 100644 bin/media/RTShaderLib/FFPLib_Fog.hlsl create mode 100644 bin/media/RTShaderLib/FFPLib_Lighting.cg create mode 100644 bin/media/RTShaderLib/FFPLib_Lighting.glsl create mode 100644 bin/media/RTShaderLib/FFPLib_Lighting.glsles create mode 100644 bin/media/RTShaderLib/FFPLib_Lighting.hlsl create mode 100644 bin/media/RTShaderLib/FFPLib_Texturing.cg create mode 100644 bin/media/RTShaderLib/FFPLib_Texturing.glsl create mode 100644 bin/media/RTShaderLib/FFPLib_Texturing.glsles create mode 100644 bin/media/RTShaderLib/FFPLib_Texturing.hlsl create mode 100644 bin/media/RTShaderLib/FFPLib_Transform.cg create mode 100644 bin/media/RTShaderLib/FFPLib_Transform.glsl create mode 100644 bin/media/RTShaderLib/FFPLib_Transform.glsles create mode 100644 bin/media/RTShaderLib/FFPLib_Transform.hlsl create mode 100644 bin/media/RTShaderLib/SGXLib_DualQuaternion.cg create mode 100644 bin/media/RTShaderLib/SGXLib_DualQuaternion.glsl create mode 100644 bin/media/RTShaderLib/SGXLib_IntegratedPSSM.cg create mode 100644 bin/media/RTShaderLib/SGXLib_IntegratedPSSM.glsl create mode 100644 bin/media/RTShaderLib/SGXLib_IntegratedPSSM.glsles create mode 100644 bin/media/RTShaderLib/SGXLib_IntegratedPSSM.hlsl create mode 100644 bin/media/RTShaderLib/SGXLib_LayeredBlending.cg create mode 100644 bin/media/RTShaderLib/SGXLib_LayeredBlending.glsl create mode 100644 bin/media/RTShaderLib/SGXLib_LayeredBlending.glsles create mode 100644 bin/media/RTShaderLib/SGXLib_LayeredBlending.hlsl create mode 100644 bin/media/RTShaderLib/SGXLib_NormalMapLighting.cg create mode 100644 bin/media/RTShaderLib/SGXLib_NormalMapLighting.glsl create mode 100644 bin/media/RTShaderLib/SGXLib_NormalMapLighting.glsles create mode 100644 bin/media/RTShaderLib/SGXLib_NormalMapLighting.hlsl create mode 100644 bin/media/RTShaderLib/SGXLib_PerPixelLighting.cg create mode 100644 bin/media/RTShaderLib/SGXLib_PerPixelLighting.glsl create mode 100644 bin/media/RTShaderLib/SGXLib_PerPixelLighting.glsles create mode 100644 bin/media/RTShaderLib/SGXLib_PerPixelLighting.hlsl create mode 100644 bin/media/RTShaderLib/SGXLib_TextureAtlas.cg create mode 100644 bin/media/RTShaderLib/SGXLib_TextureAtlas.glsl create mode 100644 bin/media/RTShaderLib/SGXLib_TextureAtlas.glsles create mode 100644 bin/media/RTShaderLib/SGXLib_TextureAtlas.hlsl create mode 100644 bin/media/RTShaderLib/SGXLib_TriplanarTexturing.cg create mode 100644 bin/media/RTShaderLib/SGXLib_TriplanarTexturing.glsl create mode 100644 bin/media/RTShaderLib/SGXLib_TriplanarTexturing.glsles create mode 100644 bin/media/RTShaderLib/SGXLib_TriplanarTexturing.hlsl create mode 100644 bin/media/RTShaderLib/SampleLib_InstancedViewports.cg create mode 100644 bin/media/RTShaderLib/SampleLib_InstancedViewports.glsl create mode 100644 bin/media/RTShaderLib/SampleLib_InstancedViewports.hlsl create mode 100644 bin/media/RTShaderLib/SampleLib_ReflectionMap.cg create mode 100644 bin/media/RTShaderLib/SampleLib_ReflectionMap.glsl create mode 100644 bin/media/RTShaderLib/SampleLib_ReflectionMap.glsles create mode 100644 bin/media/RTShaderLib/SampleLib_ReflectionMap.hlsl create mode 100644 bin/media/RTShaderLib/SegmentedPerPixelLighting.cg create mode 100644 bin/media/RTShaderLib/cache/dummy.txt create mode 100644 bin/media/RTShaderLib/materials/DualQuaternionSkinning_Shadow.cg create mode 100644 bin/media/RTShaderLib/materials/DualQuaternionSkinning_Shadow.material create mode 100644 bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowFourWeights.glsl create mode 100644 bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowOneWeight.glsl create mode 100644 bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowPassThrough_ps.glsl create mode 100644 bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowPassThrough_vs.glsl create mode 100644 bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowThreeWeights.glsl create mode 100644 bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowTwoWeights.glsl create mode 100644 bin/media/RTShaderLib/materials/HardwareSkinningShadow.cg create mode 100644 bin/media/RTShaderLib/materials/HardwareSkinningShadow.material create mode 100644 bin/media/RTShaderLib/materials/HardwareSkinningShadow_Fragment.glsl create mode 100644 bin/media/RTShaderLib/materials/HardwareSkinningShadow_TwoWeights.glsl create mode 100644 bin/media/RTShaderLib/materials/RTShaderSystem.material create mode 100644 bin/media/RTShaderLib/materials/TriplanarTexturing.material diff --git a/bin/media/RTShaderLib/FFPLib_Common.cg b/bin/media/RTShaderLib/FFPLib_Common.cg new file mode 100644 index 0000000000..a9087c35aa --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Common.cg @@ -0,0 +1,248 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Common +// Program Desc: Common functions of the FFP. +// Program Type: Vertex/Pixel shader +// Language: CG +// Notes: Common functions needed by all FFP implementation classes. +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void FFP_Assign(in float vIn, out float vOut) +{ + vOut = vIn; +} +//----------------------------------------------------------------------------- +void FFP_Assign(in float2 vIn, out float2 vOut) +{ + vOut = vIn; +} + +//----------------------------------------------------------------------------- +void FFP_Assign(in float3 vIn, out float3 vOut) +{ + vOut = vIn; +} + +//----------------------------------------------------------------------------- +void FFP_Assign(in float4 vIn, out float4 vOut) +{ + vOut = vIn; +} + +//----------------------------------------------------------------------------- +void FFP_Assign(in float2x4 vIn, out float2x4 vOut) +{ + vOut = vIn; +} + +//----------------------------------------------------------------------------- +void FFP_Assign(in float3x4 vIn, out float3x4 vOut) +{ + vOut = vIn; +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + in float g, + in float b, + in float a, + out float4 vOut) +{ + vOut = float4(r,g,b,a); +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + in float g, + out float2 vOut) +{ + vOut = float2(r,g); +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + in float g, + in float b, + out float3 vOut) +{ + vOut = float3(r,g,b); +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + out float4 vOut) +{ + vOut = float4(r,r,r,r); +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in float2x4 vIn0, in float2x4 vIn1, out float2x4 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in float3x4 vIn0, in float3x4 vIn1, out float3x4 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in float vIn0, in float vIn1, float T, out float vOut) +{ + vOut = lerp(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in float2 vIn0, in float2 vIn1, float T, out float2 vOut) +{ + vOut = lerp(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in float3 vIn0, in float3 vIn1, float T, out float3 vOut) +{ + vOut = lerp(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in float4 vIn0, in float4 vIn1, float T, out float4 vOut) +{ + vOut = lerp(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in float4 vIn0, in float4 vIn1, float4 T, out float4 vOut) +{ + vOut = lerp(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in float vIn0, in float vIn1, out float vOut) +{ + vOut = dot(vIn0, vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = dot(vIn0, vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = dot(vIn0, vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = dot(vIn0, vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_Normalize(inout float3 vIn) +{ + vIn /= length(vIn); +} + + diff --git a/bin/media/RTShaderLib/FFPLib_Common.glsl b/bin/media/RTShaderLib/FFPLib_Common.glsl new file mode 100644 index 0000000000..b3c849bab3 --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Common.glsl @@ -0,0 +1,248 @@ +#version 120 +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Common +// Program Desc: Common functions of the FFP. +// Program Type: Vertex/Pixel shader +// Language: GLSL +// Notes: Common functions needed by all FFP implementation classes. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void FFP_Assign(in float vIn, out float vOut) +{ + vOut = vIn; +} +//----------------------------------------------------------------------------- +void FFP_Assign(in vec2 vIn, out vec2 vOut) +{ + vOut = vIn; +} + +//----------------------------------------------------------------------------- +void FFP_Assign(in vec3 vIn, out vec3 vOut) +{ + vOut = vIn; +} + +//----------------------------------------------------------------------------- +void FFP_Assign(in vec4 vIn, out vec4 vOut) +{ + vOut = vIn; +} +//----------------------------------------------------------------------------- +void FFP_Assign(in vec4 vIn, out vec2 vOut) +{ + vOut = vIn.xy; +} +//----------------------------------------------------------------------------- +void FFP_Assign(in vec4 vIn, out vec3 vOut) +{ + vOut = vIn.xyz; +} +//----------------------------------------------------------------------------- +void FFP_Assign(in mat2x4 vIn, out mat2x4 vOut) +{ + vOut = vIn; +} +//----------------------------------------------------------------------------- +void FFP_Assign(in mat3x4 vIn, out mat3x4 vOut) +{ + vOut = vIn; +} +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + in float g, + in float b, + in float a, + out vec4 vOut) +{ + vOut = vec4(r,g,b,a); +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + in float g, + in float b, + out vec3 vOut) +{ + vOut = vec3(r,g,b); +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + out vec4 vOut) +{ + vOut = vec4(r,r,r,r); +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + in float g, + out vec2 vOut) +{ + vOut = vec2(r,g); +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in mat2x4 vIn0, in mat2x4 vIn1, out mat2x4 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in mat3x4 vIn0, in mat3x4 vIn1, out mat3x4 vOut) +{ + vOut = vIn0 + vIn1; +} +//----------------------------------------------------------------------------- +void FFP_Subtract(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in float vIn0, in float vIn1, float T, out float vOut) +{ + vOut = mix(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in vec2 vIn0, in vec2 vIn1, float T, out vec2 vOut) +{ + vOut = mix(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in vec3 vIn0, in vec3 vIn1, float T, out vec3 vOut) +{ + vOut = mix(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in vec4 vIn0, in vec4 vIn1, float T, out vec4 vOut) +{ + vOut = mix(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in vec4 vIn0, in vec4 vIn1, vec4 T, out vec4 vOut) +{ + vOut = mix(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in float vIn0, in float vIn1, out float vOut) +{ + vOut = dot(vIn0, vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vec2(dot(vIn0, vIn1), 1.0); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vec3(dot(vIn0, vIn1), 1.0, 1.0); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vec4(dot(vIn0, vIn1), 1.0, 1.0, 1.0); +} diff --git a/bin/media/RTShaderLib/FFPLib_Common.glsles b/bin/media/RTShaderLib/FFPLib_Common.glsles new file mode 100644 index 0000000000..696b18631b --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Common.glsles @@ -0,0 +1,231 @@ +#version 100 +precision highp float; +precision highp int; +precision lowp sampler2D; +precision lowp samplerCube; +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Common +// Program Desc: Common functions of the FFP. +// Program Type: Vertex/Pixel shader +// Language: GLSL ES +// Notes: Common functions needed by all FFP implementation classes. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void FFP_Assign(in float vIn, out float vOut) +{ + vOut = vIn; +} +//----------------------------------------------------------------------------- +void FFP_Assign(in vec2 vIn, out vec2 vOut) +{ + vOut = vIn; +} + +//----------------------------------------------------------------------------- +void FFP_Assign(in vec3 vIn, out vec3 vOut) +{ + vOut = vIn; +} + +//----------------------------------------------------------------------------- +void FFP_Assign(in vec4 vIn, out vec4 vOut) +{ + vOut = vIn; +} +//----------------------------------------------------------------------------- +void FFP_Assign(in vec4 vIn, out vec2 vOut) +{ + vOut = vIn.xy; +} +//----------------------------------------------------------------------------- +void FFP_Assign(in vec4 vIn, out vec3 vOut) +{ + vOut = vIn.xyz; +} +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + in float g, + in float b, + in float a, + out vec4 vOut) +{ + vOut = vec4(r,g,b,a); +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + in float g, + in float b, + out vec3 vOut) +{ + vOut = vec3(r,g,b); +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + out vec4 vOut) +{ + vOut = vec4(r,r,r,r); +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + in float g, + out vec2 vOut) +{ + vOut = vec2(r,g); +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in float vIn0, in float vIn1, in float T, out float vOut) +{ + vOut = mix(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in vec2 vIn0, in vec2 vIn1, in float T, out vec2 vOut) +{ + vOut = mix(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in vec3 vIn0, in vec3 vIn1, in float T, out vec3 vOut) +{ + vOut = mix(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in vec4 vIn0, in vec4 vIn1, in float T, out vec4 vOut) +{ + vOut = mix(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in vec4 vIn0, in vec4 vIn1, in vec4 T, out vec4 vOut) +{ + vOut = mix(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in float vIn0, in float vIn1, out float vOut) +{ + vOut = dot(vIn0, vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vec2(dot(vIn0, vIn1), 1.0); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vec3(dot(vIn0, vIn1), 1.0, 1.0); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vec4(dot(vIn0, vIn1), 1.0, 1.0, 1.0); +} diff --git a/bin/media/RTShaderLib/FFPLib_Common.hlsl b/bin/media/RTShaderLib/FFPLib_Common.hlsl new file mode 100644 index 0000000000..b136f2e02e --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Common.hlsl @@ -0,0 +1,219 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Common +// Program Desc: Common functions of the FFP. +// Program Type: Vertex/Pixel shader +// Language: HLSL +// Notes: Common functions needed by all FFP implementation classes. +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void FFP_Assign(in float vIn, out float vOut) +{ + vOut = vIn; +} +//----------------------------------------------------------------------------- +void FFP_Assign(in float2 vIn, out float2 vOut) +{ + vOut = vIn; +} + +//----------------------------------------------------------------------------- +void FFP_Assign(in float3 vIn, out float3 vOut) +{ + vOut = vIn; +} + +//----------------------------------------------------------------------------- +void FFP_Assign(in float4 vIn, out float4 vOut) +{ + vOut = vIn; +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + in float g, + in float b, + in float a, + out float4 vOut) +{ + vOut = float4(r,g,b,a); +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + in float g, + out float2 vOut) +{ + vOut = float2(r,g); +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + in float g, + in float b, + out float3 vOut) +{ + vOut = float3(r,g,b); +} + +//----------------------------------------------------------------------------- +void FFP_Construct(in float r, + out float4 vOut) +{ + vOut = float4(r,r,r,r); +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Modulate(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Add(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 + vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Subtract(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 - vIn1; +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in float vIn0, in float vIn1, float T, out float vOut) +{ + vOut = lerp(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in float2 vIn0, in float2 vIn1, float T, out float2 vOut) +{ + vOut = lerp(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in float3 vIn0, in float3 vIn1, float T, out float3 vOut) +{ + vOut = lerp(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in float4 vIn0, in float4 vIn1, float T, out float4 vOut) +{ + vOut = lerp(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_Lerp(in float4 vIn0, in float4 vIn1, float4 T, out float4 vOut) +{ + vOut = lerp(vIn0, vIn1, T); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in float vIn0, in float vIn1, out float vOut) +{ + vOut = dot(vIn0, vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = dot(vIn0, vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = dot(vIn0, vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_DotProduct(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = dot(vIn0, vIn1); +} + + + diff --git a/bin/media/RTShaderLib/FFPLib_Fog.cg b/bin/media/RTShaderLib/FFPLib_Fog.cg new file mode 100644 index 0000000000..3242d6b0f7 --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Fog.cg @@ -0,0 +1,150 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Fog +// Program Desc: Fog functions of the FFP. +// Program Type: Vertex/Pixel shader +// Language: CG +// Notes: Implements cor functions needed by FFPFog class. +// Based on fog engine. +// See http://msdn.microsoft.com/en-us/library/bb173398.aspx +// Vertex based fog: the w component of the out position is used +// as the distance parameter to fog formulas. This is basically the z coordinate +// in world space. See pixel fog under D3D docs. The fog factor is computed according +// to each formula, then clamped and output to the pixel shader. +// Pixel based fog: the w component of the out position is passed to pixel shader +// that computes the fog factor based on it. +// Both techniques use the fog factor in the end of the pixel shader to blend +// the output color with the fog color. +//----------------------------------------------------------------------------- + + + +//----------------------------------------------------------------------------- +void FFP_VertexFog_Linear(in float4x4 mWorldViewProj, + in float4 pos, + in float4 fogParams, + out float oFogFactor) +{ + float4 vOutPos = mul(mWorldViewProj, pos); + float distance = abs(vOutPos.w); + float fogFactor = (fogParams.z - distance) * fogParams.w; + + oFogFactor = saturate(fogFactor); +} + +//----------------------------------------------------------------------------- +void FFP_VertexFog_Exp(in float4x4 mWorldViewProj, + in float4 pos, + in float4 fogParams, + out float oFogFactor) +{ + float4 vOutPos = mul(mWorldViewProj, pos); + float distance = abs(vOutPos.w); + float exp = distance*fogParams.x; + float fogFactor = 1 / pow(2.71828, exp); + + oFogFactor = saturate(fogFactor); +} + +//----------------------------------------------------------------------------- +void FFP_VertexFog_Exp2(in float4x4 mWorldViewProj, + in float4 pos, + in float4 fogParams, + out float oFogFactor) +{ + float4 vOutPos = mul(mWorldViewProj, pos); + float distance = abs(vOutPos.w); + float exp = (distance*fogParams.x*distance*fogParams.x); + float fogFactor = 1 / pow(2.71828, exp); + + oFogFactor = saturate(fogFactor); +} + + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Depth(in float4x4 mWorldViewProj, + in float4 pos, + out float oDepth) +{ + float4 vOutPos = mul(mWorldViewProj, pos); + oDepth = vOutPos.w; +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_PositionDepth(in float4x4 mWorld, + in float3 cameraPos, + in float4 pos, + out float3 oPosView, + out float oDepth) +{ + float4 vOutPos = mul(mWorld, pos); + oPosView = vOutPos.xyz - cameraPos; + oDepth = length(oPosView); +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Linear(in float depth, + in float4 fogParams, + in float4 fogColor, + in float4 baseColor, + out float4 oColor) +{ + float distance = abs(depth); + float fogFactor = saturate((fogParams.z - distance) * fogParams.w); + + oColor = lerp(fogColor, baseColor, fogFactor); +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Exp(in float depth, + in float4 fogParams, + in float4 fogColor, + in float4 baseColor, + out float4 oColor) +{ + float distance = abs(depth); + float exp = (distance*fogParams.x); + float fogFactor = saturate(1 / pow(2.71828, exp)); + + oColor = lerp(fogColor, baseColor, fogFactor); +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Exp2(in float depth, + in float4 fogParams, + in float4 fogColor, + in float4 baseColor, + out float4 oColor) +{ + float distance = abs(depth); + float exp = (distance*fogParams.x*distance*fogParams.x); + float fogFactor = saturate(1 / pow(2.71828, exp)); + + oColor = lerp(fogColor, baseColor, fogFactor); +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/FFPLib_Fog.glsl b/bin/media/RTShaderLib/FFPLib_Fog.glsl new file mode 100644 index 0000000000..91d06292f3 --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Fog.glsl @@ -0,0 +1,152 @@ +#version 120 +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Fog +// Program Desc: Fog functions of the FFP. +// Program Type: Vertex/Pixel shader +// Language: GLSL +// Notes: Implements core functions needed by FFPFog class. +// Based on fog engine. +// See http://msdn.microsoft.com/en-us/library/bb173398.aspx +// Vertex based fog: the w component of the out position is used +// as the distance parameter to fog formulas. This is basically the z coordinate +// in world space. See pixel fog under D3D docs. The fog factor is computed according +// to each formula, then clamped and output to the pixel shader. +// Pixel based fog: the w component of the out position is passed to pixel shader +// that computes the fog factor based on it. +// Both techniques use the fog factor in the end of the pixel shader to blend +// the output color with the fog color. +//----------------------------------------------------------------------------- + + + +//----------------------------------------------------------------------------- +void FFP_VertexFog_Linear(in mat4 mWorldViewProj, + in vec4 pos, + in vec4 fogParams, + out float oFogFactor) +{ + vec4 vOutPos = mWorldViewProj * pos; + float distance = abs(vOutPos.w); + float fogFactor = (fogParams.z - distance) * fogParams.w; + + oFogFactor = clamp(fogFactor, 0.0, 1.0); +} + +//----------------------------------------------------------------------------- +void FFP_VertexFog_Exp(in mat4 mWorldViewProj, + in vec4 pos, + in vec4 fogParams, + out float oFogFactor) +{ + vec4 vOutPos = mWorldViewProj * pos; + float distance = abs(vOutPos.w); + float exp = distance*fogParams.x; + float fogFactor = 1.0 / pow(2.71828, exp); + + oFogFactor = clamp(fogFactor, 0.0, 1.0); +} + +//----------------------------------------------------------------------------- +void FFP_VertexFog_Exp2(in mat4 mWorldViewProj, + in vec4 pos, + in vec4 fogParams, + out float oFogFactor) +{ + vec4 vOutPos = mWorldViewProj * pos; + float distance = abs(vOutPos.w); + float exp = (distance*fogParams.x*distance*fogParams.x); + float fogFactor = 1.0 / pow(2.71828, exp); + + oFogFactor = clamp(fogFactor, 0.0, 1.0); +} + + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Depth(in mat4 mWorldViewProj, + in vec4 pos, + out float oDepth) +{ + vec4 vOutPos = mWorldViewProj * pos; + oDepth = vOutPos.w; +} + + +//----------------------------------------------------------------------------- +void FFP_PixelFog_PositionDepth(in mat4 mWorld, + in vec3 cameraPos, + in vec4 pos, + out vec3 oPosView, + out float oDepth) +{ + vec4 vOutPos = mWorld * pos; + oPosView = vOutPos.xyz - cameraPos; + oDepth = length(oPosView); +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Linear(in float depth, + in vec4 fogParams, + in vec4 fogColor, + in vec4 baseColor, + out vec4 oColor) +{ + float distance = abs(depth); + float fogFactor = clamp((fogParams.z - distance) * fogParams.w, 0.0, 1.0); + + oColor = mix(fogColor, baseColor, fogFactor); +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Exp(in float depth, + in vec4 fogParams, + in vec4 fogColor, + in vec4 baseColor, + out vec4 oColor) +{ + float distance = abs(depth); + float exp = (distance*fogParams.x); + float fogFactor = clamp(1.0 / pow(2.71828, exp), 0.0, 1.0); + + oColor = mix(fogColor, baseColor, fogFactor); +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Exp2(in float depth, + in vec4 fogParams, + in vec4 fogColor, + in vec4 baseColor, + out vec4 oColor) +{ + float distance = abs(depth); + float exp = (distance*fogParams.x*distance*fogParams.x); + float fogFactor = clamp(1.0 / pow(2.71828, exp), 0.0, 1.0); + + oColor = mix(fogColor, baseColor, fogFactor); +} diff --git a/bin/media/RTShaderLib/FFPLib_Fog.glsles b/bin/media/RTShaderLib/FFPLib_Fog.glsles new file mode 100644 index 0000000000..59a3e67ea4 --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Fog.glsles @@ -0,0 +1,153 @@ +#version 100 +precision highp float; +precision highp int; +precision lowp sampler2D; +precision lowp samplerCube; +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Fog +// Program Desc: Fog functions of the FFP. +// Program Type: Vertex/Pixel shader +// Language: GLSL ES +// Notes: Implements core functions needed by FFPFog class. +// Based on fog engine. +// See http://msdn.microsoft.com/en-us/library/bb173398.aspx +// Vertex based fog: the w component of the out position is used +// as the distance parameter to fog formulas. This is basically the z coordinate +// in world space. See pixel fog under D3D docs. The fog factor is computed according +// to each formula, then clamped and output to the pixel shader. +// Pixel based fog: the w component of the out position is passed to pixel shader +// that computes the fog factor based on it. +// Both techniques use the fog factor in the end of the pixel shader to blend +// the output color with the fog color. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void FFP_VertexFog_Linear(in mat4 mWorldViewProj, + in vec4 pos, + in vec4 fogParams, + out float oFogFactor) +{ + vec4 vOutPos = mWorldViewProj * pos; + float distance = abs(vOutPos.w); + float fogFactor = (fogParams.z - distance) * fogParams.w; + + oFogFactor = clamp(fogFactor, 0.0, 1.0); +} + +//----------------------------------------------------------------------------- +void FFP_VertexFog_Exp(in mat4 mWorldViewProj, + in vec4 pos, + in vec4 fogParams, + out float oFogFactor) +{ + vec4 vOutPos = mWorldViewProj * pos; + float distance = abs(vOutPos.w); + float exp = distance * fogParams.x; + float fogFactor = 1.0 / pow(2.71828, exp); + + oFogFactor = clamp(fogFactor, 0.0, 1.0); +} + +//----------------------------------------------------------------------------- +void FFP_VertexFog_Exp2(in mat4 mWorldViewProj, + in vec4 pos, + in vec4 fogParams, + out float oFogFactor) +{ + vec4 vOutPos = mWorldViewProj * pos; + float distance = abs(vOutPos.w); + float exp = (distance * fogParams.x * distance * fogParams.x); + float fogFactor = 1.0 / pow(2.71828, exp); + + oFogFactor = clamp(fogFactor, 0.0, 1.0); +} + + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Depth(in mat4 mWorldViewProj, + in vec4 pos, + out float oDepth) +{ + vec4 vOutPos = mWorldViewProj * pos; + oDepth = vOutPos.w; +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_PositionDepth(in mat4 mWorld, + in vec3 cameraPos, + in vec4 pos, + out vec3 oPosView, + out float oDepth) +{ + vec4 vOutPos = mWorld * pos; + oPosView = vOutPos.xyz - cameraPos; + oDepth = length(oPosView); +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Linear(in float depth, + in vec4 fogParams, + in vec4 fogColor, + in vec4 baseColor, + out vec4 oColor) +{ + float distance = abs(depth); + float fogFactor = clamp((fogParams.z - distance) * fogParams.w, 0.0, 1.0); + + oColor = mix(fogColor, baseColor, fogFactor); +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Exp(in float depth, + in vec4 fogParams, + in vec4 fogColor, + in vec4 baseColor, + out vec4 oColor) +{ + float distance = abs(depth); + float exp = (distance * fogParams.x); + float fogFactor = clamp(1.0 / pow(2.71828, exp), 0.0, 1.0); + + oColor = mix(fogColor, baseColor, fogFactor); +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Exp2(in float depth, + in vec4 fogParams, + in vec4 fogColor, + in vec4 baseColor, + out vec4 oColor) +{ + float distance = abs(depth); + float exp = (distance * fogParams.x * distance * fogParams.x); + float fogFactor = clamp(1.0 / pow(2.71828, exp), 0.0, 1.0); + + oColor = mix(fogColor, baseColor, fogFactor); +} diff --git a/bin/media/RTShaderLib/FFPLib_Fog.hlsl b/bin/media/RTShaderLib/FFPLib_Fog.hlsl new file mode 100644 index 0000000000..2e4d044ed7 --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Fog.hlsl @@ -0,0 +1,150 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Fog +// Program Desc: Fog functions of the FFP. +// Program Type: Vertex/Pixel shader +// Language: HLSL +// Notes: Implements cor functions needed by FFPFog class. +// Based on fog engine. +// See http://msdn.microsoft.com/en-us/library/bb173398.aspx +// Vertex based fog: the w component of the out position is used +// as the distance parameter to fog formulas. This is basically the z coordinate +// in world space. See pixel fog under D3D docs. The fog factor is computed according +// to each formula, then clamped and output to the pixel shader. +// Pixel based fog: the w component of the out position is passed to pixel shader +// that computes the fog factor based on it. +// Both techniques use the fog factor in the end of the pixel shader to blend +// the output color with the fog color. +//----------------------------------------------------------------------------- + + + +//----------------------------------------------------------------------------- +void FFP_VertexFog_Linear(in float4x4 mWorldViewProj, + in float4 pos, + in float4 fogParams, + out float oFogFactor) +{ + float4 vOutPos = mul(mWorldViewProj, pos); + float distance = abs(vOutPos.w); + float fogFactor = (fogParams.z - distance) * fogParams.w; + + oFogFactor = saturate(fogFactor); +} + +//----------------------------------------------------------------------------- +void FFP_VertexFog_Exp(in float4x4 mWorldViewProj, + in float4 pos, + in float4 fogParams, + out float oFogFactor) +{ + float4 vOutPos = mul(mWorldViewProj, pos); + float distance = abs(vOutPos.w); + float exp = distance*fogParams.x; + float fogFactor = 1 / pow(2.71828, exp); + + oFogFactor = saturate(fogFactor); +} + +//----------------------------------------------------------------------------- +void FFP_VertexFog_Exp2(in float4x4 mWorldViewProj, + in float4 pos, + in float4 fogParams, + out float oFogFactor) +{ + float4 vOutPos = mul(mWorldViewProj, pos); + float distance = abs(vOutPos.w); + float exp = (distance*fogParams.x*distance*fogParams.x); + float fogFactor = 1 / pow(2.71828, exp); + + oFogFactor = saturate(fogFactor); +} + + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Depth(in float4x4 mWorldViewProj, + in float4 pos, + out float oDepth) +{ + float4 vOutPos = mul(mWorldViewProj, pos); + oDepth = vOutPos.w; +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_PositionDepth(in float4x4 mWorld, + in float3 cameraPos, + in float4 pos, + out float3 oPosView, + out float oDepth) +{ + float4 vOutPos = mul(mWorld, pos); + oPosView = vOutPos.xyz - cameraPos; + oDepth = length(oPosView); +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Linear(in float depth, + in float4 fogParams, + in float4 fogColor, + in float4 baseColor, + out float4 oColor) +{ + float distance = abs(depth); + float fogFactor = saturate((fogParams.z - distance) * fogParams.w); + + oColor = lerp(fogColor, baseColor, fogFactor); +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Exp(in float depth, + in float4 fogParams, + in float4 fogColor, + in float4 baseColor, + out float4 oColor) +{ + float distance = abs(depth); + float exp = (distance*fogParams.x); + float fogFactor = saturate(1 / pow(2.71828, exp)); + + oColor = lerp(fogColor, baseColor, fogFactor); +} + +//----------------------------------------------------------------------------- +void FFP_PixelFog_Exp2(in float depth, + in float4 fogParams, + in float4 fogColor, + in float4 baseColor, + out float4 oColor) +{ + float distance = abs(depth); + float exp = (distance*fogParams.x*distance*fogParams.x); + float fogFactor = saturate(1 / pow(2.71828, exp)); + + oColor = lerp(fogColor, baseColor, fogFactor); +} diff --git a/bin/media/RTShaderLib/FFPLib_Lighting.cg b/bin/media/RTShaderLib/FFPLib_Lighting.cg new file mode 100644 index 0000000000..25eb6b3faf --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Lighting.cg @@ -0,0 +1,225 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Lighting +// Program Desc: Lighting functions of the FFP. +// Program Type: Vertex shader +// Language: CG +// Notes: Implements core functions for FFPLighting class. +// based on lighting engine. +// See http://msdn.microsoft.com/en-us/library/bb147178.aspx +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +void FFP_Light_Directional_Diffuse(in float4x4 mWorldViewIT, + in float3 vNormal, + in float3 vNegLightDirView, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + float3 vNormalView = normalize(mul((float3x3)mWorldViewIT, vNormal)); + float nDotL = dot(vNormalView, vNegLightDirView); + + vOut = vBaseColour + vDiffuseColour * saturate(nDotL); +} + + +//----------------------------------------------------------------------------- +void FFP_Light_Directional_DiffuseSpecular(in float4x4 mWorldView, + in float4 vPos, + in float4x4 mWorldViewIT, + in float3 vNormal, + in float3 vNegLightDirView, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vNormalView = normalize(mul((float3x3)mWorldViewIT, vNormal)); + float nDotL = dot(vNormalView, vNegLightDirView); + float3 vView = -normalize(mul(mWorldView, vPos).xyz); + float3 vHalfWay = normalize(vView + vNegLightDirView); + float nDotH = dot(vNormalView, vHalfWay); + + if (nDotL > 0) + { + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower); + } +} + + +//----------------------------------------------------------------------------- +void FFP_Light_Point_Diffuse(in float4x4 mWorldView, + in float4 vPos, + in float4x4 mWorldViewIT, + in float3 vNormal, + in float3 vLightPosView, + in float4 vAttParams, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + vOut = vBaseColour; + + float3 vViewPos = mul(mWorldView, vPos).xyz; + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + float3 vNormalView = normalize(mul((float3x3)mWorldViewIT, vNormal)); + float nDotL = dot(vNormalView, normalize(vLightView)); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOut += vDiffuseColour * nDotL * fAtten; + } +} + +//----------------------------------------------------------------------------- +void FFP_Light_Point_DiffuseSpecular(in float4x4 mWorldView, + in float4 vPos, + in float4x4 mWorldViewIT, + in float3 vNormal, + in float3 vLightPosView, + in float4 vAttParams, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vViewPos = mul(mWorldView, vPos).xyz; + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + + vLightView = normalize(vLightView); + float3 vNormalView = normalize(mul((float3x3)mWorldViewIT, vNormal)); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vView = -normalize(vViewPos); + float3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower) * fAtten; + } +} + +//----------------------------------------------------------------------------- +void FFP_Light_Spot_Diffuse(in float4x4 mWorldView, + in float4 vPos, + in float4x4 mWorldViewIT, + in float3 vNormal, + in float3 vLightPosView, + in float3 vNegLightDirView, + in float4 vAttParams, + in float3 vSpotParams, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + vOut = vBaseColour; + + float3 vViewPos = mul(mWorldView, vPos).xyz; + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + float3 vNormalView = normalize(mul((float3x3)mWorldViewIT, vNormal)); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = saturate((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y)); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOut += vDiffuseColour * nDotL * fAtten * fSpotT; + } +} + +//----------------------------------------------------------------------------- +void FFP_Light_Spot_DiffuseSpecular(in float4x4 mWorldView, + in float4 vPos, + in float4x4 mWorldViewIT, + in float3 vNormal, + in float3 vLightPosView, + in float3 vNegLightDirView, + in float4 vAttParams, + in float3 vSpotParams, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vViewPos = mul(mWorldView, vPos).xyz; + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + float3 vNormalView = normalize(mul((float3x3)mWorldViewIT, vNormal)); + float nDotL = dot(vNormalView, vLightView); + + + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vView = -normalize(vViewPos); + float3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = saturate((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y)); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten * fSpotT; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower) * fAtten * fSpotT; + } +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/FFPLib_Lighting.glsl b/bin/media/RTShaderLib/FFPLib_Lighting.glsl new file mode 100644 index 0000000000..d088c92828 --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Lighting.glsl @@ -0,0 +1,226 @@ +#version 120 +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Lighting +// Program Desc: Lighting functions of the FFP. +// Program Type: Vertex shader +// Language: GLSL +// Notes: Implements core functions for FFPLighting class. +// based on lighting engine. +// See http://msdn.microsoft.com/en-us/library/bb147178.aspx +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +void FFP_Light_Directional_Diffuse(in mat4 mWorldViewIT, + in vec3 vNormal, + in vec3 vNegLightDirView, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vec3 vNormalView = normalize((mWorldViewIT * vec4(vNormal.xyz, 1.0)).xyz); + float nDotL = dot(vNormalView, vNegLightDirView); + + vOut = vBaseColour + vDiffuseColour * clamp(nDotL, 0.0, 1.0); +} + + +//----------------------------------------------------------------------------- +void FFP_Light_Directional_DiffuseSpecular(in mat4 mWorldView, + in vec4 vPos, + in mat4 mWorldViewIT, + in vec3 vNormal, + in vec3 vNegLightDirView, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vNormalView = normalize((mWorldViewIT * vec4(vNormal.xyz, 1.0)).xyz); + float nDotL = dot(vNormalView, vNegLightDirView); + vec3 vView = -normalize((mWorldView* vPos).xyz); + vec3 vHalfWay = normalize(vView + vNegLightDirView); + float nDotH = dot(vNormalView, vHalfWay); + + if (nDotL > 0.0) + { + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower); + } +} + + +//----------------------------------------------------------------------------- +void FFP_Light_Point_Diffuse(in mat4 mWorldView, + in vec4 vPos, + in mat4 mWorldViewIT, + in vec3 vNormal, + in vec3 vLightPosView, + in vec4 vAttParams, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vOut = vBaseColour; + + vec3 vViewPos = (mWorldView * vPos).xyz; + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vec3 vNormalView = normalize((mWorldViewIT * vec4(vNormal.xyz, 1.0)).xyz); + float nDotL = dot(vNormalView, normalize(vLightView)); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + float fAtten = 1.0 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOut += vDiffuseColour * nDotL * fAtten; + } +} + +//----------------------------------------------------------------------------- +void FFP_Light_Point_DiffuseSpecular(in mat4 mWorldView, + in vec4 vPos, + in mat4 mWorldViewIT, + in vec3 vNormal, + in vec3 vLightPosView, + in vec4 vAttParams, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vViewPos = (mWorldView * vPos).xyz; + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + + vLightView = normalize(vLightView); + vec3 vNormalView = normalize((mWorldViewIT * vec4(vNormal.xyz, 1.0)).xyz); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vView = -normalize(vViewPos); + vec3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower) * fAtten; + } +} + +//----------------------------------------------------------------------------- +void FFP_Light_Spot_Diffuse(in mat4 mWorldView, + in vec4 vPos, + in mat4 mWorldViewIT, + in vec3 vNormal, + in vec3 vLightPosView, + in vec3 vNegLightDirView, + in vec4 vAttParams, + in vec3 vSpotParams, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vOut = vBaseColour; + + vec3 vViewPos = (mWorldView * vPos).xyz; + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + vec3 vNormalView = normalize((mWorldViewIT * vec4(vNormal.xyz, 1.0)).xyz); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + float fAtten = 1.0 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = clamp((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y), 0.0, 1.0); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOut += vDiffuseColour * nDotL * fAtten * fSpotT; + } +} + +//----------------------------------------------------------------------------- +void FFP_Light_Spot_DiffuseSpecular(in mat4 mWorldView, + in vec4 vPos, + in mat4 mWorldViewIT, + in vec3 vNormal, + in vec3 vLightPosView, + in vec3 vNegLightDirView, + in vec4 vAttParams, + in vec3 vSpotParams, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vViewPos = (mWorldView * vPos).xyz; + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + vec3 vNormalView = normalize((mWorldViewIT * vec4(vNormal.xyz, 1.0)).xyz); + float nDotL = dot(vNormalView, vLightView); + + + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vView = -normalize(vViewPos); + vec3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = clamp((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y), 0.0, 1.0); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten * fSpotT; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower) * fAtten * fSpotT; + } +} diff --git a/bin/media/RTShaderLib/FFPLib_Lighting.glsles b/bin/media/RTShaderLib/FFPLib_Lighting.glsles new file mode 100644 index 0000000000..0e1b67e292 --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Lighting.glsles @@ -0,0 +1,227 @@ +#version 100 +precision highp float; +precision highp int; +precision lowp sampler2D; +precision lowp samplerCube; +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Lighting +// Program Desc: Lighting functions of the FFP. +// Program Type: Vertex shader +// Language: GLSL ES +// Notes: Implements core functions for FFPLighting class. +// based on lighting engine. +// See http://msdn.microsoft.com/en-us/library/bb147178.aspx +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void FFP_Light_Directional_Diffuse(in mat4 mWorldViewIT, + in vec3 vNormal, + in vec3 vNegLightDirView, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vec3 vNormalView = normalize((mWorldViewIT * vec4(vNormal.xyz, 1.0)).xyz); + float nDotL = dot(vNormalView, vNegLightDirView); + + vOut = vBaseColour + vDiffuseColour * clamp(nDotL, 0.0, 1.0); +} + + +//----------------------------------------------------------------------------- +void FFP_Light_Directional_DiffuseSpecular(in mat4 mWorldView, + in vec4 vPos, + in mat4 mWorldViewIT, + in vec3 vNormal, + in vec3 vNegLightDirView, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vNormalView = normalize((mWorldViewIT * vec4(vNormal.xyz, 1.0)).xyz); + float nDotL = dot(vNormalView, vNegLightDirView); + vec3 vView = -normalize((mWorldView * vPos).xyz); + vec3 vHalfWay = normalize(vView + vNegLightDirView); + float nDotH = dot(vNormalView, vHalfWay); + + if (nDotL > 0.0) + { + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower); + } +} + + +//----------------------------------------------------------------------------- +void FFP_Light_Point_Diffuse(in mat4 mWorldView, + in vec4 vPos, + in mat4 mWorldViewIT, + in vec3 vNormal, + in vec3 vLightPosView, + in vec4 vAttParams, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vOut = vBaseColour; + + vec3 vViewPos = (mWorldView * vPos).xyz; + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vec3 vNormalView = normalize((mWorldViewIT * vec4(vNormal.xyz, 1.0)).xyz); + float nDotL = dot(vNormalView, normalize(vLightView)); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + float fAtten = 1.0 / (vAttParams.y + vAttParams.z * fLightD + vAttParams.w * fLightD * fLightD); + + vOut += vDiffuseColour * nDotL * fAtten; + } +} + +//----------------------------------------------------------------------------- +void FFP_Light_Point_DiffuseSpecular(in mat4 mWorldView, + in vec4 vPos, + in mat4 mWorldViewIT, + in vec3 vNormal, + in vec3 vLightPosView, + in vec4 vAttParams, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vViewPos = (mWorldView * vPos).xyz; + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + + vLightView = normalize(vLightView); + vec3 vNormalView = normalize((mWorldViewIT * vec4(vNormal.xyz, 1.0)).xyz); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vView = -normalize(vViewPos); + vec3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z * fLightD + vAttParams.w * fLightD * fLightD); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower) * fAtten; + } +} + +//----------------------------------------------------------------------------- +void FFP_Light_Spot_Diffuse(in mat4 mWorldView, + in vec4 vPos, + in mat4 mWorldViewIT, + in vec3 vNormal, + in vec3 vLightPosView, + in vec3 vNegLightDirView, + in vec4 vAttParams, + in vec3 vSpotParams, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vOut = vBaseColour; + + vec3 vViewPos = (mWorldView * vPos).xyz; + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + vec3 vNormalView = normalize((mWorldViewIT * vec4(vNormal.xyz, 1.0)).xyz); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + float fAtten = 1.0 / (vAttParams.y + vAttParams.z * fLightD + vAttParams.w * fLightD * fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = clamp((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y), 0.0, 1.0); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOut += vDiffuseColour * nDotL * fAtten * fSpotT; + } +} + +//----------------------------------------------------------------------------- +void FFP_Light_Spot_DiffuseSpecular(in mat4 mWorldView, + in vec4 vPos, + in mat4 mWorldViewIT, + in vec3 vNormal, + in vec3 vLightPosView, + in vec3 vNegLightDirView, + in vec4 vAttParams, + in vec3 vSpotParams, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vViewPos = (mWorldView * vPos).xyz; + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + vec3 vNormalView = normalize((mWorldViewIT * vec4(vNormal.xyz, 1.0)).xyz); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vView = -normalize(vViewPos); + vec3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z * fLightD + vAttParams.w * fLightD * fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = clamp((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y), 0.0, 1.0); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten * fSpotT; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower) * fAtten * fSpotT; + } +} diff --git a/bin/media/RTShaderLib/FFPLib_Lighting.hlsl b/bin/media/RTShaderLib/FFPLib_Lighting.hlsl new file mode 100644 index 0000000000..e1a16f149e --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Lighting.hlsl @@ -0,0 +1,225 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Lighting +// Program Desc: Lighting functions of the FFP. +// Program Type: Vertex shader +// Language: HLSL +// Notes: Implements core functions for FFPLighting class. +// based on lighting engine. +// See http://msdn.microsoft.com/en-us/library/bb147178.aspx +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +void FFP_Light_Directional_Diffuse(in float4x4 mWorldViewIT, + in float3 vNormal, + in float3 vNegLightDirView, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + float3 vNormalView = normalize(mul((float3x3)mWorldViewIT, vNormal)); + float nDotL = dot(vNormalView, vNegLightDirView); + + vOut = vBaseColour + vDiffuseColour * saturate(nDotL); +} + + +//----------------------------------------------------------------------------- +void FFP_Light_Directional_DiffuseSpecular(in float4x4 mWorldView, + in float4 vPos, + in float4x4 mWorldViewIT, + in float3 vNormal, + in float3 vNegLightDirView, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vNormalView = normalize(mul((float3x3)mWorldViewIT, vNormal)); + float nDotL = dot(vNormalView, vNegLightDirView); + float3 vView = -normalize(mul(mWorldView, vPos).xyz); + float3 vHalfWay = normalize(vView + vNegLightDirView); + float nDotH = dot(vNormalView, vHalfWay); + + if (nDotL > 0) + { + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower); + } +} + + +//----------------------------------------------------------------------------- +void FFP_Light_Point_Diffuse(in float4x4 mWorldView, + in float4 vPos, + in float4x4 mWorldViewIT, + in float3 vNormal, + in float3 vLightPosView, + in float4 vAttParams, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + vOut = vBaseColour; + + float3 vViewPos = mul(mWorldView, vPos).xyz; + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + float3 vNormalView = normalize(mul((float3x3)mWorldViewIT, vNormal)); + float nDotL = dot(vNormalView, normalize(vLightView)); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOut += vDiffuseColour * nDotL * fAtten; + } +} + +//----------------------------------------------------------------------------- +void FFP_Light_Point_DiffuseSpecular(in float4x4 mWorldView, + in float4 vPos, + in float4x4 mWorldViewIT, + in float3 vNormal, + in float3 vLightPosView, + in float4 vAttParams, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vViewPos = mul(mWorldView, vPos).xyz; + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + + vLightView = normalize(vLightView); + float3 vNormalView = normalize(mul((float3x3)mWorldViewIT, vNormal)); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vView = -normalize(vViewPos); + float3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower) * fAtten; + } +} + +//----------------------------------------------------------------------------- +void FFP_Light_Spot_Diffuse(in float4x4 mWorldView, + in float4 vPos, + in float4x4 mWorldViewIT, + in float3 vNormal, + in float3 vLightPosView, + in float3 vNegLightDirView, + in float4 vAttParams, + in float3 vSpotParams, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + vOut = vBaseColour; + + float3 vViewPos = mul(mWorldView, vPos).xyz; + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + float3 vNormalView = normalize(mul((float3x3)mWorldViewIT, vNormal)); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = saturate((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y)); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOut += vDiffuseColour * nDotL * fAtten * fSpotT; + } +} + +//----------------------------------------------------------------------------- +void FFP_Light_Spot_DiffuseSpecular(in float4x4 mWorldView, + in float4 vPos, + in float4x4 mWorldViewIT, + in float3 vNormal, + in float3 vLightPosView, + in float3 vNegLightDirView, + in float4 vAttParams, + in float3 vSpotParams, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vViewPos = mul(mWorldView, vPos).xyz; + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + float3 vNormalView = normalize(mul((float3x3)mWorldViewIT, vNormal)); + float nDotL = dot(vNormalView, vLightView); + + + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vView = -normalize(vViewPos); + float3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = saturate((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y)); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten * fSpotT; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower) * fAtten * fSpotT; + } +} diff --git a/bin/media/RTShaderLib/FFPLib_Texturing.cg b/bin/media/RTShaderLib/FFPLib_Texturing.cg new file mode 100644 index 0000000000..202062323f --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Texturing.cg @@ -0,0 +1,319 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_TextureStage +// Program Desc: Texture functions of the FFP. +// Program Type: Vertex/Pixel shader +// Language: CG +// Notes: Implements core functions for FFPTexturing class. +// based on texturing operations needed by render system. +// Implements texture coordinate processing: +// see http://msdn.microsoft.com/en-us/library/bb206247.aspx +// Implements texture blending operation: +// see http://msdn.microsoft.com/en-us/library/bb206241.aspx +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +void FFP_TransformTexCoord(in float4x4 m, in float2 v, out float2 vOut) +{ + vOut = mul(m, float4(v, 0, 1)).xy; +} + +//----------------------------------------------------------------------------- +void FFP_TransformTexCoord(in float4x4 m, in float3 v, out float3 vOut) +{ + vOut = mul(m, float4(v, 1)).xyz; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Normal(in float4x4 mWorldIT, + in float4x4 mView, + in float3 vNormal, + out float3 vOut) +{ + float3 vWorldNormal = mul((float3x3)mWorldIT, vNormal); + float3 vViewNormal = mul((float3x3)mView, vWorldNormal); + + vOut = vViewNormal; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Normal(in float4x4 mWorldIT, + in float4x4 mView, + in float4x4 mTexture, + in float3 vNormal, + out float3 vOut) +{ + float3 vWorldNormal = mul((float3x3)mWorldIT, vNormal); + float3 vViewNormal = mul((float3x3)mView, vWorldNormal); + + vOut = mul(mTexture, float4(vViewNormal, 1)).xyz; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Sphere(in float4x4 mWorld, + in float4x4 mView, + in float3 vNormal, + out float2 vOut) +{ + float3 vWorldNormal = mul((float3x3)mWorld, vNormal); + float3 vViewNormal = mul((float3x3)mView, vWorldNormal); + + vOut.x = vViewNormal.x/2 + 0.5; + vOut.y = -vViewNormal.y/2 + 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Sphere(in float4x4 mWorld, + in float4x4 mView, + in float4x4 mTexture, + in float3 vNormal, + out float2 vOut) +{ + float3 vWorldNormal = mul((float3x3)mWorld, vNormal); + float3 vViewNormal = mul((float3x3)mView, vWorldNormal); + float2 vSphereCoords; + + vSphereCoords.x = vViewNormal.x/2 + 0.5; + vSphereCoords.y = -vViewNormal.y/2 + 0.5; + + vOut = mul(mTexture, float4(vSphereCoords, 0, 0)).xy; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Reflect(in float4x4 mWorld, + in float4x4 mWorldIT, + in float4x4 mView, + in float3 vNormal, + in float4 vPos, + out float3 vOut) +{ + mView[2][0] = -mView[2][0]; + mView[2][1] = -mView[2][1]; + mView[2][2] = -mView[2][2]; + mView[2][3] = -mView[2][3]; + + float4x4 matViewT = transpose(mView); + + float3 vWorldNormal = mul((float3x3)mWorldIT, vNormal); + float3 vViewNormal = mul((float3x3)mView, vWorldNormal); + float4 vWorldPos = mul(mWorld, vPos); + float3 vNormViewPos = normalize(mul(mView, vWorldPos).xyz); + + float3 vReflect = reflect(vNormViewPos, vViewNormal); + + matViewT[2][0] = -matViewT[2][0]; + matViewT[2][1] = -matViewT[2][1]; + matViewT[2][2] = -matViewT[2][2]; + vReflect = mul((float3x3)matViewT, vReflect); + + vOut = vReflect; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Reflect(in float4x4 mWorld, + in float4x4 mWorldIT, + in float4x4 mView, + in float4x4 mTexture, + in float3 vNormal, + in float4 vPos, + out float3 vOut) +{ + mView[2][0] = -mView[2][0]; + mView[2][1] = -mView[2][1]; + mView[2][2] = -mView[2][2]; + mView[2][3] = -mView[2][3]; + + float4x4 matViewT = transpose(mView); + + float3 vWorldNormal = mul((float3x3)mWorldIT, vNormal); + float3 vViewNormal = mul((float3x3)mView, vWorldNormal); + float4 vWorldPos = mul(mWorld, vPos); + float3 vNormViewPos = normalize(mul(mView, vWorldPos).xyz); + + float3 vReflect = reflect(vNormViewPos, vViewNormal); + + matViewT[2][0] = -matViewT[2][0]; + matViewT[2][1] = -matViewT[2][1]; + matViewT[2][2] = -matViewT[2][2]; + vReflect = mul((float3x3)matViewT, vReflect); + + vReflect = mul(mTexture, float4(vReflect,1)).xyz; + + vOut = vReflect; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_Projection(in float4x4 mWorld, + in float4x4 mTexViewProjImage, + in float4 vPos, + out float3 vOut) +{ + float4 vWorldPos = mul(mWorld, vPos); + float4 vTexturePos = mul(mTexViewProjImage, vWorldPos); + + vOut = float3(vTexturePos.xy, vTexturePos.w); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler1D s, + in float f, + out float4 t) +{ + t = tex1D(s, f); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler2D s, + in float2 f, + out float4 t) +{ + t = tex2D(s, f); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTextureProj(in sampler2D s, + in float3 f, + out float4 t) +{ + t = tex2D(s, f.xy/f.z); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler3D s, + in float3 f, + out float4 t) +{ + t = tex3D(s, f); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in samplerCUBE s, + in float3 f, + out float4 t) +{ + t = texCUBE(s, f); +} + + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 * vIn1 * 2; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 * vIn1 * 2; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 * vIn1 * 2; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 * vIn1 * 2; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 * vIn1 * 4; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 * vIn1 * 4; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 * vIn1 * 4; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 * vIn1 * 4; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} diff --git a/bin/media/RTShaderLib/FFPLib_Texturing.glsl b/bin/media/RTShaderLib/FFPLib_Texturing.glsl new file mode 100644 index 0000000000..de76ec53b3 --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Texturing.glsl @@ -0,0 +1,334 @@ +#version 120 +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_TextureStage +// Program Desc: Texture functions of the FFP. +// Program Type: Vertex/Pixel shader +// Language: GLSL +// Notes: Implements core functions for FFPTexturing class. +// based on texturing operations needed by render system. +// Implements texture coordinate processing: +// see http://msdn.microsoft.com/en-us/library/bb206247.aspx +// Implements texture blending operation: +// see http://msdn.microsoft.com/en-us/library/bb206241.aspx +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +void FFP_TransformTexCoord(in mat4 m, in vec2 v, out vec2 vOut) +{ + vOut = (m * vec4(v, 1.0, 1.0)).xy; +} +//----------------------------------------------------------------------------- +void FFP_TransformTexCoord(in mat4 m, in vec4 v, out vec2 vOut) +{ + vOut = (m * v).xy; +} + +//----------------------------------------------------------------------------- +void FFP_TransformTexCoord(in mat4 m, in vec3 v, out vec3 vOut) +{ + vOut = (m * vec4(v, 1.0)).xyz; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Normal(in mat4 mWorldIT, + in mat4 mView, + in vec3 vNormal, + out vec3 vOut) +{ + vec3 vWorldNormal = (mWorldIT * vec4(vNormal, 1.0)).xyz; + vec3 vViewNormal = (mView * vec4(vWorldNormal, 1.0)).xyz; + + vOut = vViewNormal; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Normal(in mat4 mWorldIT, + in mat4 mView, + in mat4 mTexture, + in vec3 vNormal, + out vec3 vOut) +{ + vec3 vWorldNormal = (mWorldIT * vec4(vNormal, 1.0)).xyz; + vec3 vViewNormal = (mView * vec4(vWorldNormal, 1.0)).xyz; + + vOut = (mTexture * vec4(vViewNormal, 1.0)).xyz; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Sphere(in mat4 mWorld, + in mat4 mView, + in vec3 vNormal, + out vec2 vOut) +{ + vec3 vWorldNormal = (mWorld * vec4(vNormal, 1.0)).xyz; + vec3 vViewNormal = (mView * vec4(vWorldNormal, 1.0)).xyz; + + vOut.x = vViewNormal.x/2.0 + 0.5; + vOut.y = -vViewNormal.y/2.0 + 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Sphere(in mat4 mWorld, + in mat4 mView, + in mat4 mTexture, + in vec3 vNormal, + out vec2 vOut) +{ + vec3 vWorldNormal = (mWorld* vec4(vNormal, 1.0)).xyz; + vec3 vViewNormal = (mView * vec4(vWorldNormal, 1.0)).xyz; + + vec2 vSphereCoords; + + vSphereCoords.x = vViewNormal.x/2.0 + 0.5; + vSphereCoords.y = -vViewNormal.y/2.0 + 0.5; + + vOut = (mTexture * vec4(vSphereCoords, 0.0, 0.0)).xy; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Reflect(in mat4 mWorld, + in mat4 mWorldIT, + in mat4 mView, + in vec3 vNormal, + in vec4 vPos, + out vec3 vOut) +{ + mView[0][2] = -mView[0][2]; + mView[1][2] = -mView[1][2]; + mView[2][2] = -mView[2][2]; + mView[3][2] = -mView[3][2]; + + mat4 matViewT = transpose(mView); + + vec3 vWorldNormal = (mWorldIT * vec4(vNormal, 0.0)).xyz; + vec3 vViewNormal = (mView * vec4(vWorldNormal, 0.0)).xyz; + vec4 vWorldPos = mWorld * vPos; + vec3 vNormViewPos = normalize((mView * vWorldPos).xyz); + + vec3 vReflect = reflect(vNormViewPos, vViewNormal); + + matViewT[0][2] = -matViewT[0][2]; + matViewT[1][2] = -matViewT[1][2]; + matViewT[2][2] = -matViewT[2][2]; + vReflect = (matViewT * vec4(vReflect, 1.0)).xyz; + + vOut = vReflect; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Reflect(in mat4 mWorld, + in mat4 mWorldIT, + in mat4 mView, + in mat4 mTexture, + in vec3 vNormal, + in vec4 vPos, + out vec3 vOut) +{ + mView[0][2] = -mView[0][2]; + mView[1][2] = -mView[1][2]; + mView[2][2] = -mView[2][2]; + mView[3][2] = -mView[3][2]; + + mat4 matViewT = transpose(mView); + + vec3 vWorldNormal = (mWorldIT * vec4(vNormal, 0.0)).xyz; + vec3 vViewNormal = (mView * vec4(vWorldNormal, 0.0)).xyz; + vec4 vWorldPos = mWorld * vPos; + vec3 vNormViewPos = normalize((mView * vWorldPos).xyz); + + vec3 vReflect = reflect(vNormViewPos, vViewNormal); + + matViewT[0][2] = -matViewT[0][2]; + matViewT[1][2] = -matViewT[1][2]; + matViewT[2][2] = -matViewT[2][2]; + vReflect = (matViewT * vec4(vReflect, 1.0)).xyz; + + vReflect = (mTexture * vec4(vReflect, 1.0)).xyz; + + vOut = vReflect; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_Projection(in mat4 mWorld, + in mat4 mTexViewProjImage, + in vec4 vPos, + out vec3 vOut) +{ + vec4 vWorldPos = mWorld * vPos; + vec4 vTexturePos = mTexViewProjImage * vWorldPos; + + vOut = vTexturePos.xyw; +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler1D s, + in float f, + out vec4 t) +{ + t = texture1D(s, f); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler2D s, + in vec2 f, + out vec4 t) +{ + t = texture2D (s, f); +} +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler2D s, + in vec4 f, + out vec4 t) +{ + t = texture2D (s, vec2(f.xy)); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTextureProj(in sampler2D s, + in vec3 f, + out vec4 t) +{ + t = texture2D(s, f.xy/f.z); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler3D s, + in vec3 f, + out vec4 t) +{ + t = texture3D(s, f); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in samplerCube s, + in vec3 f, + out vec4 t) +{ + t = textureCube(s, f); +} + + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 * vIn1 * 2.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 * vIn1 * 2.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 * vIn1 * 2.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 * vIn1 * 2.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 * vIn1 * 4.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 * vIn1 * 4.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 * vIn1 * 4.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 * vIn1 * 4.0; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + diff --git a/bin/media/RTShaderLib/FFPLib_Texturing.glsles b/bin/media/RTShaderLib/FFPLib_Texturing.glsles new file mode 100644 index 0000000000..5184ab7b8e --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Texturing.glsles @@ -0,0 +1,355 @@ +#version 100 +precision highp float; +precision highp int; +precision lowp sampler2D; +precision lowp samplerCube; +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Texturing +// Program Desc: Texture functions of the FFP. +// Program Type: Vertex/Pixel shader +// Language: GLSL ES +// Notes: Implements core functions for FFPTexturing class. +// based on texturing operations needed by render system. +// Implements texture coordinate processing: +// see http://msdn.microsoft.com/en-us/library/bb206247.aspx +// Implements texture blending operation: +// see http://msdn.microsoft.com/en-us/library/bb206241.aspx +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void FFP_TransformTexCoord(in mat4 m, in vec2 v, out vec2 vOut) +{ + vOut = (m * vec4(v, 1.0, 1.0)).xy; +} +//----------------------------------------------------------------------------- +void FFP_TransformTexCoord(in mat4 m, in vec4 v, out vec2 vOut) +{ + vOut = (m * v).xy; +} + +//----------------------------------------------------------------------------- +void FFP_TransformTexCoord(in mat4 m, in vec3 v, out vec3 vOut) +{ + vOut = (m * vec4(v, 1.0)).xyz; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Normal(in mat4 mWorldIT, + in mat4 mView, + in vec3 vNormal, + out vec3 vOut) +{ + vec3 vWorldNormal = (mWorldIT * vec4(vNormal, 1.0)).xyz; + vec3 vViewNormal = (mView * vec4(vWorldNormal, 1.0)).xyz; + + vOut = vViewNormal; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Normal(in mat4 mWorldIT, + in mat4 mView, + in mat4 mTexture, + in vec3 vNormal, + out vec3 vOut) +{ + vec3 vWorldNormal = (mWorldIT * vec4(vNormal, 1.0)).xyz; + vec3 vViewNormal = (mView * vec4(vWorldNormal, 1.0)).xyz; + + vOut = (mTexture * vec4(vViewNormal, 1.0)).xyz; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Sphere(in mat4 mWorld, + in mat4 mView, + in vec3 vNormal, + out vec2 vOut) +{ + vec3 vWorldNormal = (mWorld * vec4(vNormal, 1.0)).xyz; + vec3 vViewNormal = (mView * vec4(vWorldNormal, 1.0)).xyz; + + vOut.x = vViewNormal.x/2.0 + 0.5; + vOut.y = -vViewNormal.y/2.0 + 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Sphere(in mat4 mWorld, + in mat4 mView, + in mat4 mTexture, + in vec3 vNormal, + out vec2 vOut) +{ + vec3 vWorldNormal = (mWorld * vec4(vNormal, 1.0)).xyz; + vec3 vViewNormal = (mView * vec4(vWorldNormal, 1.0)).xyz; + + vec2 vSphereCoords; + + vSphereCoords.x = vViewNormal.x/2.0 + 0.5; + vSphereCoords.y = -vViewNormal.y/2.0 + 0.5; + + vOut = (mTexture * vec4(vSphereCoords, 0.0, 0.0)).xy; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Reflect(in mat4 mWorld, + in mat4 mWorldIT, + in mat4 mView, + in vec3 vNormal, + in vec4 vPos, + out vec3 vOut) +{ + mat4 matViewT; + + matViewT[0][0] = mView[0][0]; + matViewT[1][0] = mView[0][1]; + matViewT[2][0] = mView[0][2]; + matViewT[3][0] = mView[0][3]; + + matViewT[0][1] = mView[1][0]; + matViewT[1][1] = mView[1][1]; + matViewT[2][1] = mView[1][2]; + matViewT[3][1] = mView[1][3]; + + matViewT[0][2] = mView[2][0]; + matViewT[1][2] = mView[2][1]; + matViewT[2][2] = mView[2][2]; + matViewT[3][2] = mView[2][3]; + + matViewT[0][3] = mView[3][0]; + matViewT[1][3] = mView[3][1]; + matViewT[2][3] = mView[3][2]; + matViewT[3][3] = mView[3][3]; + + vec3 vWorldNormal = (mWorldIT * vec4(vNormal, 0.0)).xyz; + vec3 vViewNormal = (mView * vec4(vWorldNormal, 0.0)).xyz; + vec4 vWorldPos = mWorld * vPos; + vec3 vNormViewPos = normalize((mView * vWorldPos).xyz); + + vec3 vReflect = reflect(vNormViewPos, vViewNormal); + + matViewT[0][2] = -matViewT[0][2]; + matViewT[1][2] = -matViewT[1][2]; + matViewT[2][2] = -matViewT[2][2]; + vReflect = (matViewT * vec4(vReflect, 1.0)).xyz; + + vOut = vReflect; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Reflect(in mat4 mWorld, + in mat4 mWorldIT, + in mat4 mView, + in mat4 mTexture, + in vec3 vNormal, + in vec4 vPos, + out vec3 vOut) +{ + mat4 matViewT; + matViewT[0][0] = mView[0][0]; + matViewT[1][0] = mView[0][1]; + matViewT[2][0] = mView[0][2]; + matViewT[3][0] = mView[0][3]; + + matViewT[0][1] = mView[1][0]; + matViewT[1][1] = mView[1][1]; + matViewT[2][1] = mView[1][2]; + matViewT[3][1] = mView[1][3]; + + matViewT[0][2] = mView[2][0]; + matViewT[1][2] = mView[2][1]; + matViewT[2][2] = mView[2][2]; + matViewT[3][2] = mView[2][3]; + + matViewT[0][3] = mView[3][0]; + matViewT[1][3] = mView[3][1]; + matViewT[2][3] = mView[3][2]; + matViewT[3][3] = mView[3][3]; + + vec3 vWorldNormal = (mWorldIT * vec4(vNormal, 0.0)).xyz; + vec3 vViewNormal = (mView * vec4(vWorldNormal, 0.0)).xyz; + vec4 vWorldPos = mWorld * vPos; + vec3 vNormViewPos = normalize((mView * vWorldPos).xyz); + + vec3 vReflect = reflect(vNormViewPos, vViewNormal); + + matViewT[0][2] = -matViewT[0][2]; + matViewT[1][2] = -matViewT[1][2]; + matViewT[2][2] = -matViewT[2][2]; + vReflect = (matViewT * vec4(vReflect, 1.0)).xyz; + + vReflect = (mTexture * vec4(vReflect, 1.0)).xyz; + + vOut = vReflect; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_Projection(in mat4 mWorld, + in mat4 mTexViewProjImage, + in vec4 vPos, + out vec3 vOut) +{ + vOut = (mTexViewProjImage * (mWorld * vPos)).xyw; +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler2D s, + in float f, + out vec4 t) +{ + t = texture2D(s, vec2(f)); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler2D s, + in vec2 f, + out vec4 t) +{ + t = texture2D(s, f); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler2D s, + in vec4 f, + out vec4 t) +{ + t = texture2D(s, vec2(f.xy)); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTextureProj(in sampler2D s, + in vec3 f, + out vec4 t) +{ + t = texture2D(s, f.xy / f.z); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in samplerCube s, + in vec3 f, + out vec4 t) +{ + t = textureCube(s, f); +} + + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 * vIn1 * 2.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 * vIn1 * 2.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 * vIn1 * 2.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 * vIn1 * 2.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 * vIn1 * 4.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 * vIn1 * 4.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 * vIn1 * 4.0; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 * vIn1 * 4.0; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in vec2 vIn0, in vec2 vIn1, out vec2 vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in vec3 vIn0, in vec3 vIn1, out vec3 vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in vec4 vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} diff --git a/bin/media/RTShaderLib/FFPLib_Texturing.hlsl b/bin/media/RTShaderLib/FFPLib_Texturing.hlsl new file mode 100644 index 0000000000..a44b0b9c51 --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Texturing.hlsl @@ -0,0 +1,319 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_TextureStage +// Program Desc: Texture functions of the FFP. +// Program Type: Vertex/Pixel shader +// Language: HLSL +// Notes: Implements core functions for FFPTexturing class. +// based on texturing operations needed by render system. +// Implements texture coordinate processing: +// see http://msdn.microsoft.com/en-us/library/bb206247.aspx +// Implements texture blending operation: +// see http://msdn.microsoft.com/en-us/library/bb206241.aspx +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +void FFP_TransformTexCoord(in float4x4 m, in float2 v, out float2 vOut) +{ + vOut = mul(m, float4(v, 0, 1)).xy; +} + +//----------------------------------------------------------------------------- +void FFP_TransformTexCoord(in float4x4 m, in float3 v, out float3 vOut) +{ + vOut = mul(m, float4(v, 1)).xyz; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Normal(in float4x4 mWorldIT, + in float4x4 mView, + in float3 vNormal, + out float3 vOut) +{ + float3 vWorldNormal = mul((float3x3)mWorldIT, vNormal); + float3 vViewNormal = mul((float3x3)mView, vWorldNormal); + + vOut = vViewNormal; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Normal(in float4x4 mWorldIT, + in float4x4 mView, + in float4x4 mTexture, + in float3 vNormal, + out float3 vOut) +{ + float3 vWorldNormal = mul((float3x3)mWorldIT, vNormal); + float3 vViewNormal = mul((float3x3)mView, vWorldNormal); + + vOut = mul(mTexture, float4(vViewNormal, 1)).xyz; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Sphere(in float4x4 mWorld, + in float4x4 mView, + in float3 vNormal, + out float2 vOut) +{ + float3 vWorldNormal = mul((float3x3)mWorld, vNormal); + float3 vViewNormal = mul((float3x3)mView, vWorldNormal); + + vOut.x = vViewNormal.x/2 + 0.5; + vOut.y = -vViewNormal.y/2 + 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Sphere(in float4x4 mWorld, + in float4x4 mView, + in float4x4 mTexture, + in float3 vNormal, + out float2 vOut) +{ + float3 vWorldNormal = mul((float3x3)mWorld, vNormal); + float3 vViewNormal = mul((float3x3)mView, vWorldNormal); + float2 vSphereCoords; + + vSphereCoords.x = vViewNormal.x/2 + 0.5; + vSphereCoords.y = -vViewNormal.y/2 + 0.5; + + vOut = mul(mTexture, float4(vSphereCoords, 0, 0)).xy; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Reflect(in float4x4 mWorld, + in float4x4 mWorldIT, + in float4x4 mView, + in float3 vNormal, + in float4 vPos, + out float3 vOut) +{ + mView[2][0] = -mView[2][0]; + mView[2][1] = -mView[2][1]; + mView[2][2] = -mView[2][2]; + mView[2][3] = -mView[2][3]; + + float4x4 matViewT = transpose(mView); + + float3 vWorldNormal = mul((float3x3)mWorldIT, vNormal); + float3 vViewNormal = mul((float3x3)mView, vWorldNormal); + float4 vWorldPos = mul(mWorld, vPos); + float3 vNormViewPos = normalize(mul(mView, vWorldPos).xyz); + + float3 vReflect = reflect(vNormViewPos, vViewNormal); + + matViewT[2][0] = -matViewT[2][0]; + matViewT[2][1] = -matViewT[2][1]; + matViewT[2][2] = -matViewT[2][2]; + vReflect = mul((float3x3)matViewT, vReflect); + + vOut = vReflect; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_EnvMap_Reflect(in float4x4 mWorld, + in float4x4 mWorldIT, + in float4x4 mView, + in float4x4 mTexture, + in float3 vNormal, + in float4 vPos, + out float3 vOut) +{ + mView[2][0] = -mView[2][0]; + mView[2][1] = -mView[2][1]; + mView[2][2] = -mView[2][2]; + mView[2][3] = -mView[2][3]; + + float4x4 matViewT = transpose(mView); + + float3 vWorldNormal = mul((float3x3)mWorldIT, vNormal); + float3 vViewNormal = mul((float3x3)mView, vWorldNormal); + float4 vWorldPos = mul(mWorld, vPos); + float3 vNormViewPos = normalize(mul(mView, vWorldPos).xyz); + + float3 vReflect = reflect(vNormViewPos, vViewNormal); + + matViewT[2][0] = -matViewT[2][0]; + matViewT[2][1] = -matViewT[2][1]; + matViewT[2][2] = -matViewT[2][2]; + vReflect = mul((float3x3)matViewT, vReflect); + + vReflect = mul(mTexture, float4(vReflect,1)).xyz; + + vOut = vReflect; +} + +//----------------------------------------------------------------------------- +void FFP_GenerateTexCoord_Projection(in float4x4 mWorld, + in float4x4 mTexViewProjImage, + in float4 vPos, + out float3 vOut) +{ + float4 vWorldPos = mul(mWorld, vPos); + float4 vTexturePos = mul(mTexViewProjImage, vWorldPos); + + vOut = float3(vTexturePos.xy, vTexturePos.w); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler1D s, + in float f, + out float4 t) +{ + t = tex1D(s, f); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler2D s, + in float2 f, + out float4 t) +{ + t = tex2D(s, f); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTextureProj(in sampler2D s, + in float3 f, + out float4 t) +{ + t = tex2D(s, f.xy/f.z); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in sampler3D s, + in float3 f, + out float4 t) +{ + t = tex3D(s, f); +} + +//----------------------------------------------------------------------------- +void FFP_SampleTexture(in samplerCUBE s, + in float3 f, + out float4 t) +{ + t = texCUBE(s, f); +} + + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 * vIn1 * 2; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 * vIn1 * 2; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 * vIn1 * 2; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX2(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 * vIn1 * 2; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 * vIn1 * 4; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 * vIn1 * 4; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 * vIn1 * 4; +} + +//----------------------------------------------------------------------------- +void FFP_ModulateX4(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 * vIn1 * 4; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSigned(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 + vIn1 - 0.5; +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in float vIn0, in float vIn1, out float vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in float2 vIn0, in float2 vIn1, out float2 vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in float3 vIn0, in float3 vIn1, out float3 vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} + +//----------------------------------------------------------------------------- +void FFP_AddSmooth(in float4 vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 + vIn1 - (vIn0 * vIn1); +} diff --git a/bin/media/RTShaderLib/FFPLib_Transform.cg b/bin/media/RTShaderLib/FFPLib_Transform.cg new file mode 100644 index 0000000000..c42466a7b1 --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Transform.cg @@ -0,0 +1,78 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Transform +// Program Desc: Transform functions of the FFP. +// Program Type: Vertex shader +// Language: CG +// Notes: Implements core functions for FFPTransform class. +// based on transform engine. +// See http://msdn.microsoft.com/en-us/library/bb206269.aspx +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void FFP_Transform(in float3x3 m, + in float3 v, + out float3 vOut) +{ + vOut = mul(m, v); +} +//----------------------------------------------------------------------------- +void FFP_Transform(in float4x4 m, + in float4 v, + out float4 vOut) +{ + vOut = mul(m, v); +} +//----------------------------------------------------------------------------- +#ifndef OPENGL_ES_2 + +//----------------------------------------------------------------------------- +void FFP_Transform(in float3x4 m, + in float4 v, + out float3 vOut) +{ + vOut = mul(m, v); +} + +//----------------------------------------------------------------------------- +void FFP_Transform(in float3x4 m, + in float3 v, + out float3 vOut) +{ + vOut = mul((float3x3)m, v); +} +//----------------------------------------------------------------------------- +#endif +//----------------------------------------------------------------------------- +void FFP_Transform(in float4x4 m, + in float3 v, + out float3 vOut) +{ + vOut = mul((float3x3)m, v); +} diff --git a/bin/media/RTShaderLib/FFPLib_Transform.glsl b/bin/media/RTShaderLib/FFPLib_Transform.glsl new file mode 100644 index 0000000000..43976dae41 --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Transform.glsl @@ -0,0 +1,71 @@ +#version 120 +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Transform +// Program Desc: Transform functions of the FFP. +// Program Type: Vertex shader +// Language: GLSL +// Notes: Implements core functions for FFPTransform class. +// based on transform engine. +// See http://msdn.microsoft.com/en-us/library/bb206269.aspx +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +void FFP_Transform(in mat4 m, + in vec4 v, + out vec4 vOut) +{ + vOut = m * v; +} + +//----------------------------------------------------------------------------- +void FFP_Transform(in mat4 m, + in vec4 v, + out vec3 vOut) +{ + vOut = (m * v).xyz; +} + +//----------------------------------------------------------------------------- +void FFP_Transform(in mat3x4 m, + in vec3 v, + out vec3 vOut) +{ + vOut = mat3(m) * v; +} + + +//----------------------------------------------------------------------------- +void FFP_Transform(in mat4 m, + in vec3 v, + out vec3 vOut) +{ + vOut = mat3(m) * v; +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/FFPLib_Transform.glsles b/bin/media/RTShaderLib/FFPLib_Transform.glsles new file mode 100644 index 0000000000..3fd849f12c --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Transform.glsles @@ -0,0 +1,65 @@ +#version 100 +precision highp float; +precision highp int; +precision lowp sampler2D; +precision lowp samplerCube; +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Transform +// Program Desc: Transform functions of the FFP. +// Program Type: Vertex shader +// Language: GLSL ES +// Notes: Implements core functions for FFPTransform class. +// based on transform engine. +// See http://msdn.microsoft.com/en-us/library/bb206269.aspx +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void FFP_Transform(in mat4 m, + in vec4 v, + out vec4 vOut) +{ + vOut = m * v; +} + +//----------------------------------------------------------------------------- +void FFP_Transform(in mat4 m, + in vec4 v, + out vec3 vOut) +{ + vOut = (m * v).xyz; +} + +//----------------------------------------------------------------------------- +void FFP_Transform(in mat4 m, + in vec3 v, + out vec3 vOut) +{ + vOut = mat3(m) * v; +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/FFPLib_Transform.hlsl b/bin/media/RTShaderLib/FFPLib_Transform.hlsl new file mode 100644 index 0000000000..36b9bcccb5 --- /dev/null +++ b/bin/media/RTShaderLib/FFPLib_Transform.hlsl @@ -0,0 +1,71 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: FFPLib_Transform +// Program Desc: Transform functions of the FFP. +// Program Type: Vertex shader +// Language: HLSL +// Notes: Implements core functions for FFPTransform class. +// based on transform engine. +// See http://msdn.microsoft.com/en-us/library/bb206269.aspx +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +void FFP_Transform(in float4x4 m, + in float4 v, + out float4 vOut) +{ + vOut = mul(m, v); +} + +//----------------------------------------------------------------------------- +void FFP_Transform(in float3x4 m, + in float4 v, + out float3 vOut) +{ + vOut = mul(m, v); +} + +//----------------------------------------------------------------------------- +void FFP_Transform(in float3x4 m, + in float3 v, + out float3 vOut) +{ + vOut = mul((float3x3)m, v); +} + +//----------------------------------------------------------------------------- +void FFP_Transform(in float4x4 m, + in float3 v, + out float3 vOut) +{ + vOut = mul((float3x3)m, v); +} + + diff --git a/bin/media/RTShaderLib/SGXLib_DualQuaternion.cg b/bin/media/RTShaderLib/SGXLib_DualQuaternion.cg new file mode 100644 index 0000000000..5778cb5ad4 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_DualQuaternion.cg @@ -0,0 +1,130 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//These functions are based on dqs.cg from http://isg.cs.tcd.ie/kavanl/dq/ +/* dqs.cg + + Dual quaternion skinning vertex shaders (no shading computations) + + Version 1.0.3, November 1st, 2007 + + Copyright (C) 2006-2007 University of Dublin, Trinity College, All Rights + Reserved + + This software is provided 'as-is', without any express or implied + warranty. In no event will the author(s) be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Author: Ladislav Kavan, kavanl@cs.tcd.ie + +*/ + +//----------------------------------------------------------------------------- +// Program Name: SGXLib_DualQuaternion +// Program Desc: Dual quaternion skinning functions. +// Program Type: Vertex shader +// Language: CG +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_BlendWeight(in float blendWgt, in float2x4 dualQuaternion, out float2x4 vOut) +{ + vOut = blendWgt*dualQuaternion; +} + +//----------------------------------------------------------------------------- +void SGX_BlendWeight(in float blendWgt, in float3x4 scaleShearMatrix, out float3x4 vOut) +{ + vOut = blendWgt*scaleShearMatrix; +} + +//----------------------------------------------------------------------------- +void SGX_AntipodalityAdjustment(in float2x4 dq0, in float2x4 dq1, out float2x4 dq2) +{ + //Accurate antipodality handling. For speed increase, remove the following line, + //though, the results will only be valid for rotations less than 180 degrees. + dq2 = (dot(dq0[0], dq1[0]) < 0.0) ? dq1 * -1.0 : dq1; +} + +//----------------------------------------------------------------------------- +void SGX_CalculateBlendPosition(in float3 position, in float2x4 blendDQ, out float4 vOut) +{ + float3 blendPosition = position + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, position) + blendDQ[0].x*position); + float3 trans = 2.0*(blendDQ[0].x*blendDQ[1].yzw - blendDQ[1].x*blendDQ[0].yzw + cross(blendDQ[0].yzw, blendDQ[1].yzw)); + blendPosition += trans; + + vOut = float4(blendPosition, 1.0); +} + +//----------------------------------------------------------------------------- +void SGX_CalculateBlendNormal(in float3 vIn, in float2x4 blendDQ, out float3 vOut) +{ + vOut = (vIn + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, vIn) + blendDQ[0].x*vIn)); +} + +//----------------------------------------------------------------------------- +void SGX_NormalizeDualQuaternion(inout float2x4 dq) +{ + dq /= length(dq[0]); +} + +//----------------------------------------------------------------------------- +void SGX_AdjointTransposeMatrix(in float3x4 M, out float3x3 vOut) +{ + float3x3 atM; + atM._m00 = M._m22 * M._m11 - M._m12 * M._m21; + atM._m01 = M._m12 * M._m20 - M._m10 * M._m22; + atM._m02 = M._m10 * M._m21 - M._m20 * M._m11; + + atM._m10 = M._m02 * M._m21 - M._m22 * M._m01; + atM._m11 = M._m22 * M._m00 - M._m02 * M._m20; + atM._m12 = M._m20 * M._m01 - M._m00 * M._m21; + + atM._m20 = M._m12 * M._m01 - M._m02 * M._m11; + atM._m21 = M._m10 * M._m02 - M._m12 * M._m00; + atM._m22 = M._m00 * M._m11 - M._m10 * M._m01; + + vOut = atM; +} + +//----------------------------------------------------------------------------- +void SGX_BuildDualQuaternionMatrix(in float4 r1, in float4 r2, out float2x4 vOut) +{ + vOut = float2x4(r1, r2); +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SGXLib_DualQuaternion.glsl b/bin/media/RTShaderLib/SGXLib_DualQuaternion.glsl new file mode 100644 index 0000000000..ee4c6c8b99 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_DualQuaternion.glsl @@ -0,0 +1,132 @@ +#version 120 + +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//These functions are based on dqs.cg from http://isg.cs.tcd.ie/kavanl/dq/ +/* dqs.cg + + Dual quaternion skinning vertex shaders (no shading computations) + + Version 1.0.3, November 1st, 2007 + + Copyright (C) 2006-2007 University of Dublin, Trinity College, All Rights + Reserved + + This software is provided 'as-is', without any express or implied + warranty. In no event will the author(s) be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Author: Ladislav Kavan, kavanl@cs.tcd.ie + +*/ + +//----------------------------------------------------------------------------- +// Program Name: SGXLib_DualQuaternion +// Program Desc: Dual quaternion skinning functions. +// Program Type: Vertex shader +// Language: GLSL +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_BlendWeight(in float blendWgt, in mat2x4 dualQuaternion, out mat2x4 vOut) +{ + vOut = blendWgt*dualQuaternion; +} + +//----------------------------------------------------------------------------- +void SGX_BlendWeight(in float blendWgt, in mat3x4 scaleShearMatrix, out mat3x4 vOut) +{ + vOut = blendWgt*scaleShearMatrix; +} + +//----------------------------------------------------------------------------- +void SGX_AntipodalityAdjustment(in mat2x4 dq0, in mat2x4 dq1,out mat2x4 dq2) +{ + //Accurate antipodality handling. For speed increase, remove the following line, + //though, the results will only be valid for rotations less than 180 degrees. + dq2 = (dot(dq0[0], dq1[0]) < 0.0) ? dq1 * -1.0 : dq1; +} + +//----------------------------------------------------------------------------- +void SGX_CalculateBlendPosition(in vec3 position, in mat2x4 blendDQ, out vec4 vOut) +{ + vec3 blendPosition = position + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, position) + blendDQ[0].x*position); + vec3 trans = 2.0*(blendDQ[0].x*blendDQ[1].yzw - blendDQ[1].x*blendDQ[0].yzw + cross(blendDQ[0].yzw, blendDQ[1].yzw)); + blendPosition += trans; + + vOut = vec4(blendPosition, 1.0); +} + +//----------------------------------------------------------------------------- +void SGX_CalculateBlendNormal(in vec3 normal, in mat2x4 blendDQ, out vec3 vOut) +{ + vOut = normal + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, normal) + blendDQ[0].x*normal); +} + +//----------------------------------------------------------------------------- +void SGX_NormalizeDualQuaternion(inout mat2x4 dq) +{ + dq /= length(dq[0]); +} + +//----------------------------------------------------------------------------- +void SGX_AdjointTransposeMatrix(in mat3x3 M, out mat3x3 vOut) +{ + mat3x3 atM; + atM._m00 = M._m22 * M._m11 - M._m12 * M._m21; + atM._m01 = M._m12 * M._m20 - M._m10 * M._m22; + atM._m02 = M._m10 * M._m21 - M._m20 * M._m11; + + atM._m10 = M._m02 * M._m21 - M._m22 * M._m01; + atM._m11 = M._m22 * M._m00 - M._m02 * M._m20; + atM._m12 = M._m20 * M._m01 - M._m00 * M._m21; + + atM._m20 = M._m12 * M._m01 - M._m02 * M._m11; + atM._m21 = M._m10 * M._m02 - M._m12 * M._m00; + atM._m22 = M._m00 * M._m11 - M._m10 * M._m01; + + vOut = atM; +} + +//----------------------------------------------------------------------------- +void SGX_BuildDualQuaternionMatrix(in vec4 r1, in vec4 r2, out mat2x4 vOut) +{ + vOut = mat2x4(r1, r2); +} diff --git a/bin/media/RTShaderLib/SGXLib_IntegratedPSSM.cg b/bin/media/RTShaderLib/SGXLib_IntegratedPSSM.cg new file mode 100644 index 0000000000..503359ef6a --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_IntegratedPSSM.cg @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------------- +// Program Name: SGXLib_IntegratedPSSM +// Program Desc: Integrated PSSM functions. +// Program Type: Vertex/Pixel shader +// Language: CG +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_CopyDepth(in float4 clipSpacePos, + out float oDepth) +{ + oDepth = clipSpacePos.z; +} + +//----------------------------------------------------------------------------- +void SGX_ModulateScalar(in float vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void SGX_ApplyShadowFactor_Diffuse(in float4 ambient, + in float4 lightSum, + in float fShadowFactor, + out float4 oLight) +{ + oLight.rgb = ambient.rgb + (lightSum.rgb - ambient.rgb) * fShadowFactor; + oLight.a = lightSum.a; +} + +//----------------------------------------------------------------------------- +float _SGX_ShadowPCF4(sampler2D shadowMap, float4 shadowMapPos, float2 offset) +{ + shadowMapPos = shadowMapPos / shadowMapPos.w; + float2 uv = shadowMapPos.xy; + float3 o = float3(offset, -offset.x) * 0.3f; + + // Note: We using 2x2 PCF. Good enough and is a lot faster. + float c = (shadowMapPos.z <= tex2D(shadowMap, uv.xy - o.xy).r) ? 1 : 0; // top left + c += (shadowMapPos.z <= tex2D(shadowMap, uv.xy + o.xy).r) ? 1 : 0; // bottom right + c += (shadowMapPos.z <= tex2D(shadowMap, uv.xy + o.zy).r) ? 1 : 0; // bottom left + c += (shadowMapPos.z <= tex2D(shadowMap, uv.xy - o.zy).r) ? 1 : 0; // top right + + return c / 4; +} + +//----------------------------------------------------------------------------- +void SGX_ComputeShadowFactor_PSSM3(in float fDepth, + in float4 vSplitPoints, + in float4 lightPosition0, + in float4 lightPosition1, + in float4 lightPosition2, + in sampler2D shadowMap0, + in sampler2D shadowMap1, + in sampler2D shadowMap2, + in float4 invShadowMapSize0, + in float4 invShadowMapSize1, + in float4 invShadowMapSize2, + out float oShadowFactor) +{ + float shadowFactor0; + float shadowFactor1; + float shadowFactor2; + + shadowFactor0 = _SGX_ShadowPCF4(shadowMap0, lightPosition0, invShadowMapSize0.xy); + shadowFactor1 = _SGX_ShadowPCF4(shadowMap1, lightPosition1, invShadowMapSize1.xy); + shadowFactor2 = _SGX_ShadowPCF4(shadowMap2, lightPosition2, invShadowMapSize2.xy); + + if (fDepth <= vSplitPoints.x) + { + oShadowFactor = shadowFactor0; + } + else if (fDepth <= vSplitPoints.y) + { + oShadowFactor = shadowFactor1; + } + else + { + oShadowFactor = shadowFactor2; + } +} diff --git a/bin/media/RTShaderLib/SGXLib_IntegratedPSSM.glsl b/bin/media/RTShaderLib/SGXLib_IntegratedPSSM.glsl new file mode 100644 index 0000000000..d61c4a9487 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_IntegratedPSSM.glsl @@ -0,0 +1,107 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ +//----------------------------------------------------------------------------- +// Program Name: SGXLib_IntegratedPSSM +// Program Desc: Integrated PSSM functions. +// Program Type: Vertex/Pixel shader +// Language: GLSL +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_CopyDepth(in vec4 clipSpacePos, + out float oDepth) +{ + oDepth = clipSpacePos.z; +} + +//----------------------------------------------------------------------------- +void SGX_ModulateScalar(in float vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void SGX_ApplyShadowFactor_Diffuse(in vec4 ambient, + in vec4 lightSum, + in float fShadowFactor, + out vec4 oLight) +{ + oLight.rgb = ambient.rgb + (lightSum.rgb - ambient.rgb) * fShadowFactor; + oLight.a = lightSum.a; +} + +//----------------------------------------------------------------------------- +float _SGX_ShadowPCF4(sampler2D shadowMap, vec4 shadowMapPos, vec2 offset) +{ + shadowMapPos = shadowMapPos / shadowMapPos.w; + vec2 uv = shadowMapPos.xy; + vec3 o = vec3(offset, -offset.x) * 0.3; + + // Note: We using 2x2 PCF. Good enough and is a lot faster. + float c = (shadowMapPos.z <= texture2D(shadowMap, uv.xy - o.xy).r) ? 1.0 : 0.0; // top left + c += (shadowMapPos.z <= texture2D(shadowMap, uv.xy + o.xy).r) ? 1.0 : 0.0; // bottom right + c += (shadowMapPos.z <= texture2D(shadowMap, uv.xy + o.zy).r) ? 1.0 : 0.0; // bottom left + c += (shadowMapPos.z <= texture2D(shadowMap, uv.xy - o.zy).r) ? 1.0 : 0.0; // top right + + return c / 4.0; +} + +//----------------------------------------------------------------------------- +void SGX_ComputeShadowFactor_PSSM3(in float fDepth, + in vec4 vSplitPoints, + in vec4 lightPosition0, + in vec4 lightPosition1, + in vec4 lightPosition2, + in sampler2D shadowMap0, + in sampler2D shadowMap1, + in sampler2D shadowMap2, + in vec4 invShadowMapSize0, + in vec4 invShadowMapSize1, + in vec4 invShadowMapSize2, + out float oShadowFactor) +{ + float shadowFactor0; + float shadowFactor1; + float shadowFactor2; + + shadowFactor0 = _SGX_ShadowPCF4(shadowMap0, lightPosition0, invShadowMapSize0.xy); + shadowFactor1 = _SGX_ShadowPCF4(shadowMap1, lightPosition1, invShadowMapSize1.xy); + shadowFactor2 = _SGX_ShadowPCF4(shadowMap2, lightPosition2, invShadowMapSize2.xy); + + if (fDepth <= vSplitPoints.x) + { + oShadowFactor = shadowFactor0; + } + else if (fDepth <= vSplitPoints.y) + { + oShadowFactor = shadowFactor1; + } + else + { + oShadowFactor = shadowFactor2; + } +} diff --git a/bin/media/RTShaderLib/SGXLib_IntegratedPSSM.glsles b/bin/media/RTShaderLib/SGXLib_IntegratedPSSM.glsles new file mode 100644 index 0000000000..a1b038d2b5 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_IntegratedPSSM.glsles @@ -0,0 +1,112 @@ +#version 100 +precision highp float; +precision highp int; +precision lowp sampler2D; +precision lowp samplerCube; +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ +//----------------------------------------------------------------------------- +// Program Name: SGXLib_IntegratedPSSM +// Program Desc: Integrated PSSM functions. +// Program Type: Vertex/Pixel shader +// Language: GLSL ES +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_CopyDepth(in vec4 clipSpacePos, + out float oDepth) +{ + oDepth = clipSpacePos.z; +} + +//----------------------------------------------------------------------------- +void SGX_ModulateScalar(in float vIn0, in vec4 vIn1, out vec4 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void SGX_ApplyShadowFactor_Diffuse(in vec4 ambient, + in vec4 lightSum, + in float fShadowFactor, + out vec4 oLight) +{ + oLight.rgb = ambient.rgb + (lightSum.rgb - ambient.rgb) * fShadowFactor; + oLight.a = lightSum.a; +} + +//----------------------------------------------------------------------------- +float _SGX_ShadowPCF4(in sampler2D shadowMap, in vec4 shadowMapPos, in vec2 offset) +{ + shadowMapPos = shadowMapPos / shadowMapPos.w; + vec2 uv = shadowMapPos.xy; + vec3 o = vec3(offset, -offset.x) * 0.3; + + // Note: We using 2x2 PCF. Good enough and is a lot faster. + float c = (shadowMapPos.z <= texture2D(shadowMap, uv.xy - o.xy).r) ? 1.0 : 0.0; // top left + c += (shadowMapPos.z <= texture2D(shadowMap, uv.xy + o.xy).r) ? 1.0 : 0.0; // bottom right + c += (shadowMapPos.z <= texture2D(shadowMap, uv.xy + o.zy).r) ? 1.0 : 0.0; // bottom left + c += (shadowMapPos.z <= texture2D(shadowMap, uv.xy - o.zy).r) ? 1.0 : 0.0; // top right + + return c / 4.0; +} + +//----------------------------------------------------------------------------- +void SGX_ComputeShadowFactor_PSSM3(in float fDepth, + in vec4 vSplitPoints, + in vec4 lightPosition0, + in vec4 lightPosition1, + in vec4 lightPosition2, + in sampler2D shadowMap0, + in sampler2D shadowMap1, + in sampler2D shadowMap2, + in vec4 invShadowMapSize0, + in vec4 invShadowMapSize1, + in vec4 invShadowMapSize2, + out float oShadowFactor) +{ + float shadowFactor0; + float shadowFactor1; + float shadowFactor2; + + shadowFactor0 = _SGX_ShadowPCF4(shadowMap0, lightPosition0, invShadowMapSize0.xy); + shadowFactor1 = _SGX_ShadowPCF4(shadowMap1, lightPosition1, invShadowMapSize1.xy); + shadowFactor2 = _SGX_ShadowPCF4(shadowMap2, lightPosition2, invShadowMapSize2.xy); + + if (fDepth <= vSplitPoints.x) + { + oShadowFactor = shadowFactor0; + } + else if (fDepth <= vSplitPoints.y) + { + oShadowFactor = shadowFactor1; + } + else + { + oShadowFactor = shadowFactor2; + } +} diff --git a/bin/media/RTShaderLib/SGXLib_IntegratedPSSM.hlsl b/bin/media/RTShaderLib/SGXLib_IntegratedPSSM.hlsl new file mode 100644 index 0000000000..d72d33ace2 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_IntegratedPSSM.hlsl @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------------- +// Program Name: SGXLib_IntegratedPSSM +// Program Desc: Integrated PSSM functions. +// Program Type: Vertex/Pixel shader +// Language: HLSL +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_CopyDepth(in float4 clipSpacePos, + out float oDepth) +{ + oDepth = clipSpacePos.z; +} + +//----------------------------------------------------------------------------- +void SGX_ModulateScalar(in float vIn0, in float4 vIn1, out float4 vOut) +{ + vOut = vIn0 * vIn1; +} + +//----------------------------------------------------------------------------- +void SGX_ApplyShadowFactor_Diffuse(in float4 ambient, + in float4 lightSum, + in float fShadowFactor, + out float4 oLight) +{ + oLight.rgb = ambient.rgb + (lightSum.rgb - ambient.rgb) * fShadowFactor; + oLight.a = lightSum.a; +} + +//----------------------------------------------------------------------------- +float _SGX_ShadowPCF4(sampler2D shadowMap, float4 shadowMapPos, float2 offset) +{ + shadowMapPos = shadowMapPos / shadowMapPos.w; + float2 uv = shadowMapPos.xy; + float3 o = float3(offset, -offset.x) * 0.3f; + + // Note: We using 2x2 PCF. Good enough and is a lot faster. + float c = (shadowMapPos.z <= tex2D(shadowMap, uv.xy - o.xy).r) ? 1 : 0; // top left + c += (shadowMapPos.z <= tex2D(shadowMap, uv.xy + o.xy).r) ? 1 : 0; // bottom right + c += (shadowMapPos.z <= tex2D(shadowMap, uv.xy + o.zy).r) ? 1 : 0; // bottom left + c += (shadowMapPos.z <= tex2D(shadowMap, uv.xy - o.zy).r) ? 1 : 0; // top right + + return c / 4; +} + +//----------------------------------------------------------------------------- +void SGX_ComputeShadowFactor_PSSM3(in float fDepth, + in float4 vSplitPoints, + in float4 lightPosition0, + in float4 lightPosition1, + in float4 lightPosition2, + in sampler2D shadowMap0, + in sampler2D shadowMap1, + in sampler2D shadowMap2, + in float4 invShadowMapSize0, + in float4 invShadowMapSize1, + in float4 invShadowMapSize2, + out float oShadowFactor) +{ + float shadowFactor0; + float shadowFactor1; + float shadowFactor2; + + shadowFactor0 = _SGX_ShadowPCF4(shadowMap0, lightPosition0, invShadowMapSize0.xy); + shadowFactor1 = _SGX_ShadowPCF4(shadowMap1, lightPosition1, invShadowMapSize1.xy); + shadowFactor2 = _SGX_ShadowPCF4(shadowMap2, lightPosition2, invShadowMapSize2.xy); + + if (fDepth <= vSplitPoints.x) + { + oShadowFactor = shadowFactor0; + } + else if (fDepth <= vSplitPoints.y) + { + oShadowFactor = shadowFactor1; + } + else + { + oShadowFactor = shadowFactor2; + } +} diff --git a/bin/media/RTShaderLib/SGXLib_LayeredBlending.cg b/bin/media/RTShaderLib/SGXLib_LayeredBlending.cg new file mode 100644 index 0000000000..0e33d002a6 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_LayeredBlending.cg @@ -0,0 +1,728 @@ +/* +** layered blending & misc math +** Blending modes, RGB/HSL/Contrast/Desaturate +** +** The shaders below are base on the shaders created by: +** Romain Dura | Romz +** Blog: http://blog.mouaif.org +** Post: http://blog.mouaif.org/?p=94 +*/ + + +/* +** Desaturation +*/ + +float4 Desaturate(float3 color, float Desaturation) +{ + float3 grayXfer = float3(0.3, 0.59, 0.11); + float grayf = dot(grayXfer, color); + float3 gray = float3(grayf, grayf, grayf); + return float4(lerp(color, gray, Desaturation), 1.0); +} + + +/* +** Hue, saturation, luminance +*/ + +float3 RGBToHSL(float3 color) +{ + float3 hsl; // init to 0 to avoid warnings ? (and reverse if + remove first part) + + float fmin = min(min(color.r, color.g), color.b); //Min. value of RGB + float fmax = max(max(color.r, color.g), color.b); //Max. value of RGB + float delta = fmax - fmin; //Delta RGB value + + hsl.z = (fmax + fmin) / 2.0; // Luminance + + if (delta == 0.0) //This is a gray, no chroma... + { + hsl.x = 0.0; // Hue + hsl.y = 0.0; // Saturation + } + else //Chromatic data... + { + if (hsl.z < 0.5) + hsl.y = delta / (fmax + fmin); // Saturation + else + hsl.y = delta / (2.0 - fmax - fmin); // Saturation + + float deltaR = (((fmax - color.r) / 6.0) + (delta / 2.0)) / delta; + float deltaG = (((fmax - color.g) / 6.0) + (delta / 2.0)) / delta; + float deltaB = (((fmax - color.b) / 6.0) + (delta / 2.0)) / delta; + + if (color.r == fmax ) + hsl.x = deltaB - deltaG; // Hue + else if (color.g == fmax) + hsl.x = (1.0 / 3.0) + deltaR - deltaB; // Hue + else if (color.b == fmax) + hsl.x = (2.0 / 3.0) + deltaG - deltaR; // Hue + + if (hsl.x < 0.0) + hsl.x += 1.0; // Hue + else if (hsl.x > 1.0) + hsl.x -= 1.0; // Hue + } + + return hsl; +} + +float HueToRGB(float f1, float f2, float hue) +{ + if (hue < 0.0) + hue += 1.0; + else if (hue > 1.0) + hue -= 1.0; + float res; + if ((6.0 * hue) < 1.0) + res = f1 + (f2 - f1) * 6.0 * hue; + else if ((2.0 * hue) < 1.0) + res = f2; + else if ((3.0 * hue) < 2.0) + res = f1 + (f2 - f1) * ((2.0 / 3.0) - hue) * 6.0; + else + res = f1; + return res; +} + +float3 HSLToRGB(float3 hsl) +{ + float3 rgb; + + if (hsl.y == 0.0) + rgb = float3(hsl.z, hsl.z, hsl.z); // Luminance + else + { + float f2; + + if (hsl.z < 0.5) + f2 = hsl.z * (1.0 + hsl.y); + else + f2 = (hsl.z + hsl.y) - (hsl.y * hsl.z); + + float f1 = 2.0 * hsl.z - f2; + + rgb.r = HueToRGB(f1, f2, hsl.x + (1.0/3.0)); + rgb.g = HueToRGB(f1, f2, hsl.x); + rgb.b= HueToRGB(f1, f2, hsl.x - (1.0/3.0)); + } + + return rgb; +} + +/* +** Contrast, saturation, brightness +** Code of this function is from TGM's shader pack +** http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=21057 +*/ + +// For all settings: 1.0 = 100% 0.5=50% 1.5 = 150% +float3 ContrastSaturationBrightness(float3 color, float brt, float sat, float con) +{ + // Increase or decrease these values to adjust r, g and b color channels separately + const float AvgLumR = 0.5; + const float AvgLumG = 0.5; + const float AvgLumB = 0.5; + + const float3 LumCoeff = float3(0.2125, 0.7154, 0.0721); + + float3 AvgLumin = float3(AvgLumR, AvgLumG, AvgLumB); + float3 brtColor = color * brt; + float intensityf = dot(brtColor, LumCoeff); + float3 intensity = float3(intensityf, intensityf, intensityf); + float3 satColor = lerp(intensity, brtColor, sat); + float3 conColor = lerp(AvgLumin, satColor, con); + return conColor; +} + +/* +** Float blending modes +** Adapted from here: http://www.nathanm.com/photoshop-blending-math/ +** But I modified the HardMix (wrong condition), Overlay, SoftLight, ColorDodge, ColorBurn, VividLight, PinLight (inverted layers) ones to have correct results +*/ + +#define BlendLinearDodgef BlendAddf +#define BlendLinearBurnf BlendSubtractf +#define BlendAddf(base, blend) min(base + blend, 1.0) +#define BlendSubtractf(base, blend) max(base + blend - 1.0, 0.0) +#define BlendLightenf(base, blend) max(blend, base) +#define BlendDarkenf(base, blend) min(blend, base) +#define BlendLinearLightf(base, blend) (blend < 0.5 ? BlendLinearBurnf(base, (2.0 * blend)) : BlendLinearDodgef(base, (2.0 * (blend - 0.5)))) +#define BlendScreenf(base, blend) (1.0 - ((1.0 - base) * (1.0 - blend))) +#define BlendOverlayf(base, blend) (base < 0.5 ? (2.0 * base * blend) : (1.0 - 2.0 * (1.0 - base) * (1.0 - blend))) +#define BlendSoftLightf(base, blend) ((blend < 0.5) ? (2.0 * base * blend + base * base * (1.0 - 2.0 * blend)) : (sqrt(base) * (2.0 * blend - 1.0) + 2.0 * base * (1.0 - blend))) +#define BlendColorDodgef(base, blend) ((blend == 1.0) ? blend : min(base / (1.0 - blend), 1.0)) +#define BlendColorBurnf(base, blend) ((blend == 0.0) ? blend : max((1.0 - ((1.0 - base) / blend)), 0.0)) +#define BlendVividLightf(base, blend) ((blend < 0.5) ? BlendColorBurnf(base, (2.0 * blend)) : BlendColorDodgef(base, (2.0 * (blend - 0.5)))) +#define BlendPinLightf(base, blend) ((blend < 0.5) ? BlendDarkenf(base, (2.0 * blend)) : BlendLightenf(base, (2.0 *(blend - 0.5)))) +#define BlendHardMixf(base, blend) ((BlendVividLightf(base, blend) < 0.5) ? 0.0 : 1.0) +#define BlendReflectf(base, blend) ((blend == 1.0) ? blend : min(base * base / (1.0 - blend), 1.0)) + + + +/* +** Vector3 blending modes +*/ + +// Component wise blending +#define Blend1(base, blend, funcf) funcf(base, blend) +#define Blend3(base, blend, funcf) float3(funcf(base.r, blend.r), funcf(base.g, blend.g), funcf(base.b, blend.b)) +#define Blend4(base, blend, funcf) float4(funcf(base.r, blend.r), funcf(base.g, blend.g), funcf(base.b, blend.b), funcf(base.a, blend.a)) + +#define BlendNormal(base, blend) (base) +#define BlendLighten BlendLightenf +#define BlendDarken BlendDarkenf +#define BlendMultiply(base, blend) (base * blend) +#define BlendAverage(base, blend) ((base + blend) / 2.0) +#define BlendAdd(base, blend) min(base + blend, 1.0) +#define BlendSubtract(base, blend) max(base + blend - 1.0, 0.0) +#define BlendDifference(base, blend) abs(base - blend) +#define BlendNegation(base, blend) (1.0 - abs(1.0 - base - blend)) +#define BlendExclusion(base, blend) (base + blend - 2.0 * base * blend) + +#define BlendScreen1(base, blend) Blend1(base, blend, BlendScreenf) +#define BlendOverlay1(base, blend) Blend1(base, blend, BlendOverlayf) +#define BlendSoftLight1(base, blend) Blend1(base, blend, BlendSoftLightf) +#define BlendHardLight1(base, blend) BlendOverlay1(blend, base) +#define BlendColorDodge1(base, blend) Blend1(base, blend, BlendColorDodgef) +#define BlendColorBurn1(base, blend) Blend1(base, blend, BlendColorBurnf) +// Linear Light is another contrast-increasing mode +// If the blend color is darker than midgray, Linear Light darkens the image by decreasing the brightness. If the blend color is lighter than midgray, the result is a brighter image due to increased brightness. +#define BlendLinearLight1(base, blend) Blend1(base, blend, BlendLinearLightf) +#define BlendVividLight1(base, blend) Blend1(base, blend, BlendVividLightf) +#define BlendPinLight1(base, blend) Blend1(base, blend, BlendPinLightf) +#define BlendHardMix1(base, blend) Blend1(base, blend, BlendHardMixf) +#define BlendReflect1(base, blend) Blend1(base, blend, BlendReflectf) +#define BlendGlow1(base, blend) BlendReflect1(blend, base) + + +#define BlendScreen3(base, blend) Blend3(base, blend, BlendScreenf) +#define BlendOverlay3(base, blend) Blend3(base, blend, BlendOverlayf) +#define BlendSoftLight3(base, blend) Blend3(base, blend, BlendSoftLightf) +#define BlendHardLight3(base, blend) BlendOverlay3(blend, base) +#define BlendColorDodge3(base, blend) Blend3(base, blend, BlendColorDodgef) +#define BlendColorBurn3(base, blend) Blend3(base, blend, BlendColorBurnf) +// Linear Light is another contrast-increasing mode +// If the blend color is darker than midgray, Linear Light darkens the image by decreasing the brightness. If the blend color is lighter than midgray, the result is a brighter image due to increased brightness. +#define BlendLinearLight3(base, blend) Blend3(base, blend, BlendLinearLightf) +#define BlendVividLight3(base, blend) Blend3(base, blend, BlendVividLightf) +#define BlendPinLight3(base, blend) Blend3(base, blend, BlendPinLightf) +#define BlendHardMix3(base, blend) Blend3(base, blend, BlendHardMixf) +#define BlendReflect3(base, blend) Blend3(base, blend, BlendReflectf) +#define BlendGlow3(base, blend) BlendReflect3(blend, base) + + +#define BlendScreen4(base, blend) Blend4(base, blend, BlendScreenf) +#define BlendOverlay4(base, blend) Blend4(base, blend, BlendOverlayf) +#define BlendSoftLight4(base, blend) Blend4(base, blend, BlendSoftLightf) +#define BlendHardLight4(base, blend) BlendOverlay4(blend, base) +#define BlendColorDodge4(base, blend) Blend4(base, blend, BlendColorDodgef) +#define BlendColorBurn4(base, blend) Blend4(base, blend, BlendColorBurnf) +// Linear Light is another contrast-increasing mode +// If the blend color is darker than midgray, Linear Light darkens the image by decreasing the brightness. If the blend color is lighter than midgray, the result is a brighter image due to increased brightness. +#define BlendLinearLight4(base, blend) Blend4(base, blend, BlendLinearLightf) +#define BlendVividLight4(base, blend) Blend4(base, blend, BlendVividLightf) +#define BlendPinLight4(base, blend) Blend4(base, blend, BlendPinLightf) +#define BlendHardMix4(base, blend) Blend4(base, blend, BlendHardMixf) +#define BlendReflect4(base, blend) Blend4(base, blend, BlendReflectf) +#define BlendGlow4(base, blend) BlendReflect4(blend, base) + + +#define BlendLinearDodge BlendAdd +#define BlendLinearBurn BlendSubtract + +#define BlendPhoenix(base, blend) (min(base, blend) - max(base, blend) + 1.0) + + +#define BlendOpacity(base, blend, F, O) (F(base, blend) * O + blend * (1.0 - O)) + +// Hue Blend mode creates the result color by combining the luminance and saturation of the base color with the hue of the blend color. +float BlendHue1(float base, float blend) +{ + return base; +} +float3 BlendHue3(float3 base, float3 blend) +{ + float3 baseHSL = RGBToHSL(base); + return HSLToRGB(float3(RGBToHSL(blend).r, baseHSL.g, baseHSL.b)); +} +float4 BlendHue4(float4 base, float4 blend) +{ + float3 hue = BlendHue3(base.xyz, blend.xyz); + return float4(hue.x, hue.y, hue.z, BlendHue1(base.w, blend.w)); +} + +// Saturation Blend mode creates the result color by combining the luminance and hue of the base color with the saturation of the blend color. +float BlendSaturation1(float base, float blend) +{ + return base; +} +float3 BlendSaturation3(float3 base, float3 blend) +{ + float3 baseHSL = RGBToHSL(base); + return HSLToRGB(float3(baseHSL.r, RGBToHSL(blend).g, baseHSL.b)); +} +float4 BlendSaturation4(float4 base, float4 blend) +{ + float3 hue = BlendSaturation3(base.xyz, blend.xyz); + return float4(hue.x, hue.y, hue.z, BlendSaturation1(base.w, blend.w)); +} + +// Color Mode keeps the brightness of the base color and applies both the hue and saturation of the blend color. +float BlendColor1(float base, float blend) +{ + return base; +} +float3 BlendColor3(float3 base, float3 blend) +{ + float3 blendHSL = RGBToHSL(blend); + return HSLToRGB(float3(blendHSL.r, blendHSL.g, RGBToHSL(base).b)); +} +float4 BlendColor4(float4 base, float4 blend) +{ + float3 hue = BlendColor3(base.xyz, blend.xyz); + return float4(hue.x, hue.y, hue.z, BlendColor1(base.w, blend.w)); +} + + + +// Luminosity Blend mode creates the result color by combining the hue and saturation of the base color with the luminance of the blend color. +float BlendLuminosity1(float base, float blend) +{ + return base; +} +float3 BlendLuminosity3(float3 base, float3 blend) +{ + float3 baseHSL = RGBToHSL(base); + return HSLToRGB(float3(baseHSL.r, baseHSL.g, RGBToHSL(blend).b)); +} +float4 BlendLuminosity4(float4 base, float4 blend) +{ + float3 hue = BlendLuminosity3(base.xyz, blend.xyz); + return float4(hue.x, hue.y, hue.z, BlendLuminosity1(base.w, blend.w)); +} + +//------------------------------------ +// Interface for RTShader +//------------------------------------ + +void SGX_blend_normal(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendNormal(basePixel, blendPixel); +} +void SGX_blend_normal(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendNormal(basePixel, blendPixel); +} +void SGX_blend_normal(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendNormal(basePixel, blendPixel); +} + + +void SGX_blend_lighten(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendLighten(basePixel, blendPixel); +} +void SGX_blend_lighten(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendLighten(basePixel, blendPixel); +} +void SGX_blend_lighten(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendLighten(basePixel, blendPixel); +} + +void SGX_blend_darken(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendDarken(basePixel, blendPixel); +} +void SGX_blend_darken(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendDarken(basePixel, blendPixel); +} +void SGX_blend_darken(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendDarken(basePixel, blendPixel); +} + + +void SGX_blend_multiply(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendMultiply(basePixel, blendPixel); +} +void SGX_blend_multiply(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendMultiply(basePixel, blendPixel); +} +void SGX_blend_multiply(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendMultiply(basePixel, blendPixel); +} + + +void SGX_blend_average(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendAverage(basePixel, blendPixel); +} +void SGX_blend_average(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendAverage(basePixel, blendPixel); +} +void SGX_blend_average(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendAverage(basePixel, blendPixel); +} + + +void SGX_blend_add(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendAdd(basePixel, blendPixel); +} +void SGX_blend_add(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendAdd(basePixel, blendPixel); +} +void SGX_blend_add(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendAdd(basePixel, blendPixel); +} + + +void SGX_blend_subtract(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendSubtract(basePixel, blendPixel); +} +void SGX_blend_subtract(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendSubtract(basePixel, blendPixel); +} +void SGX_blend_subtract(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendSubtract(basePixel, blendPixel); +} + + +void SGX_blend_difference(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendDifference(basePixel, blendPixel); +} +void SGX_blend_difference(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendDifference(basePixel, blendPixel); +} +void SGX_blend_difference(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendDifference(basePixel, blendPixel); +} + + +void SGX_blend_negation(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendNegation(basePixel, blendPixel); +} +void SGX_blend_negation(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendNegation(basePixel, blendPixel); +} +void SGX_blend_negation(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendNegation(basePixel, blendPixel); +} + + +void SGX_blend_exclusion(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendExclusion(basePixel, blendPixel); +} +void SGX_blend_exclusion(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendExclusion(basePixel, blendPixel); +} +void SGX_blend_exclusion(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendExclusion(basePixel, blendPixel); +} + + +void SGX_blend_screen(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendScreenf); +} +void SGX_blend_screen(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendScreenf); +} +void SGX_blend_screen(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendScreenf); +} + +void SGX_blend_overlay(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendOverlayf); +} +void SGX_blend_overlay(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendOverlayf); +} +void SGX_blend_overlay(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendOverlayf); +} + +void SGX_blend_softLight(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendSoftLightf); +} +void SGX_blend_softLight(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendSoftLightf); +} +void SGX_blend_softLight(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendSoftLightf); +} + + +void SGX_blend_hardLight(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendOverlayf); +} +void SGX_blend_hardLight(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendOverlayf); +} +void SGX_blend_hardLight(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendOverlayf); +} + + +void SGX_blend_colorDodge(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendColorDodgef); +} +void SGX_blend_colorDodge(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendColorDodgef); +} +void SGX_blend_colorDodge(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendColorDodgef); +} + + +void SGX_blend_colorBurn(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendColorBurnf); +} +void SGX_blend_colorBurn(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendColorBurnf); +} +void SGX_blend_colorBurn(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendColorBurnf); +} + + +void SGX_blend_linearDodge(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendLinearDodge(basePixel, blendPixel); +} +void SGX_blend_linearDodge(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendLinearDodge(basePixel, blendPixel); +} +void SGX_blend_linearDodge(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendLinearDodge(basePixel, blendPixel); +} + + +void SGX_blend_linearBurn(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendLinearBurn(basePixel, blendPixel); +} +void SGX_blend_linearBurn(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendLinearBurn(basePixel, blendPixel); +} +void SGX_blend_linearBurn(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendLinearBurn(basePixel, blendPixel); +} + + +void SGX_blend_linearLight(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendLinearLightf); +} +void SGX_blend_linearLight(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendLinearLightf); +} +void SGX_blend_linearLight(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendLinearLightf); +} + + +void SGX_blend_vividLight(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendVividLightf); +} +void SGX_blend_vividLight(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendVividLightf); +} +void SGX_blend_vividLight(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendVividLightf); +} + + +void SGX_blend_pinLight(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendPinLightf); +} +void SGX_blend_pinLight(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendPinLightf); +} +void SGX_blend_pinLight(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendPinLightf); +} + + +void SGX_blend_hardMix(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendHardMixf); +} +void SGX_blend_hardMix(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendHardMixf); +} +void SGX_blend_hardMix(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendHardMixf); +} + + +void SGX_blend_reflect(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendReflectf); +} +void SGX_blend_reflect(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendReflectf); +} +void SGX_blend_reflect(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendReflectf); +} + +void SGX_blend_glow(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendReflectf); +} +void SGX_blend_glow(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendReflectf); +} +void SGX_blend_glow(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendReflectf); +} + + +void SGX_blend_phoenix(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendPhoenix(basePixel, blendPixel); +} +void SGX_blend_phoenix(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendPhoenix(basePixel, blendPixel); +} +void SGX_blend_phoenix(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendPhoenix(basePixel, blendPixel); +} + + +void SGX_blend_saturation(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendSaturation4(basePixel, blendPixel); +} +void SGX_blend_saturation(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendSaturation3(basePixel, blendPixel); +} +void SGX_blend_saturation(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendSaturation1(basePixel, blendPixel); +} + + +void SGX_blend_color(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendColor4(basePixel, blendPixel); +} +void SGX_blend_color(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendColor3(basePixel, blendPixel); +} +void SGX_blend_color(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendColor1(basePixel, blendPixel); +} + + +void SGX_blend_luminosity(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendLuminosity4(basePixel, blendPixel); +} +void SGX_blend_luminosity(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendLuminosity3(basePixel, blendPixel); +} +void SGX_blend_luminosity(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendLuminosity1(basePixel, blendPixel); +} + + + +//////////////////////////////////////////////////////////////////////////////////// +/// Source modification functions +//////////////////////////////////////////////////////////////////////////////////// + + +void SGX_src_mod_modulate(float4 iColor, float4 controlVal, out float4 oColor) +{ + oColor = iColor * controlVal; +} +void SGX_src_mod_modulate(float3 iColor, float3 controlVal, out float3 oColor) +{ + oColor = iColor * controlVal; +} +void SGX_src_mod_modulate(float iColor, float controlVal, out float oColor) +{ + oColor = iColor * controlVal; +} + +void SGX_src_mod_inv_modulate(float4 iColor, float4 controlVal, out float4 oColor) +{ + oColor = lerp(iColor, 1, controlVal); +} +void SGX_src_mod_inv_modulate(float3 iColor, float3 controlVal, out float3 oColor) +{ + oColor = lerp(iColor, 1, controlVal); +} +void SGX_src_mod_inv_modulate(float iColor, float controlVal, out float oColor) +{ + oColor = lerp(iColor, 1, controlVal); +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SGXLib_LayeredBlending.glsl b/bin/media/RTShaderLib/SGXLib_LayeredBlending.glsl new file mode 100644 index 0000000000..97edd9d19e --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_LayeredBlending.glsl @@ -0,0 +1,825 @@ +#version 120 + +/* +** layered blending & misc math +** Blending modes, RGB/HSL/Contrast/Desaturate, levels control +** +** The shaders below are base on the shaders created by: +** Romain Dura | Romz +** Blog: http://blog.mouaif.org +** Post: http://blog.mouaif.org/?p=94 +*/ + + +/* +** Desaturation +*/ + +vec4 Desaturate(in vec3 color, in float Desaturation) +{ + vec3 grayXfer = vec3(0.3, 0.59, 0.11); + vec3 gray = vec3(dot(grayXfer, color)); + return vec4(mix(color, gray, Desaturation), 1.0); +} + + +/* +** Hue, saturation, luminance +*/ + +vec3 RGBToHSL(in vec3 color) +{ + vec3 hsl; // init to 0 to avoid warnings ? (and reverse if + remove first part) + + float fmin = min(min(color.r, color.g), color.b); //Min. value of RGB + float fmax = max(max(color.r, color.g), color.b); //Max. value of RGB + float delta = fmax - fmin; //Delta RGB value + + hsl.z = (fmax + fmin) / 2.0; // Luminance + + if (delta == 0.0) //This is a gray, no chroma... + { + hsl.x = 0.0; // Hue + hsl.y = 0.0; // Saturation + } + else //Chromatic data... + { + if (hsl.z < 0.5) + hsl.y = delta / (fmax + fmin); // Saturation + else + hsl.y = delta / (2.0 - fmax - fmin); // Saturation + + float deltaR = (((fmax - color.r) / 6.0) + (delta / 2.0)) / delta; + float deltaG = (((fmax - color.g) / 6.0) + (delta / 2.0)) / delta; + float deltaB = (((fmax - color.b) / 6.0) + (delta / 2.0)) / delta; + + if (color.r == fmax ) + hsl.x = deltaB - deltaG; // Hue + else if (color.g == fmax) + hsl.x = (1.0 / 3.0) + deltaR - deltaB; // Hue + else if (color.b == fmax) + hsl.x = (2.0 / 3.0) + deltaG - deltaR; // Hue + + if (hsl.x < 0.0) + hsl.x += 1.0; // Hue + else if (hsl.x > 1.0) + hsl.x -= 1.0; // Hue + } + + return hsl; +} + +float HueToRGB(in float f1, in float f2, in float hue) +{ + if (hue < 0.0) + hue += 1.0; + else if (hue > 1.0) + hue -= 1.0; + float res; + if ((6.0 * hue) < 1.0) + res = f1 + (f2 - f1) * 6.0 * hue; + else if ((2.0 * hue) < 1.0) + res = f2; + else if ((3.0 * hue) < 2.0) + res = f1 + (f2 - f1) * ((2.0 / 3.0) - hue) * 6.0; + else + res = f1; + return res; +} + +vec3 HSLToRGB(in vec3 hsl) +{ + vec3 rgb; + + if (hsl.y == 0.0) + rgb = vec3(hsl.z); // Luminance + else + { + float f2; + + if (hsl.z < 0.5) + f2 = hsl.z * (1.0 + hsl.y); + else + f2 = (hsl.z + hsl.y) - (hsl.y * hsl.z); + + float f1 = 2.0 * hsl.z - f2; + + rgb.r = HueToRGB(f1, f2, hsl.x + (1.0/3.0)); + rgb.g = HueToRGB(f1, f2, hsl.x); + rgb.b = HueToRGB(f1, f2, hsl.x - (1.0/3.0)); + } + + return rgb; +} + + +/* +** Contrast, saturation, brightness +** Code of this function is from TGM's shader pack +** http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=21057 +*/ + +// For all settings: 1.0 = 100% 0.5=50% 1.5 = 150% +vec3 ContrastSaturationBrightness(in vec3 color, in float brt, in float sat, in float con) +{ + // Increase or decrease these values to adjust r, g and b color channels separately + const float AvgLumR = 0.5; + const float AvgLumG = 0.5; + const float AvgLumB = 0.5; + + const vec3 LumCoeff = vec3(0.2125, 0.7154, 0.0721); + + vec3 AvgLumin = vec3(AvgLumR, AvgLumG, AvgLumB); + vec3 brtColor = color * brt; + vec3 intensity = vec3(dot(brtColor, LumCoeff)); + vec3 satColor = mix(intensity, brtColor, sat); + vec3 conColor = mix(AvgLumin, satColor, con); + return conColor; +} + +/* +** Float blending modes +** Adapted from here: http://www.nathanm.com/photoshop-blending-math/ +** But I modified the HardMix (wrong condition), Overlay, SoftLight, ColorDodge, ColorBurn, VividLight, PinLight (inverted layers) ones to have correct results +*/ + +#define BlendLinearDodgef BlendAddf +#define BlendLinearBurnf BlendSubtractf +#define BlendAddf(base, blend) min(base + blend, 1.0) +#define BlendSubtractf(base, blend) max(base + blend - 1.0, 0.0) +#define BlendLightenf(base, blend) max(blend, base) +#define BlendDarkenf(base, blend) min(blend, base) +#define BlendScreenf(base, blend) (1.0 - ((1.0 - base) * (1.0 - blend))) +#define BlendOverlayf(base, blend) (base < 0.5 ? (2.0 * base * blend) : (1.0 - 2.0 * (1.0 - base) * (1.0 - blend))) +#define BlendSoftLightf(base, blend) ((blend < 0.5) ? (2.0 * base * blend + base * base * (1.0 - 2.0 * blend)) : (sqrt(base) * (2.0 * blend - 1.0) + 2.0 * base * (1.0 - blend))) +#define BlendColorDodgef(base, blend) ((blend == 1.0) ? blend : min(base / (1.0 - blend), 1.0)) +#define BlendColorBurnf(base, blend) ((blend == 0.0) ? blend : max((1.0 - ((1.0 - base) / blend)), 0.0)) +#define BlendHardMixf(base, blend) ((BlendVividLightf(base, blend) < 0.5) ? 0.0 : 1.0) + + + +/* +** Vector3 blending modes +*/ + +// Component wise blending +#define Blend1(base, blend, funcf) funcf(base, blend) +#define Blend3(base, blend, funcf) vec3(funcf(base.r, blend.r), funcf(base.g, blend.g), funcf(base.b, blend.b)) +#define Blend4(base, blend, funcf) vec4(funcf(base.r, blend.r), funcf(base.g, blend.g), funcf(base.b, blend.b), funcf(base.a, blend.a)) + +#define BlendNormal(base, blend) (base) +#define BlendMultiply(base, blend) (base * blend) +#define BlendAverage(base, blend) ((base + blend) / 2.0) +#define BlendAdd(base, blend) min(base + blend, 1.0) +#define BlendSubtract(base, blend) max(base + blend - 1.0, 0.0) +#define BlendDifference(base, blend) abs(base - blend) +#define BlendNegation(base, blend) (1.0 - abs(1.0 - base - blend)) +#define BlendExclusion(base, blend) (base + blend - 2.0 * base * blend) +#define BlendPhoenix(base, blend) (min(base, blend) - max(base, blend) + 1.0) +#define BlendOpacity(base, blend, F, O) (F(base, blend) * O + blend * (1.0 - O)) + +// Hue Blend mode creates the result color by combining the luminance and saturation of the base color with the hue of the blend color. +float BlendHue1(in float base, in float blend) +{ + return base; +} + +vec3 BlendHue3(in vec3 base, in vec3 blend) +{ + vec3 baseHSL = RGBToHSL(base); + return HSLToRGB(vec3(RGBToHSL(blend).r, baseHSL.g, baseHSL.b)); +} + +vec4 BlendHue4(in vec4 base, in vec4 blend) +{ + vec3 hue = BlendHue3(base.xyz, blend.xyz); + return vec4(hue.x, hue.y, hue.z, BlendHue1(base.w, blend.w)); +} + +// Saturation Blend mode creates the result color by combining the luminance and hue of the base color with the saturation of the blend color. +float BlendSaturation1(in float base, in float blend) +{ + return base; +} + +vec3 BlendSaturation3(in vec3 base, in vec3 blend) +{ + vec3 baseHSL = RGBToHSL(base); + return HSLToRGB(vec3(baseHSL.r, RGBToHSL(blend).g, baseHSL.b)); +} + +vec4 BlendSaturation4(in vec4 base, in vec4 blend) +{ + vec3 hue = BlendSaturation3(base.xyz, blend.xyz); + return vec4(hue.x, hue.y, hue.z, BlendSaturation1(base.w, blend.w)); +} + +// Color Mode keeps the brightness of the base color and applies both the hue and saturation of the blend color. +float BlendColor1(in float base, in float blend) +{ + return base; +} + +vec3 BlendColor3(in vec3 base, in vec3 blend) +{ + vec3 blendHSL = RGBToHSL(blend); + return HSLToRGB(vec3(blendHSL.r, blendHSL.g, RGBToHSL(base).b)); +} + +vec4 BlendColor4(in vec4 base, in vec4 blend) +{ + vec3 hue = BlendColor3(base.xyz, blend.xyz); + return vec4(hue.x, hue.y, hue.z, BlendColor1(base.w, blend.w)); +} + + +// Luminosity Blend mode creates the result color by combining the hue and saturation of the base color with the luminance of the blend color. +float BlendLuminosity1(in float base, in float blend) +{ + return base; +} + +vec3 BlendLuminosity3(in vec3 base, in vec3 blend) +{ + vec3 baseHSL = RGBToHSL(base); + return HSLToRGB(vec3(baseHSL.r, baseHSL.g, RGBToHSL(blend).b)); +} + +vec4 BlendLuminosity4(in vec4 base, in vec4 blend) +{ + vec3 hue = BlendLuminosity3(base.xyz, blend.xyz); + return vec4(hue.x, hue.y, hue.z, BlendLuminosity1(base.w, blend.w)); +} + +float BlendLinearLightf(in float s1, in float s2) +{ + float oColor; + + if (s2 < 0.5) + { + float s2x = (2.0 * s2); + oColor = BlendSubtractf(s1, s2x); + } + else + { + float s2x = (2.0 * (s2 - 0.5)); + oColor = BlendAddf(s1, s2x); + } + + return oColor; +} + +float BlendVividLightf(in float s1, in float s2) +{ + float oColor; + + if (s2 < 0.5) + { + float s2x = (2.0 * s2); + oColor = BlendColorBurnf(s1, s2x); + } + else + { + float s2x = (2.0 * (s2 - 0.5)); + oColor = BlendColorDodgef(s1, s2x); + } + + return oColor; +} + +float BlendPinLightf(in float s1, in float s2) +{ + float oColor; + + if (s2 < 0.5) + { + float s2x = (2.0 * s2); + oColor = BlendDarkenf(s1, s2x); + } + else + { + float s2x = (2.0 * (s2 - 0.5)); + oColor = BlendLightenf(s1, s2x); + } + + return oColor; +} + +float BlendReflectf(in float s1, in float s2) +{ + float oColor; + + if (s2 == 1.0) + { + oColor = s2; + } + else + { + float s1x = (s1 * s1) / (1.0 - s2); + + oColor = min(s1x, 1.0); + } + + return oColor; +} + +//------------------------------------ +// Interface for RTShader +//------------------------------------ + + +void SGX_blend_normal(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendNormal(basePixel, blendPixel); +} + +void SGX_blend_normal(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendNormal(basePixel, blendPixel); +} + +void SGX_blend_normal(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendNormal(basePixel, blendPixel); +} + + +void SGX_blend_lighten(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendLightenf(basePixel, blendPixel); +} + +void SGX_blend_lighten(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendLightenf(basePixel, blendPixel); +} + +void SGX_blend_lighten(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendLightenf(basePixel, blendPixel); +} + + +void SGX_blend_darken(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendDarkenf(basePixel, blendPixel); +} + +void SGX_blend_darken(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendDarkenf(basePixel, blendPixel); +} + +void SGX_blend_darken(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendDarkenf(basePixel, blendPixel); +} + + +void SGX_blend_multiply(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendMultiply(basePixel, blendPixel); +} + +void SGX_blend_multiply(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendMultiply(basePixel, blendPixel); +} + +void SGX_blend_multiply(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendMultiply(basePixel, blendPixel); +} + + +void SGX_blend_average(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendAverage(basePixel, blendPixel); +} + +void SGX_blend_average(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendAverage(basePixel, blendPixel); +} + +void SGX_blend_average(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendAverage(basePixel, blendPixel); +} + + +void SGX_blend_add(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendAdd(basePixel, blendPixel); +} + +void SGX_blend_add(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendAdd(basePixel, blendPixel); +} + +void SGX_blend_add(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendAdd(basePixel, blendPixel); +} + + +void SGX_blend_subtract(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendSubtract(basePixel, blendPixel); +} + +void SGX_blend_subtract(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendSubtract(basePixel, blendPixel); +} + +void SGX_blend_subtract(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendSubtract(basePixel, blendPixel); +} + + +void SGX_blend_difference(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendDifference(basePixel, blendPixel); +} +void SGX_blend_difference(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendDifference(basePixel, blendPixel); +} +void SGX_blend_difference(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendDifference(basePixel, blendPixel); +} + + +void SGX_blend_negation(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendNegation(basePixel, blendPixel); +} +void SGX_blend_negation(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendNegation(basePixel, blendPixel); +} +void SGX_blend_negation(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendNegation(basePixel, blendPixel); +} + + +void SGX_blend_exclusion(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendExclusion(basePixel, blendPixel); +} +void SGX_blend_exclusion(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendExclusion(basePixel, blendPixel); +} +void SGX_blend_exclusion(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendExclusion(basePixel, blendPixel); +} + + +void SGX_blend_screen(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendScreenf(s1.r, s2.r), + BlendScreenf(s1.g, s2.g), + BlendScreenf(s1.b, s2.b), + BlendScreenf(s1.a, s2.a)); +} +void SGX_blend_screen(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendScreenf(s1.r, s2.r), + BlendScreenf(s1.g, s2.g), + BlendScreenf(s1.b, s2.b)); +} +void SGX_blend_screen(in float s1, in float s2, out float oColor) +{ + oColor = BlendScreenf(s1, s2); +} + + +void SGX_blend_overlay(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendOverlayf(s1.r, s2.r), + BlendOverlayf(s1.g, s2.g), + BlendOverlayf(s1.b, s2.b), + BlendOverlayf(s1.a, s2.a)); +} +void SGX_blend_overlay(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendOverlayf(s1.r, s2.r), + BlendOverlayf(s1.g, s2.g), + BlendOverlayf(s1.b, s2.b)); +} +void SGX_blend_overlay(in float s1, in float s2, out float oColor) +{ + oColor = BlendOverlayf(s1, s2); +} + + +void SGX_blend_softLight(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendSoftLightf(s1.r, s2.r), + BlendSoftLightf(s1.g, s2.g), + BlendSoftLightf(s1.b, s2.b), + BlendSoftLightf(s1.a, s2.a)); +} +void SGX_blend_softLight(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendSoftLightf(s1.r, s2.r), + BlendSoftLightf(s1.g, s2.g), + BlendSoftLightf(s1.b, s2.b)); +} +void SGX_blend_softLight(in float s1, in float s2, out float oColor) +{ + oColor = BlendSoftLightf(s1, s2); +} + + +void SGX_blend_hardLight(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendOverlayf(s1.r, s2.r), + BlendOverlayf(s1.g, s2.g), + BlendOverlayf(s1.b, s2.b), + BlendOverlayf(s1.a, s2.a)); +} +void SGX_blend_hardLight(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendOverlayf(s1.r, s2.r), + BlendOverlayf(s1.g, s2.g), + BlendOverlayf(s1.b, s2.b)); +} +void SGX_blend_hardLight(in float s1, in float s2, out float oColor) +{ + oColor = BlendOverlayf(s1, s2); +} + + +void SGX_blend_colorDodge(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendColorDodgef(s1.r, s2.r), + BlendColorDodgef(s1.g, s2.g), + BlendColorDodgef(s1.b, s2.b), + BlendColorDodgef(s1.a, s2.a)); +} +void SGX_blend_colorDodge(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendColorDodgef(s1.r, s2.r), + BlendColorDodgef(s1.g, s2.g), + BlendColorDodgef(s1.b, s2.b)); +} +void SGX_blend_colorDodge(in float s1, in float s2, out float oColor) +{ + oColor = BlendColorDodgef(s1, s2); +} + + +void SGX_blend_colorBurn(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendColorBurnf(s1.r, s2.r), + BlendColorBurnf(s1.g, s2.g), + BlendColorBurnf(s1.b, s2.b), + BlendColorBurnf(s1.a, s2.a)); +} +void SGX_blend_colorBurn(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendColorBurnf(s1.r, s2.r), + BlendColorBurnf(s1.g, s2.g), + BlendColorBurnf(s1.b, s2.b)); +} +void SGX_blend_colorBurn(in float s1, in float s2, out float oColor) +{ + oColor = BlendColorBurnf(s1, s2); +} + + +void SGX_blend_linearDodge(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendAddf(basePixel, blendPixel); +} +void SGX_blend_linearDodge(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendAddf(basePixel, blendPixel); +} +void SGX_blend_linearDodge(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendAddf(basePixel, blendPixel); +} + + +void SGX_blend_linearBurn(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendSubtractf(basePixel, blendPixel); +} +void SGX_blend_linearBurn(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendSubtractf(basePixel, blendPixel); +} +void SGX_blend_linearBurn(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendSubtractf(basePixel, blendPixel); +} + + +void SGX_blend_linearLight(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendLinearLightf(s1.r, s2.r), + BlendLinearLightf(s1.g, s2.g), + BlendLinearLightf(s1.b, s2.b), + BlendLinearLightf(s1.a, s2.a)); +} +void SGX_blend_linearLight(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendLinearLightf(s1.r, s2.r), + BlendLinearLightf(s1.g, s2.g), + BlendLinearLightf(s1.b, s2.b)); +} +void SGX_blend_linearLight(in float s1, in float s2, out float oColor) +{ + oColor = BlendLinearLightf(s1, s2); +} + + +void SGX_blend_vividLight(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendVividLightf(s1.r, s2.r), + BlendVividLightf(s1.g, s2.g), + BlendVividLightf(s1.b, s2.b), + BlendVividLightf(s1.a, s2.a)); +} +void SGX_blend_vividLight(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendVividLightf(s1.r, s2.r), + BlendVividLightf(s1.g, s2.g), + BlendVividLightf(s1.b, s2.b)); +} +void SGX_blend_vividLight(in float s1, in float s2, out float oColor) +{ + oColor = BlendVividLightf(s1, s2); +} + + +void SGX_blend_pinLight(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendPinLightf(s1.r, s2.r), + BlendPinLightf(s1.g, s2.g), + BlendPinLightf(s1.b, s2.b), + BlendPinLightf(s1.a, s2.a)); +} +void SGX_blend_pinLight(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendPinLightf(s1.r, s2.r), + BlendPinLightf(s1.g, s2.g), + BlendPinLightf(s1.b, s2.b)); +} +void SGX_blend_pinLight(in float s1, in float s2, out float oColor) +{ + oColor = BlendPinLightf(s1, s2); +} + + +void SGX_blend_hardMix(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendHardMixf(s1.r, s2.r), + BlendHardMixf(s1.g, s2.g), + BlendHardMixf(s1.b, s2.b), + BlendHardMixf(s1.a, s2.a)); +} +void SGX_blend_hardMix(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendHardMixf(s1.r, s2.r), + BlendHardMixf(s1.g, s2.g), + BlendHardMixf(s1.b, s2.b)); +} +void SGX_blend_hardMix(in float s1, in float s2, out float oColor) +{ + oColor = BlendHardMixf(s1, s2); +} + +void SGX_blend_reflect(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendReflectf(s1.r, s2.r), + BlendReflectf(s1.g, s2.g), + BlendReflectf(s1.b, s2.b), + BlendReflectf(s1.a, s2.a)); +} +void SGX_blend_reflect(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendReflectf(s1.r, s2.r), + BlendReflectf(s1.g, s2.g), + BlendReflectf(s1.b, s2.b)); +} +void SGX_blend_reflect(in float s1, in float s2, out float oColor) +{ + oColor = BlendReflectf(s1, s2); +} + + +void SGX_blend_glow(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendReflectf(s1.r, s2.r), + BlendReflectf(s1.g, s2.g), + BlendReflectf(s1.b, s2.b), + BlendReflectf(s1.a, s2.a)); +} +void SGX_blend_glow(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendReflectf(s1.r, s2.r), + BlendReflectf(s1.g, s2.g), + BlendReflectf(s1.b, s2.b)); +} +void SGX_blend_glow(in float s1, in float s2, out float oColor) +{ + oColor = BlendReflectf(s1, s2); +} + + +void SGX_blend_phoenix(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendPhoenix(basePixel, blendPixel); +} +void SGX_blend_phoenix(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendPhoenix(basePixel, blendPixel); +} +void SGX_blend_phoenix(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendPhoenix(basePixel, blendPixel); +} + + +void SGX_blend_saturation(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendSaturation4(basePixel, blendPixel); +} +void SGX_blend_saturation(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendSaturation3(basePixel, blendPixel); +} +void SGX_blend_saturation(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendSaturation1(basePixel, blendPixel); +} + + +void SGX_blend_color(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendColor4(basePixel, blendPixel); +} +void SGX_blend_color(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendColor3(basePixel, blendPixel); +} +void SGX_blend_color(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendColor1(basePixel, blendPixel); +} + + +void SGX_blend_luminosity(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendLuminosity4(basePixel, blendPixel); +} +void SGX_blend_luminosity(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendLuminosity3(basePixel, blendPixel); +} +void SGX_blend_luminosity(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendLuminosity1(basePixel, blendPixel); +} + + +//////////////////////////////////////////////////////////////////////////////////// +/// Source modification functions +//////////////////////////////////////////////////////////////////////////////////// + + +void SGX_src_mod_modulate(in vec4 iColor, in vec4 controlVal, out vec4 oColor) +{ + oColor = iColor * controlVal; +} +void SGX_src_mod_modulate(in vec3 iColor, in vec3 controlVal, out vec3 oColor) +{ + oColor = iColor * controlVal; +} +void SGX_src_mod_modulate(in float iColor, in float controlVal, out float oColor) +{ + oColor = iColor * controlVal; +} + +void SGX_src_mod_inv_modulate(in vec4 iColor, in vec4 controlVal, out vec4 oColor) +{ + oColor = mix(iColor, vec4(1.0,1.0,1.0,1.0), controlVal); +} +void SGX_src_mod_inv_modulate(in vec3 iColor, in vec3 controlVal, out vec3 oColor) +{ + oColor = mix(iColor, vec3(1.0,1.0,1.0), controlVal); +} +void SGX_src_mod_inv_modulate(in float iColor, in float controlVal, out float oColor) +{ + oColor = mix(iColor, 1, controlVal); +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SGXLib_LayeredBlending.glsles b/bin/media/RTShaderLib/SGXLib_LayeredBlending.glsles new file mode 100644 index 0000000000..27123984b5 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_LayeredBlending.glsles @@ -0,0 +1,889 @@ +#version 100 +precision highp float; +precision highp int; +precision lowp sampler2D; +precision lowp samplerCube; + +/* +** layered blending & misc math +** Blending modes, RGB/HSL/Contrast/Desaturate, levels control +** +** The shaders below are base on the shaders created by: +** Romain Dura | Romz +** Blog: http://blog.mouaif.org +** Post: http://blog.mouaif.org/?p=94 +*/ + + +/* +** Desaturation +*/ + +vec4 Desaturate(in vec3 color, in float Desaturation) +{ + vec3 grayXfer = vec3(0.3, 0.59, 0.11); + vec3 gray = vec3(dot(grayXfer, color)); + return vec4(mix(color, gray, Desaturation), 1.0); +} + + +/* +** Hue, saturation, luminance +*/ + +vec3 _RGBToHSL(in vec3 color) +{ + vec3 hsl; // init to 0 to avoid warnings ? (and reverse if + remove first part) + + float fmin = min(min(color.r, color.g), color.b); //Min. value of RGB + float fmax = max(max(color.r, color.g), color.b); //Max. value of RGB + float delta = fmax - fmin; //Delta RGB value + + hsl.z = (fmax + fmin) / 2.0; // Luminance + + if (delta == 0.0) //This is a gray, no chroma... + { + hsl.x = 0.0; // Hue + hsl.y = 0.0; // Saturation + } + else //Chromatic data... + { + if (hsl.z < 0.5) + hsl.y = delta / (fmax + fmin); // Saturation + else + hsl.y = delta / (2.0 - fmax - fmin); // Saturation + + float deltaR = (((fmax - color.r) / 6.0) + (delta / 2.0)) / delta; + float deltaG = (((fmax - color.g) / 6.0) + (delta / 2.0)) / delta; + float deltaB = (((fmax - color.b) / 6.0) + (delta / 2.0)) / delta; + + if (color.r == fmax ) + hsl.x = deltaB - deltaG; // Hue + else if (color.g == fmax) + hsl.x = (1.0 / 3.0) + deltaR - deltaB; // Hue + else if (color.b == fmax) + hsl.x = (2.0 / 3.0) + deltaG - deltaR; // Hue + + if (hsl.x < 0.0) + hsl.x += 1.0; // Hue + else if (hsl.x > 1.0) + hsl.x -= 1.0; // Hue + } + + return hsl; +} + +float _HueToRGB(in float f1, in float f2, in float hue) +{ + if (hue < 0.0) + hue += 1.0; + else if (hue > 1.0) + hue -= 1.0; + float res; + if ((6.0 * hue) < 1.0) + res = f1 + (f2 - f1) * 6.0 * hue; + else if ((2.0 * hue) < 1.0) + res = f2; + else if ((3.0 * hue) < 2.0) + res = f1 + (f2 - f1) * ((2.0 / 3.0) - hue) * 6.0; + else + res = f1; + return res; +} + +/* +** Contrast, saturation, brightness +** Code of this function is from TGM's shader pack +** http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=21057 +*/ + +// For all settings: 1.0 = 100% 0.5=50% 1.5 = 150% +vec3 ContrastSaturationBrightness(in vec3 color, in float brt, in float sat, in float con) +{ + // Increase or decrease these values to adjust r, g and b color channels separately + const float AvgLumR = 0.5; + const float AvgLumG = 0.5; + const float AvgLumB = 0.5; + + const vec3 LumCoeff = vec3(0.2125, 0.7154, 0.0721); + + vec3 AvgLumin = vec3(AvgLumR, AvgLumG, AvgLumB); + vec3 brtColor = color * brt; + vec3 intensity = vec3(dot(brtColor, LumCoeff)); + vec3 satColor = mix(intensity, brtColor, sat); + vec3 conColor = mix(AvgLumin, satColor, con); + return conColor; +} + +/* +** Float blending modes +** Adapted from here: http://www.nathanm.com/photoshop-blending-math/ +** But I modified the HardMix (wrong condition), Overlay, SoftLight, ColorDodge, ColorBurn, VividLight, PinLight (inverted layers) ones to have correct results +*/ + +#define BlendLinearDodgef BlendAddf +#define BlendLinearBurnf BlendSubtractf +#define BlendAddf(base, blend) min(base + blend, 1.0) +#define BlendSubtractf(base, blend) max(base + blend - 1.0, 0.0) +#define BlendLightenf(base, blend) max(blend, base) +#define BlendDarkenf(base, blend) min(blend, base) +#define BlendScreenf(base, blend) (1.0 - ((1.0 - base) * (1.0 - blend))) +#define BlendOverlayf(base, blend) (base < 0.5 ? (2.0 * base * blend) : (1.0 - 2.0 * (1.0 - base) * (1.0 - blend))) +#define BlendSoftLightf(base, blend) ((blend < 0.5) ? (2.0 * base * blend + base * base * (1.0 - 2.0 * blend)) : (sqrt(base) * (2.0 * blend - 1.0) + 2.0 * base * (1.0 - blend))) +#define BlendColorDodgef(base, blend) ((blend == 1.0) ? blend : min(base / (1.0 - blend), 1.0)) +#define BlendColorBurnf(base, blend) ((blend == 0.0) ? blend : max((1.0 - ((1.0 - base) / blend)), 0.0)) +#define BlendHardMixf(base, blend) ((BlendVividLightf(base, blend) < 0.5) ? 0.0 : 1.0) + +/* +** Vector3 blending modes +*/ + +// Component wise blending +#define Blend1(base, blend, funcf) funcf(base, blend) +#define Blend3(base, blend, funcf) vec3(funcf(base.r, blend.r), funcf(base.g, blend.g), funcf(base.b, blend.b)) +#define Blend4(base, blend, funcf) vec4(funcf(base.r, blend.r), funcf(base.g, blend.g), funcf(base.b, blend.b), funcf(base.a, blend.a)) + +#define BlendNormal(base, blend) (base) +#define BlendMultiply(base, blend) (base * blend) +#define BlendAverage(base, blend) ((base + blend) / 2.0) +#define BlendAdd(base, blend) min(base + blend, 1.0) +#define BlendSubtract(base, blend) max(base + blend - 1.0, 0.0) +#define BlendDifference(base, blend) abs(base - blend) +#define BlendNegation(base, blend) (1.0 - abs(1.0 - base - blend)) +#define BlendExclusion(base, blend) (base + blend - 2.0 * base * blend) +#define BlendPhoenix(base, blend) (min(base, blend) - max(base, blend) + 1.0) +#define BlendOpacity(base, blend, F, O) (F(base, blend) * O + blend * (1.0 - O)) + +// Hue Blend mode creates the result color by combining the luminance and saturation of the base color with the hue of the blend color. +float BlendHue1(in float base, in float blend) +{ + return base; +} + +vec3 BlendHue3(in vec3 base, in vec3 blend) +{ + vec3 baseHSL = _RGBToHSL(base); + vec3 rgb, inHSL = vec3(_RGBToHSL(blend).r, baseHSL.g, baseHSL.b); + + // The HSLToRGB function has been inlined to here + if (inHSL.y == 0.0) + rgb = vec3(inHSL.z); // Luminance + else + { + float f2; + + if (inHSL.z < 0.5) + f2 = inHSL.z * (1.0 + inHSL.y); + else + f2 = (inHSL.z + inHSL.y) - (inHSL.y * inHSL.z); + + float f1 = 2.0 * inHSL.z - f2; + + rgb.r = _HueToRGB(f1, f2, inHSL.x + (1.0/3.0)); + rgb.g = _HueToRGB(f1, f2, inHSL.x); + rgb.b = _HueToRGB(f1, f2, inHSL.x - (1.0/3.0)); + } + + return rgb; +} + +vec4 BlendHue4(in vec4 base, in vec4 blend) +{ + vec3 hue = BlendHue3(base.xyz, blend.xyz); + return vec4(hue.x, hue.y, hue.z, BlendHue1(base.w, blend.w)); +} + +// Saturation Blend mode creates the result color by combining the luminance and hue of the base color with the saturation of the blend color. +float BlendSaturation1(in float base, in float blend) +{ + return base; +} + +vec3 BlendSaturation3(in vec3 base, in vec3 blend) +{ + vec3 baseHSL = _RGBToHSL(base); + + vec3 rgb, inHSL = vec3(baseHSL.r, _RGBToHSL(blend).g, baseHSL.b); + + // The HSLToRGB function has been inlined to here + if (inHSL.y == 0.0) + rgb = vec3(inHSL.z); // Luminance + else + { + float f2; + + if (inHSL.z < 0.5) + f2 = inHSL.z * (1.0 + inHSL.y); + else + f2 = (inHSL.z + inHSL.y) - (inHSL.y * inHSL.z); + + float f1 = 2.0 * inHSL.z - f2; + + rgb.r = _HueToRGB(f1, f2, inHSL.x + (1.0/3.0)); + rgb.g = _HueToRGB(f1, f2, inHSL.x); + rgb.b = _HueToRGB(f1, f2, inHSL.x - (1.0/3.0)); + } + + return rgb; +} + +vec4 BlendSaturation4(in vec4 base, in vec4 blend) +{ + vec3 hue = BlendSaturation3(base.xyz, blend.xyz); + return vec4(hue.x, hue.y, hue.z, BlendSaturation1(base.w, blend.w)); +} + +// Color Mode keeps the brightness of the base color and applies both the hue and saturation of the blend color. +float BlendColor1(in float base, in float blend) +{ + return base; +} + +vec3 BlendColor3(in vec3 base, in vec3 blend) +{ + vec3 blendHSL = _RGBToHSL(blend); + + vec3 rgb, inHSL = vec3(blendHSL.r, blendHSL.g, _RGBToHSL(base).b); + + // The HSLToRGB function has been inlined to here + if (inHSL.y == 0.0) + rgb = vec3(inHSL.z); // Luminance + else + { + float f2; + + if (inHSL.z < 0.5) + f2 = inHSL.z * (1.0 + inHSL.y); + else + f2 = (inHSL.z + inHSL.y) - (inHSL.y * inHSL.z); + + float f1 = 2.0 * inHSL.z - f2; + + rgb.r = _HueToRGB(f1, f2, inHSL.x + (1.0/3.0)); + rgb.g = _HueToRGB(f1, f2, inHSL.x); + rgb.b = _HueToRGB(f1, f2, inHSL.x - (1.0/3.0)); + } + + return rgb; +} + +vec4 BlendColor4(in vec4 base, in vec4 blend) +{ + vec3 hue = BlendColor3(base.xyz, blend.xyz); + return vec4(hue.x, hue.y, hue.z, BlendColor1(base.w, blend.w)); +} + + +// Luminosity Blend mode creates the result color by combining the hue and saturation of the base color with the luminance of the blend color. +float BlendLuminosity1(in float base, in float blend) +{ + return base; +} + +vec3 BlendLuminosity3(in vec3 base, in vec3 blend) +{ + vec3 baseHSL = _RGBToHSL(base); + vec3 rgb, inHSL = vec3(baseHSL.r, baseHSL.g, _RGBToHSL(blend).b); + + // The HSLToRGB function has been inlined to here + if (inHSL.y == 0.0) + rgb = vec3(inHSL.z); // Luminance + else + { + float f2; + + if (inHSL.z < 0.5) + f2 = inHSL.z * (1.0 + inHSL.y); + else + f2 = (inHSL.z + inHSL.y) - (inHSL.y * inHSL.z); + + float f1 = 2.0 * inHSL.z - f2; + + rgb.r = _HueToRGB(f1, f2, inHSL.x + (1.0/3.0)); + rgb.g = _HueToRGB(f1, f2, inHSL.x); + rgb.b = _HueToRGB(f1, f2, inHSL.x - (1.0/3.0)); + } + + return rgb; +} + +vec4 BlendLuminosity4(in vec4 base, in vec4 blend) +{ + vec3 hue = BlendLuminosity3(base.xyz, blend.xyz); + return vec4(hue.x, hue.y, hue.z, BlendLuminosity1(base.w, blend.w)); +} + +float BlendLinearLightf(in float s1, in float s2) +{ + float oColor; + + if (s2 < 0.5) + { + float s2x = (2.0 * s2); + oColor = BlendSubtractf(s1, s2x); + } + else + { + float s2x = (2.0 * (s2 - 0.5)); + oColor = BlendAddf(s1, s2x); + } + + return oColor; +} + +float BlendVividLightf(in float s1, in float s2) +{ + float oColor; + + if (s2 < 0.5) + { + float s2x = (2.0 * s2); + oColor = BlendColorBurnf(s1, s2x); + } + else + { + float s2x = (2.0 * (s2 - 0.5)); + oColor = BlendColorDodgef(s1, s2x); + } + + return oColor; +} + +float BlendPinLightf(in float s1, in float s2) +{ + float oColor; + + if (s2 < 0.5) + { + float s2x = (2.0 * s2); + oColor = BlendDarkenf(s1, s2x); + } + else + { + float s2x = (2.0 * (s2 - 0.5)); + oColor = BlendLightenf(s1, s2x); + } + + return oColor; +} + +float BlendReflectf(in float s1, in float s2) +{ + float oColor; + + if (s2 == 1.0) + { + oColor = s2; + } + else + { + float s1x = (s1 * s1) / (1.0 - s2); + + oColor = min(s1x, 1.0); + } + + return oColor; +} + +//------------------------------------ +// Interface for RTShader +//------------------------------------ + + +void SGX_blend_normal(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendNormal(basePixel, blendPixel); +} + +void SGX_blend_normal(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendNormal(basePixel, blendPixel); +} + +void SGX_blend_normal(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendNormal(basePixel, blendPixel); +} + + +void SGX_blend_lighten(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendLightenf(basePixel, blendPixel); +} + +void SGX_blend_lighten(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendLightenf(basePixel, blendPixel); +} + +void SGX_blend_lighten(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendLightenf(basePixel, blendPixel); +} + + +void SGX_blend_darken(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendDarkenf(basePixel, blendPixel); +} + +void SGX_blend_darken(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendDarkenf(basePixel, blendPixel); +} + +void SGX_blend_darken(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendDarkenf(basePixel, blendPixel); +} + + +void SGX_blend_multiply(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendMultiply(basePixel, blendPixel); +} + +void SGX_blend_multiply(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendMultiply(basePixel, blendPixel); +} + +void SGX_blend_multiply(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendMultiply(basePixel, blendPixel); +} + + +void SGX_blend_average(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendAverage(basePixel, blendPixel); +} + +void SGX_blend_average(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendAverage(basePixel, blendPixel); +} + +void SGX_blend_average(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendAverage(basePixel, blendPixel); +} + + +void SGX_blend_add(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendAdd(basePixel, blendPixel); +} + +void SGX_blend_add(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendAdd(basePixel, blendPixel); +} + +void SGX_blend_add(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendAdd(basePixel, blendPixel); +} + + +void SGX_blend_subtract(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendSubtract(basePixel, blendPixel); +} + +void SGX_blend_subtract(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendSubtract(basePixel, blendPixel); +} + +void SGX_blend_subtract(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendSubtract(basePixel, blendPixel); +} + + +void SGX_blend_difference(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendDifference(basePixel, blendPixel); +} +void SGX_blend_difference(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendDifference(basePixel, blendPixel); +} +void SGX_blend_difference(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendDifference(basePixel, blendPixel); +} + + +void SGX_blend_negation(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendNegation(basePixel, blendPixel); +} +void SGX_blend_negation(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendNegation(basePixel, blendPixel); +} +void SGX_blend_negation(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendNegation(basePixel, blendPixel); +} + + +void SGX_blend_exclusion(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendExclusion(basePixel, blendPixel); +} +void SGX_blend_exclusion(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendExclusion(basePixel, blendPixel); +} +void SGX_blend_exclusion(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendExclusion(basePixel, blendPixel); +} + + +void SGX_blend_screen(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendScreenf(s1.r, s2.r), + BlendScreenf(s1.g, s2.g), + BlendScreenf(s1.b, s2.b), + BlendScreenf(s1.a, s2.a)); +} +void SGX_blend_screen(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendScreenf(s1.r, s2.r), + BlendScreenf(s1.g, s2.g), + BlendScreenf(s1.b, s2.b)); +} +void SGX_blend_screen(in float s1, in float s2, out float oColor) +{ + oColor = BlendScreenf(s1, s2); +} + + +void SGX_blend_overlay(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendOverlayf(s1.r, s2.r), + BlendOverlayf(s1.g, s2.g), + BlendOverlayf(s1.b, s2.b), + BlendOverlayf(s1.a, s2.a)); +} +void SGX_blend_overlay(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendOverlayf(s1.r, s2.r), + BlendOverlayf(s1.g, s2.g), + BlendOverlayf(s1.b, s2.b)); +} +void SGX_blend_overlay(in float s1, in float s2, out float oColor) +{ + oColor = BlendOverlayf(s1, s2); +} + + +void SGX_blend_softLight(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + float r = BlendSoftLightf(s1.r, s2.r); + float g = BlendSoftLightf(s1.g, s2.g); + float b = BlendSoftLightf(s1.b, s2.b); + float a = BlendSoftLightf(s1.a, s2.a); + oColor = vec4(r,g,b,a); +} +void SGX_blend_softLight(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + float r = BlendSoftLightf(s1.r, s2.r); + float g = BlendSoftLightf(s1.g, s2.g); + float b = BlendSoftLightf(s1.b, s2.b); + oColor = vec4(r,g,b); +} +void SGX_blend_softLight(in float s1, in float s2, out float oColor) +{ + oColor = BlendSoftLightf(s1, s2); +} + + +void SGX_blend_hardLight(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendOverlayf(s1.r, s2.r), + BlendOverlayf(s1.g, s2.g), + BlendOverlayf(s1.b, s2.b), + BlendOverlayf(s1.a, s2.a)); +} +void SGX_blend_hardLight(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendOverlayf(s1.r, s2.r), + BlendOverlayf(s1.g, s2.g), + BlendOverlayf(s1.b, s2.b)); +} +void SGX_blend_hardLight(in float s1, in float s2, out float oColor) +{ + oColor = BlendOverlayf(s1, s2); +} + + +void SGX_blend_colorDodge(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendColorDodgef(s1.r, s2.r), + BlendColorDodgef(s1.g, s2.g), + BlendColorDodgef(s1.b, s2.b), + BlendColorDodgef(s1.a, s2.a)); +} +void SGX_blend_colorDodge(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendColorDodgef(s1.r, s2.r), + BlendColorDodgef(s1.g, s2.g), + BlendColorDodgef(s1.b, s2.b)); +} +void SGX_blend_colorDodge(in float s1, in float s2, out float oColor) +{ + oColor = BlendColorDodgef(s1, s2); +} + + +void SGX_blend_colorBurn(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendColorBurnf(s1.r, s2.r), + BlendColorBurnf(s1.g, s2.g), + BlendColorBurnf(s1.b, s2.b), + BlendColorBurnf(s1.a, s2.a)); +} +void SGX_blend_colorBurn(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendColorBurnf(s1.r, s2.r), + BlendColorBurnf(s1.g, s2.g), + BlendColorBurnf(s1.b, s2.b)); +} +void SGX_blend_colorBurn(in float s1, in float s2, out float oColor) +{ + oColor = BlendColorBurnf(s1, s2); +} + + +void SGX_blend_linearDodge(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendAddf(basePixel, blendPixel); +} +void SGX_blend_linearDodge(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendAddf(basePixel, blendPixel); +} +void SGX_blend_linearDodge(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendAddf(basePixel, blendPixel); +} + + +void SGX_blend_linearBurn(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendSubtractf(basePixel, blendPixel); +} +void SGX_blend_linearBurn(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendSubtractf(basePixel, blendPixel); +} +void SGX_blend_linearBurn(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendSubtractf(basePixel, blendPixel); +} + + +void SGX_blend_linearLight(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendLinearLightf(s1.r, s2.r), + BlendLinearLightf(s1.g, s2.g), + BlendLinearLightf(s1.b, s2.b), + BlendLinearLightf(s1.a, s2.a)); +} +void SGX_blend_linearLight(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendLinearLightf(s1.r, s2.r), + BlendLinearLightf(s1.g, s2.g), + BlendLinearLightf(s1.b, s2.b)); +} +void SGX_blend_linearLight(in float s1, in float s2, out float oColor) +{ + oColor = BlendLinearLightf(s1, s2); +} + + +void SGX_blend_vividLight(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendVividLightf(s1.r, s2.r), + BlendVividLightf(s1.g, s2.g), + BlendVividLightf(s1.b, s2.b), + BlendVividLightf(s1.a, s2.a)); +} +void SGX_blend_vividLight(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendVividLightf(s1.r, s2.r), + BlendVividLightf(s1.g, s2.g), + BlendVividLightf(s1.b, s2.b)); +} +void SGX_blend_vividLight(in float s1, in float s2, out float oColor) +{ + oColor = BlendVividLightf(s1, s2); +} + + +void SGX_blend_pinLight(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendPinLightf(s1.r, s2.r), + BlendPinLightf(s1.g, s2.g), + BlendPinLightf(s1.b, s2.b), + BlendPinLightf(s1.a, s2.a)); +} +void SGX_blend_pinLight(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendPinLightf(s1.r, s2.r), + BlendPinLightf(s1.g, s2.g), + BlendPinLightf(s1.b, s2.b)); +} +void SGX_blend_pinLight(in float s1, in float s2, out float oColor) +{ + oColor = BlendPinLightf(s1, s2); +} + + +void SGX_blend_hardMix(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendHardMixf(s1.r, s2.r), + BlendHardMixf(s1.g, s2.g), + BlendHardMixf(s1.b, s2.b), + BlendHardMixf(s1.a, s2.a)); +} +void SGX_blend_hardMix(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendHardMixf(s1.r, s2.r), + BlendHardMixf(s1.g, s2.g), + BlendHardMixf(s1.b, s2.b)); +} +void SGX_blend_hardMix(in float s1, in float s2, out float oColor) +{ + oColor = BlendHardMixf(s1, s2); +} + +void SGX_blend_reflect(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendReflectf(s1.r, s2.r), + BlendReflectf(s1.g, s2.g), + BlendReflectf(s1.b, s2.b), + BlendReflectf(s1.a, s2.a)); +} +void SGX_blend_reflect(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendReflectf(s1.r, s2.r), + BlendReflectf(s1.g, s2.g), + BlendReflectf(s1.b, s2.b)); +} +void SGX_blend_reflect(in float s1, in float s2, out float oColor) +{ + oColor = BlendReflectf(s1, s2); +} + + +void SGX_blend_glow(in vec4 s1, in vec4 s2, out vec4 oColor) +{ + oColor = vec4(BlendReflectf(s1.r, s2.r), + BlendReflectf(s1.g, s2.g), + BlendReflectf(s1.b, s2.b), + BlendReflectf(s1.a, s2.a)); +} +void SGX_blend_glow(in vec3 s1, in vec3 s2, out vec3 oColor) +{ + oColor = vec3(BlendReflectf(s1.r, s2.r), + BlendReflectf(s1.g, s2.g), + BlendReflectf(s1.b, s2.b)); +} +void SGX_blend_glow(in float s1, in float s2, out float oColor) +{ + oColor = BlendReflectf(s1, s2); +} + + +void SGX_blend_phoenix(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendPhoenix(basePixel, blendPixel); +} +void SGX_blend_phoenix(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendPhoenix(basePixel, blendPixel); +} +void SGX_blend_phoenix(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendPhoenix(basePixel, blendPixel); +} + + +void SGX_blend_saturation(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendSaturation4(basePixel, blendPixel); +} +void SGX_blend_saturation(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendSaturation3(basePixel, blendPixel); +} +void SGX_blend_saturation(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendSaturation1(basePixel, blendPixel); +} + + +void SGX_blend_color(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendColor4(basePixel, blendPixel); +} +void SGX_blend_color(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendColor3(basePixel, blendPixel); +} +void SGX_blend_color(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendColor1(basePixel, blendPixel); +} + + +void SGX_blend_luminosity(in vec4 basePixel, in vec4 blendPixel, out vec4 oColor) +{ + oColor = BlendLuminosity4(basePixel, blendPixel); +} +void SGX_blend_luminosity(in vec3 basePixel, in vec3 blendPixel, out vec3 oColor) +{ + oColor = BlendLuminosity3(basePixel, blendPixel); +} +void SGX_blend_luminosity(in float basePixel, in float blendPixel, out float oColor) +{ + oColor = BlendLuminosity1(basePixel, blendPixel); +} + + +//////////////////////////////////////////////////////////////////////////////////// +/// Source modification functions +//////////////////////////////////////////////////////////////////////////////////// + + +void SGX_src_mod_modulate(in vec4 iColor, in vec4 controlVal, out vec4 oColor) +{ + oColor = iColor * controlVal; +} +void SGX_src_mod_modulate(in vec3 iColor, in vec3 controlVal, out vec3 oColor) +{ + oColor = iColor * controlVal; +} +void SGX_src_mod_modulate(in float iColor, in float controlVal, out float oColor) +{ + oColor = iColor * controlVal; +} + +void SGX_src_mod_inv_modulate(in vec4 iColor, in vec4 controlVal, out vec4 oColor) +{ + oColor = mix(iColor, vec4(1.0), controlVal); +} +void SGX_src_mod_inv_modulate(in vec3 iColor, in vec3 controlVal, out vec3 oColor) +{ + oColor = mix(iColor, vec3(1.0), controlVal); +} +void SGX_src_mod_inv_modulate(in float iColor, in float controlVal, out float oColor) +{ + oColor = mix(iColor, 1.0, controlVal); +} diff --git a/bin/media/RTShaderLib/SGXLib_LayeredBlending.hlsl b/bin/media/RTShaderLib/SGXLib_LayeredBlending.hlsl new file mode 100644 index 0000000000..4ba809e20b --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_LayeredBlending.hlsl @@ -0,0 +1,730 @@ +/* +** layered blending & misc math +** Blending modes, RGB/HSL/Contrast/Desaturate +** +** The shaders below are base on the shaders created by: +** Romain Dura | Romz +** Blog: http://blog.mouaif.org +** Post: http://blog.mouaif.org/?p=94 +*/ + + +/* +** Desaturation +*/ + +float4 Desaturate(float3 color, float Desaturation) +{ + float3 grayXfer = float3(0.3, 0.59, 0.11); + float grayf = dot(grayXfer, color); + float3 gray = float3(grayf, grayf, grayf); + return float4(lerp(color, gray, Desaturation), 1.0); +} + + +/* +** Hue, saturation, luminance +*/ + +float3 RGBToHSL(float3 color) +{ + float3 hsl; // init to 0 to avoid warnings ? (and reverse if + remove first part) + + float fmin = min(min(color.r, color.g), color.b); //Min. value of RGB + float fmax = max(max(color.r, color.g), color.b); //Max. value of RGB + float delta = fmax - fmin; //Delta RGB value + + hsl.z = (fmax + fmin) / 2.0; // Luminance + + if (delta == 0.0) //This is a gray, no chroma... + { + hsl.x = 0.0; // Hue + hsl.y = 0.0; // Saturation + } + else //Chromatic data... + { + if (hsl.z < 0.5) + hsl.y = delta / (fmax + fmin); // Saturation + else + hsl.y = delta / (2.0 - fmax - fmin); // Saturation + + float deltaR = (((fmax - color.r) / 6.0) + (delta / 2.0)) / delta; + float deltaG = (((fmax - color.g) / 6.0) + (delta / 2.0)) / delta; + float deltaB = (((fmax - color.b) / 6.0) + (delta / 2.0)) / delta; + + if (color.r == fmax ) + hsl.x = deltaB - deltaG; // Hue + else if (color.g == fmax) + hsl.x = (1.0 / 3.0) + deltaR - deltaB; // Hue + else if (color.b == fmax) + hsl.x = (2.0 / 3.0) + deltaG - deltaR; // Hue + + if (hsl.x < 0.0) + hsl.x += 1.0; // Hue + else if (hsl.x > 1.0) + hsl.x -= 1.0; // Hue + } + + return hsl; +} + +float HueToRGB(float f1, float f2, float hue) +{ + if (hue < 0.0) + hue += 1.0; + else if (hue > 1.0) + hue -= 1.0; + float res; + if ((6.0 * hue) < 1.0) + res = f1 + (f2 - f1) * 6.0 * hue; + else if ((2.0 * hue) < 1.0) + res = f2; + else if ((3.0 * hue) < 2.0) + res = f1 + (f2 - f1) * ((2.0 / 3.0) - hue) * 6.0; + else + res = f1; + return res; +} + +float3 HSLToRGB(float3 hsl) +{ + float3 rgb; + + if (hsl.y == 0.0) + rgb = float3(hsl.z, hsl.z, hsl.z); // Luminance + else + { + float f2; + + if (hsl.z < 0.5) + f2 = hsl.z * (1.0 + hsl.y); + else + f2 = (hsl.z + hsl.y) - (hsl.y * hsl.z); + + float f1 = 2.0 * hsl.z - f2; + + rgb.r = HueToRGB(f1, f2, hsl.x + (1.0/3.0)); + rgb.g = HueToRGB(f1, f2, hsl.x); + rgb.b= HueToRGB(f1, f2, hsl.x - (1.0/3.0)); + } + + return rgb; +} + +/* +** Contrast, saturation, brightness +** Code of this function is from TGM's shader pack +** http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=21057 +*/ + +// For all settings: 1.0 = 100% 0.5=50% 1.5 = 150% +float3 ContrastSaturationBrightness(float3 color, float brt, float sat, float con) +{ + // Increase or decrease these values to adjust r, g and b color channels separately + const float AvgLumR = 0.5; + const float AvgLumG = 0.5; + const float AvgLumB = 0.5; + + const float3 LumCoeff = float3(0.2125, 0.7154, 0.0721); + + float3 AvgLumin = float3(AvgLumR, AvgLumG, AvgLumB); + float3 brtColor = color * brt; + float intensityf = dot(brtColor, LumCoeff); + float3 intensity = float3(intensityf, intensityf, intensityf); + float3 satColor = lerp(intensity, brtColor, sat); + float3 conColor = lerp(AvgLumin, satColor, con); + return conColor; +} + +/* +** Float blending modes +** Adapted from here: http://www.nathanm.com/photoshop-blending-math/ +** But I modified the HardMix (wrong condition), Overlay, SoftLight, ColorDodge, ColorBurn, VividLight, PinLight (inverted layers) ones to have correct results +*/ + +#define BlendLinearDodgef BlendAddf +#define BlendLinearBurnf BlendSubtractf +#define BlendAddf(base, blend) min(base + blend, 1.0) +#define BlendSubtractf(base, blend) max(base + blend - 1.0, 0.0) +#define BlendLightenf(base, blend) max(blend, base) +#define BlendDarkenf(base, blend) min(blend, base) +#define BlendLinearLightf(base, blend) (blend < 0.5 ? BlendLinearBurnf(base, (2.0 * blend)) : BlendLinearDodgef(base, (2.0 * (blend - 0.5)))) +#define BlendScreenf(base, blend) (1.0 - ((1.0 - base) * (1.0 - blend))) +#define BlendOverlayf(base, blend) (base < 0.5 ? (2.0 * base * blend) : (1.0 - 2.0 * (1.0 - base) * (1.0 - blend))) +#define BlendSoftLightf(base, blend) ((blend < 0.5) ? (2.0 * base * blend + base * base * (1.0 - 2.0 * blend)) : (sqrt(base) * (2.0 * blend - 1.0) + 2.0 * base * (1.0 - blend))) +#define BlendColorDodgef(base, blend) ((blend == 1.0) ? blend : min(base / (1.0 - blend), 1.0)) +#define BlendColorBurnf(base, blend) ((blend == 0.0) ? blend : max((1.0 - ((1.0 - base) / blend)), 0.0)) +#define BlendVividLightf(base, blend) ((blend < 0.5) ? BlendColorBurnf(base, (2.0 * blend)) : BlendColorDodgef(base, (2.0 * (blend - 0.5)))) +#define BlendPinLightf(base, blend) ((blend < 0.5) ? BlendDarkenf(base, (2.0 * blend)) : BlendLightenf(base, (2.0 *(blend - 0.5)))) +#define BlendHardMixf(base, blend) ((BlendVividLightf(base, blend) < 0.5) ? 0.0 : 1.0) +#define BlendReflectf(base, blend) ((blend == 1.0) ? blend : min(base * base / (1.0 - blend), 1.0)) + + + +/* +** Vector3 blending modes +*/ + +// Component wise blending +#define Blend1(base, blend, funcf) funcf(base, blend) +#define Blend3(base, blend, funcf) float3(funcf(base.r, blend.r), funcf(base.g, blend.g), funcf(base.b, blend.b)) +#define Blend4(base, blend, funcf) float4(funcf(base.r, blend.r), funcf(base.g, blend.g), funcf(base.b, blend.b), funcf(base.a, blend.a)) + +#define BlendNormal(base, blend) (base) +#define BlendLighten BlendLightenf +#define BlendDarken BlendDarkenf +#define BlendMultiply(base, blend) (base * blend) +#define BlendAverage(base, blend) ((base + blend) / 2.0) +#define BlendAdd(base, blend) min(base + blend, 1.0) +#define BlendSubtract(base, blend) max(base + blend - 1.0, 0.0) +#define BlendDifference(base, blend) abs(base - blend) +#define BlendNegation(base, blend) (1.0 - abs(1.0 - base - blend)) +#define BlendExclusion(base, blend) (base + blend - 2.0 * base * blend) + +#define BlendScreen1(base, blend) Blend1(base, blend, BlendScreenf) +#define BlendOverlay1(base, blend) Blend1(base, blend, BlendOverlayf) +#define BlendSoftLight1(base, blend) Blend1(base, blend, BlendSoftLightf) +#define BlendHardLight1(base, blend) BlendOverlay1(blend, base) +#define BlendColorDodge1(base, blend) Blend1(base, blend, BlendColorDodgef) +#define BlendColorBurn1(base, blend) Blend1(base, blend, BlendColorBurnf) +// Linear Light is another contrast-increasing mode +// If the blend color is darker than midgray, Linear Light darkens the image by decreasing the brightness. If the blend color is lighter than midgray, the result is a brighter image due to increased brightness. +#define BlendLinearLight1(base, blend) Blend1(base, blend, BlendLinearLightf) +#define BlendVividLight1(base, blend) Blend1(base, blend, BlendVividLightf) +#define BlendPinLight1(base, blend) Blend1(base, blend, BlendPinLightf) +#define BlendHardMix1(base, blend) Blend1(base, blend, BlendHardMixf) +#define BlendReflect1(base, blend) Blend1(base, blend, BlendReflectf) +#define BlendGlow1(base, blend) BlendReflect1(blend, base) + + +#define BlendScreen3(base, blend) Blend3(base, blend, BlendScreenf) +#define BlendOverlay3(base, blend) Blend3(base, blend, BlendOverlayf) +#define BlendSoftLight3(base, blend) Blend3(base, blend, BlendSoftLightf) +#define BlendHardLight3(base, blend) BlendOverlay3(blend, base) +#define BlendColorDodge3(base, blend) Blend3(base, blend, BlendColorDodgef) +#define BlendColorBurn3(base, blend) Blend3(base, blend, BlendColorBurnf) +// Linear Light is another contrast-increasing mode +// If the blend color is darker than midgray, Linear Light darkens the image by decreasing the brightness. If the blend color is lighter than midgray, the result is a brighter image due to increased brightness. +#define BlendLinearLight3(base, blend) Blend3(base, blend, BlendLinearLightf) +#define BlendVividLight3(base, blend) Blend3(base, blend, BlendVividLightf) +#define BlendPinLight3(base, blend) Blend3(base, blend, BlendPinLightf) +#define BlendHardMix3(base, blend) Blend3(base, blend, BlendHardMixf) +#define BlendReflect3(base, blend) Blend3(base, blend, BlendReflectf) +#define BlendGlow3(base, blend) BlendReflect3(blend, base) + + +#define BlendScreen4(base, blend) Blend4(base, blend, BlendScreenf) +#define BlendOverlay4(base, blend) Blend4(base, blend, BlendOverlayf) +#define BlendSoftLight4(base, blend) Blend4(base, blend, BlendSoftLightf) +#define BlendHardLight4(base, blend) BlendOverlay4(blend, base) +#define BlendColorDodge4(base, blend) Blend4(base, blend, BlendColorDodgef) +#define BlendColorBurn4(base, blend) Blend4(base, blend, BlendColorBurnf) +// Linear Light is another contrast-increasing mode +// If the blend color is darker than midgray, Linear Light darkens the image by decreasing the brightness. If the blend color is lighter than midgray, the result is a brighter image due to increased brightness. +#define BlendLinearLight4(base, blend) Blend4(base, blend, BlendLinearLightf) +#define BlendVividLight4(base, blend) Blend4(base, blend, BlendVividLightf) +#define BlendPinLight4(base, blend) Blend4(base, blend, BlendPinLightf) +#define BlendHardMix4(base, blend) Blend4(base, blend, BlendHardMixf) +#define BlendReflect4(base, blend) Blend4(base, blend, BlendReflectf) +#define BlendGlow4(base, blend) BlendReflect4(blend, base) + + +#define BlendLinearDodge BlendAdd +#define BlendLinearBurn BlendSubtract + +#define BlendPhoenix(base, blend) (min(base, blend) - max(base, blend) + 1.0) + + +#define BlendOpacity(base, blend, F, O) (F(base, blend) * O + blend * (1.0 - O)) + +// Hue Blend mode creates the result color by combining the luminance and saturation of the base color with the hue of the blend color. +float BlendHue1(float base, float blend) +{ + return base; +} +float3 BlendHue3(float3 base, float3 blend) +{ + float3 baseHSL = RGBToHSL(base); + return HSLToRGB(float3(RGBToHSL(blend).r, baseHSL.g, baseHSL.b)); +} +float4 BlendHue4(float4 base, float4 blend) +{ + float3 hue = BlendHue3(base.xyz, blend.xyz); + return float4(hue.x, hue.y, hue.z, BlendHue1(base.w, blend.w)); +} + +// Saturation Blend mode creates the result color by combining the luminance and hue of the base color with the saturation of the blend color. +float BlendSaturation1(float base, float blend) +{ + return base; +} +float3 BlendSaturation3(float3 base, float3 blend) +{ + float3 baseHSL = RGBToHSL(base); + return HSLToRGB(float3(baseHSL.r, RGBToHSL(blend).g, baseHSL.b)); +} +float4 BlendSaturation4(float4 base, float4 blend) +{ + float3 hue = BlendSaturation3(base.xyz, blend.xyz); + return float4(hue.x, hue.y, hue.z, BlendSaturation1(base.w, blend.w)); +} + +// Color Mode keeps the brightness of the base color and applies both the hue and saturation of the blend color. +float BlendColor1(float base, float blend) +{ + return base; +} +float3 BlendColor3(float3 base, float3 blend) +{ + float3 blendHSL = RGBToHSL(blend); + return HSLToRGB(float3(blendHSL.r, blendHSL.g, RGBToHSL(base).b)); +} +float4 BlendColor4(float4 base, float4 blend) +{ + float3 hue = BlendColor3(base.xyz, blend.xyz); + return float4(hue.x, hue.y, hue.z, BlendColor1(base.w, blend.w)); +} + + + +// Luminosity Blend mode creates the result color by combining the hue and saturation of the base color with the luminance of the blend color. +float BlendLuminosity1(float base, float blend) +{ + return base; +} +float3 BlendLuminosity3(float3 base, float3 blend) +{ + float3 baseHSL = RGBToHSL(base); + return HSLToRGB(float3(baseHSL.r, baseHSL.g, RGBToHSL(blend).b)); +} +float4 BlendLuminosity4(float4 base, float4 blend) +{ + float3 hue = BlendLuminosity3(base.xyz, blend.xyz); + return float4(hue.x, hue.y, hue.z, BlendLuminosity1(base.w, blend.w)); +} + +//------------------------------------ +// Interface for RTShader +//------------------------------------ + +void SGX_blend_normal(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendNormal(basePixel, blendPixel); +} +void SGX_blend_normal(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendNormal(basePixel, blendPixel); +} +void SGX_blend_normal(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendNormal(basePixel, blendPixel); +} + + +void SGX_blend_lighten(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendLighten(basePixel, blendPixel); +} +void SGX_blend_lighten(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendLighten(basePixel, blendPixel); +} +void SGX_blend_lighten(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendLighten(basePixel, blendPixel); +} + +void SGX_blend_darken(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendDarken(basePixel, blendPixel); +} +void SGX_blend_darken(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendDarken(basePixel, blendPixel); +} +void SGX_blend_darken(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendDarken(basePixel, blendPixel); +} + + +void SGX_blend_multiply(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendMultiply(basePixel, blendPixel); +} +void SGX_blend_multiply(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendMultiply(basePixel, blendPixel); +} +void SGX_blend_multiply(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendMultiply(basePixel, blendPixel); +} + + +void SGX_blend_average(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendAverage(basePixel, blendPixel); +} +void SGX_blend_average(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendAverage(basePixel, blendPixel); +} +void SGX_blend_average(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendAverage(basePixel, blendPixel); +} + + +void SGX_blend_add(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendAdd(basePixel, blendPixel); +} +void SGX_blend_add(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendAdd(basePixel, blendPixel); +} +void SGX_blend_add(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendAdd(basePixel, blendPixel); +} + + +void SGX_blend_subtract(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendSubtract(basePixel, blendPixel); +} +void SGX_blend_subtract(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendSubtract(basePixel, blendPixel); +} +void SGX_blend_subtract(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendSubtract(basePixel, blendPixel); +} + + +void SGX_blend_difference(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendDifference(basePixel, blendPixel); +} +void SGX_blend_difference(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendDifference(basePixel, blendPixel); +} +void SGX_blend_difference(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendDifference(basePixel, blendPixel); +} + + +void SGX_blend_negation(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendNegation(basePixel, blendPixel); +} +void SGX_blend_negation(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendNegation(basePixel, blendPixel); +} +void SGX_blend_negation(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendNegation(basePixel, blendPixel); +} + + +void SGX_blend_exclusion(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendExclusion(basePixel, blendPixel); +} +void SGX_blend_exclusion(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendExclusion(basePixel, blendPixel); +} +void SGX_blend_exclusion(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendExclusion(basePixel, blendPixel); +} + + +void SGX_blend_screen(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendScreenf); +} +void SGX_blend_screen(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendScreenf); +} +void SGX_blend_screen(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendScreenf); +} + +void SGX_blend_overlay(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendOverlayf); +} +void SGX_blend_overlay(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendOverlayf); +} +void SGX_blend_overlay(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendOverlayf); +} + +void SGX_blend_softLight(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendSoftLightf); +} +void SGX_blend_softLight(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendSoftLightf); +} +void SGX_blend_softLight(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendSoftLightf); +} + + +void SGX_blend_hardLight(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendOverlayf); +} +void SGX_blend_hardLight(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendOverlayf); +} +void SGX_blend_hardLight(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendOverlayf); +} + + +void SGX_blend_colorDodge(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendColorDodgef); +} +void SGX_blend_colorDodge(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendColorDodgef); +} +void SGX_blend_colorDodge(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendColorDodgef); +} + + +void SGX_blend_colorBurn(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendColorBurnf); +} +void SGX_blend_colorBurn(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendColorBurnf); +} +void SGX_blend_colorBurn(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendColorBurnf); +} + + +void SGX_blend_linearDodge(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendLinearDodge(basePixel, blendPixel); +} +void SGX_blend_linearDodge(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendLinearDodge(basePixel, blendPixel); +} +void SGX_blend_linearDodge(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendLinearDodge(basePixel, blendPixel); +} + + +void SGX_blend_linearBurn(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendLinearBurn(basePixel, blendPixel); +} +void SGX_blend_linearBurn(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendLinearBurn(basePixel, blendPixel); +} +void SGX_blend_linearBurn(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendLinearBurn(basePixel, blendPixel); +} + + +void SGX_blend_linearLight(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendLinearLightf); +} +void SGX_blend_linearLight(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendLinearLightf); +} +void SGX_blend_linearLight(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendLinearLightf); +} + + +void SGX_blend_vividLight(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendVividLightf); +} +void SGX_blend_vividLight(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendVividLightf); +} +void SGX_blend_vividLight(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendVividLightf); +} + + +void SGX_blend_pinLight(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendPinLightf); +} +void SGX_blend_pinLight(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendPinLightf); +} +void SGX_blend_pinLight(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendPinLightf); +} + + +void SGX_blend_hardMix(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendHardMixf); +} +void SGX_blend_hardMix(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendHardMixf); +} +void SGX_blend_hardMix(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendHardMixf); +} + + +void SGX_blend_reflect(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendReflectf); +} +void SGX_blend_reflect(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendReflectf); +} +void SGX_blend_reflect(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendReflectf); +} + +void SGX_blend_glow(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = Blend4(basePixel, blendPixel, BlendReflectf); +} +void SGX_blend_glow(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = Blend3(basePixel, blendPixel, BlendReflectf); +} +void SGX_blend_glow(float basePixel, float blendPixel, out float oColor) +{ + oColor = Blend1(basePixel, blendPixel, BlendReflectf); +} + + +void SGX_blend_phoenix(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendPhoenix(basePixel, blendPixel); +} +void SGX_blend_phoenix(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendPhoenix(basePixel, blendPixel); +} +void SGX_blend_phoenix(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendPhoenix(basePixel, blendPixel); +} + + +void SGX_blend_saturation(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendSaturation4(basePixel, blendPixel); +} +void SGX_blend_saturation(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendSaturation3(basePixel, blendPixel); +} +void SGX_blend_saturation(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendSaturation1(basePixel, blendPixel); +} + + +void SGX_blend_color(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendColor4(basePixel, blendPixel); +} +void SGX_blend_color(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendColor3(basePixel, blendPixel); +} +void SGX_blend_color(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendColor1(basePixel, blendPixel); +} + + +void SGX_blend_luminosity(float4 basePixel, float4 blendPixel, out float4 oColor) +{ + oColor = BlendLuminosity4(basePixel, blendPixel); +} +void SGX_blend_luminosity(float3 basePixel, float3 blendPixel, out float3 oColor) +{ + oColor = BlendLuminosity3(basePixel, blendPixel); +} +void SGX_blend_luminosity(float basePixel, float blendPixel, out float oColor) +{ + oColor = BlendLuminosity1(basePixel, blendPixel); +} + + +//////////////////////////////////////////////////////////////////////////////////// +/// Source modification functions +//////////////////////////////////////////////////////////////////////////////////// + + +void SGX_src_mod_modulate(float4 iColor, float4 controlVal, out float4 oColor) +{ + oColor = iColor * controlVal; +} +void SGX_src_mod_modulate(float3 iColor, float3 controlVal, out float3 oColor) +{ + oColor = iColor * controlVal; +} +void SGX_src_mod_modulate(float iColor, float controlVal, out float oColor) +{ + oColor = iColor * controlVal; +} + +void SGX_src_mod_inv_modulate(float4 iColor, float4 controlVal, out float4 oColor) +{ + oColor = lerp(iColor, 1, controlVal); +} +void SGX_src_mod_inv_modulate(float3 iColor, float3 controlVal, out float3 oColor) +{ + oColor = lerp(iColor, 1, controlVal); +} +void SGX_src_mod_inv_modulate(float iColor, float controlVal, out float oColor) +{ + oColor = lerp(iColor, 1, controlVal); +} + + + diff --git a/bin/media/RTShaderLib/SGXLib_NormalMapLighting.cg b/bin/media/RTShaderLib/SGXLib_NormalMapLighting.cg new file mode 100644 index 0000000000..53a069f15a --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_NormalMapLighting.cg @@ -0,0 +1,257 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: SGXLib_NormalMapLighting +// Program Desc: Normal map lighting functions. +// Program Type: Vertex/Pixel shader +// Language: CG +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_ConstructTBNMatrix(in float3 vNormal, + in float3 vTangent, + out float3x3 vOut) +{ + float3 vBinormal = cross(vTangent, vNormal); + + vOut = float3x3(vTangent, vBinormal, vNormal); +} + +//----------------------------------------------------------------------------- +void SGX_TransformNormal(in float3x3 m, + in float3 v, + out float3 vOut) +{ + vOut = mul(m, v); +} + +//----------------------------------------------------------------------------- +void SGX_TransformNormal(in float4x4 m, + in float3 v, + out float3 vOut) +{ + vOut = mul((float3x3)m, v); +} + +//----------------------------------------------------------------------------- +void SGX_TransformPosition(in float4x4 m, + in float4 v, + out float3 vOut) +{ + vOut = mul(m, v).xyz; +} + +//----------------------------------------------------------------------------- +void SGX_FetchNormal(in sampler2D s, + in float2 uv, + out float3 vOut) +{ + vOut = 2 * tex2D(s, uv).xyz - 1; +} + +//----------------------------------------------------------------------------- +void SGX_Generate_Parallax_Texcoord(in sampler2D normalHeightMap, + in float2 texCoord, + in float3 eyeVec, + in float2 scaleBias, + out float2 newTexCoord) +{ + eyeVec = normalize(eyeVec); + float height = tex2D(normalHeightMap, texCoord).a; + float displacement = (height * scaleBias.x) + scaleBias.y; + float3 scaledEyeDir = eyeVec * displacement; + newTexCoord = (scaledEyeDir + float3(texCoord, 1.0)).xy; +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_Diffuse( + in float3 vTSNormal, + in float3 vTSNegLightDir, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + float3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float nDotL = dot(vTSNormal, vTSNegLightDirNorm); + + vOut = vBaseColour + vDiffuseColour * saturate(nDotL); +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_DiffuseSpecular( + in float3 vTSNormal, + in float3 vTSView, + in float3 vTSNegLightDir, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float nDotL = dot(vTSNormal, vTSNegLightDirNorm); + float3 vTSViewNorm = normalize(vTSView); + float3 vHalfWay = normalize(vTSView + vTSNegLightDir); + float nDotH = dot(vTSNormal, vHalfWay); + + if (nDotL > 0) + { + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower); + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Point_Diffuse( + in float3 vTSNormal, + in float3 vTSToLight, + in float4 vAttParams, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + vOut = vBaseColour; + + float fLightD = length(vTSToLight); + float nDotL = dot(vTSNormal, normalize(vTSToLight)); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOut += vDiffuseColour * nDotL * fAtten; + } +} + + + +//----------------------------------------------------------------------------- +void SGX_Light_Point_DiffuseSpecular( + in float3 vTSNormal, + in float3 vTSView, + in float3 vTSToLight, + in float4 vAttParams, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float fLightD = length(vTSToLight); + float3 vTSNegLightDirNorm = normalize(vTSToLight); + float nDotL = dot(vTSNormal, vTSNegLightDirNorm); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vTSViewNorm = normalize(vTSView); + float3 vHalfWay = normalize(vTSViewNorm + vTSNegLightDirNorm); + float nDotH = dot(vTSNormal, vHalfWay); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower) * fAtten; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_Diffuse( + in float3 vTSNormal, + in float3 vTSToLight, + in float3 vTSNegLightDir, + in float4 vAttParams, + in float3 vSpotParams, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + vOut = vBaseColour; + + float fLightD = length(vTSToLight); + float3 vTSToLightNorm = normalize(vTSToLight); + float nDotL = dot(vTSNormal, vTSToLightNorm); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vTSNegLightDirNorm, vTSToLightNorm); + float fSpotE = saturate((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y)); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOut += vDiffuseColour * nDotL * fAtten * fSpotT; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_DiffuseSpecular( + in float3 vTSNormal, + in float3 vTSView, + in float3 vTSToLight, + in float3 vTSNegLightDir, + in float4 vAttParams, + in float3 vSpotParams, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float fLightD = length(vTSToLight); + float3 vTSToLightNorm = normalize(vTSToLight); + float nDotL = dot(vTSNormal, vTSToLightNorm); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float3 vTSViewNorm = normalize(vTSView); + float3 vHalfWay = normalize(vTSViewNorm + vTSNegLightDirNorm); + float nDotH = dot(vTSNormal, vHalfWay); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vTSNegLightDirNorm, vTSToLightNorm); + float fSpotE = saturate((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y)); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten * fSpotT; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower) * fAtten * fSpotT; + } +} diff --git a/bin/media/RTShaderLib/SGXLib_NormalMapLighting.glsl b/bin/media/RTShaderLib/SGXLib_NormalMapLighting.glsl new file mode 100644 index 0000000000..847b469ff3 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_NormalMapLighting.glsl @@ -0,0 +1,269 @@ +#version 120 +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: SGXLib_NormalMapLighting +// Program Desc: Normal map lighting functions. +// Program Type: Vertex/Pixel shader +// Language: GLSL +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_ConstructTBNMatrix(in vec3 vNormal, + in vec3 vTangent, + out mat3 vOut) +{ + vec3 vBinormal = cross(vTangent, vNormal); + + vOut[0][0] = vTangent.x; + vOut[1][0] = vTangent.y; + vOut[2][0] = vTangent.z; + + vOut[0][1] = vBinormal.x; + vOut[1][1] = vBinormal.y; + vOut[2][1] = vBinormal.z; + + vOut[0][2] = vNormal.x; + vOut[1][2] = vNormal.y; + vOut[2][2] = vNormal.z; +} + +//----------------------------------------------------------------------------- +void SGX_TransformNormal(in mat3 m, + in vec3 v, + out vec3 vOut) +{ + vOut = (m * v) ; +} + +//----------------------------------------------------------------------------- +void SGX_TransformNormal(in mat4 m, + in vec3 v, + out vec3 vOut) +{ + vOut = (m * vec4(v, 1.0)).xyz ; +} + +//----------------------------------------------------------------------------- +void SGX_TransformPosition(in mat4 m, + in vec4 v, + out vec3 vOut) +{ + vOut = (m * v).xyz; +} + +//----------------------------------------------------------------------------- +void SGX_FetchNormal(in sampler2D s, + in vec2 uv, + out vec3 vOut) +{ + vOut = 2.0 * texture2D(s, uv).xyz - 1.0; +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_Diffuse( + in vec3 vTSNormal, + in vec3 vTSNegLightDir, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vec3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float nDotL = dot(vTSNormal, vTSNegLightDirNorm); + + vOut = vBaseColour + vDiffuseColour * clamp(nDotL, 0.0, 1.0); +} + +//----------------------------------------------------------------------------- +void SGX_Generate_Parallax_Texcoord(in sampler2D normalHeightMap, + in vec2 texCoord, + in vec3 eyeVec, + in vec2 scaleBias, + out vec2 newTexCoord) +{ + eyeVec = normalize(eyeVec); + float height = texture2D(normalHeightMap, texCoord).a; + float displacement = (height * scaleBias.x) + scaleBias.y; + vec3 scaledEyeDir = eyeVec * displacement; + newTexCoord = (scaledEyeDir + vec3(texCoord, 1.0)).xy; +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_DiffuseSpecular( + in vec3 vTSNormal, + in vec3 vTSView, + in vec3 vTSNegLightDir, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float nDotL = dot(vTSNormal, vTSNegLightDirNorm); + vec3 vTSViewNorm = normalize(vTSView); + vec3 vHalfWay = normalize(vTSView + vTSNegLightDir); + float nDotH = dot(vTSNormal, vHalfWay); + + if (nDotL > 0.0) + { + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower); + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Point_Diffuse( + in vec3 vTSNormal, + in vec3 vTSToLight, + in vec4 vAttParams, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vOut = vBaseColour; + + float fLightD = length(vTSToLight); + float nDotL = dot(vTSNormal, normalize(vTSToLight)); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + float fAtten = 1.0 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOut += vDiffuseColour * nDotL * fAtten; + } +} + + + +//----------------------------------------------------------------------------- +void SGX_Light_Point_DiffuseSpecular( + in vec3 vTSNormal, + in vec3 vTSView, + in vec3 vTSToLight, + in vec4 vAttParams, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float fLightD = length(vTSToLight); + vec3 vTSNegLightDirNorm = normalize(vTSToLight); + float nDotL = dot(vTSNormal, vTSNegLightDirNorm); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vTSViewNorm = normalize(vTSView); + vec3 vHalfWay = normalize(vTSViewNorm + vTSNegLightDirNorm); + float nDotH = dot(vTSNormal, vHalfWay); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower) * fAtten; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_Diffuse( + in vec3 vTSNormal, + in vec3 vTSToLight, + in vec3 vTSNegLightDir, + in vec4 vAttParams, + in vec3 vSpotParams, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vOut = vBaseColour; + + float fLightD = length(vTSToLight); + vec3 vTSToLightNorm = normalize(vTSToLight); + float nDotL = dot(vTSNormal, vTSToLightNorm); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vTSNegLightDirNorm, vTSToLightNorm); + float fSpotE = clamp((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y), 0.0, 1.0); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOut += vDiffuseColour * nDotL * fAtten * fSpotT; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_DiffuseSpecular( + in vec3 vTSNormal, + in vec3 vTSView, + in vec3 vTSToLight, + in vec3 vTSNegLightDir, + in vec4 vAttParams, + in vec3 vSpotParams, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float fLightD = length(vTSToLight); + vec3 vTSToLightNorm = normalize(vTSToLight); + float nDotL = dot(vTSNormal, vTSToLightNorm); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + vec3 vTSViewNorm = normalize(vTSView); + vec3 vHalfWay = normalize(vTSViewNorm + vTSNegLightDirNorm); + float nDotH = dot(vTSNormal, vHalfWay); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vTSNegLightDirNorm, vTSToLightNorm); + float fSpotE = clamp((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y), 0.0, 1.0); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten * fSpotT; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower) * fAtten * fSpotT; + } +} + diff --git a/bin/media/RTShaderLib/SGXLib_NormalMapLighting.glsles b/bin/media/RTShaderLib/SGXLib_NormalMapLighting.glsles new file mode 100644 index 0000000000..6ea28e3b24 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_NormalMapLighting.glsles @@ -0,0 +1,264 @@ +#version 100 +precision highp float; +precision highp int; +precision lowp sampler2D; +precision lowp samplerCube; +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: SGXLib_NormalMapLighting +// Program Desc: Normal map lighting functions. +// Program Type: Vertex/Pixel shader +// Language: GLSL ES +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_ConstructTBNMatrix(in vec3 vNormal, + in vec3 vTangent, + out mat3 vOut) +{ + vec3 vBinormal = cross(vTangent, vNormal); + + vOut[0][0] = vTangent.x; + vOut[1][0] = vTangent.y; + vOut[2][0] = vTangent.z; + + vOut[0][1] = vBinormal.x; + vOut[1][1] = vBinormal.y; + vOut[2][1] = vBinormal.z; + + vOut[0][2] = vNormal.x; + vOut[1][2] = vNormal.y; + vOut[2][2] = vNormal.z; +} + +//----------------------------------------------------------------------------- +void SGX_TransformNormal(in mat3 m, + in vec3 v, + out vec3 vOut) +{ + vOut = (m * v) ; +} + +//----------------------------------------------------------------------------- +void SGX_TransformNormal(in mat4 m, + in vec3 v, + out vec3 vOut) +{ + vOut = (m * vec4(v, 1.0)).xyz ; +} + +//----------------------------------------------------------------------------- +void SGX_TransformPosition(in mat4 m, + in vec4 v, + out vec3 vOut) +{ + vOut = (m * v).xyz; +} + +//----------------------------------------------------------------------------- +void SGX_FetchNormal(in sampler2D s, + in vec2 uv, + out vec3 vOut) +{ + vOut = 2.0 * texture2D(s, uv).xyz - 1.0; +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_Diffuse(in vec3 vTSNormal, + in vec3 vTSNegLightDir, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vec3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float nDotL = dot(vTSNormal, vTSNegLightDirNorm); + + vOut = vBaseColour + vDiffuseColour * clamp(nDotL, 0.0, 1.0); +} + +//----------------------------------------------------------------------------- +void SGX_Generate_Parallax_Texcoord(in sampler2D normalHeightMap, + in vec2 texCoord, + in vec3 eyeVec, + in vec2 scaleBias, + out vec2 newTexCoord) +{ + eyeVec = normalize(eyeVec); + float height = texture2D(normalHeightMap, texCoord).a; + float displacement = (height * scaleBias.x) + scaleBias.y; + vec3 scaledEyeDir = eyeVec * displacement; + newTexCoord = (scaledEyeDir + vec3(texCoord, 1.0)).xy; +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_DiffuseSpecular(in vec3 vTSNormal, + in vec3 vTSView, + in vec3 vTSNegLightDir, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float nDotL = dot(vTSNormal, vTSNegLightDirNorm); + vec3 vTSViewNorm = normalize(vTSView); + vec3 vHalfWay = normalize(vTSView + vTSNegLightDir); + float nDotH = dot(vTSNormal, vHalfWay); + + if (nDotL > 0.0) + { + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower); + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Point_Diffuse(in vec3 vTSNormal, + in vec3 vTSToLight, + in vec4 vAttParams, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vOut = vBaseColour; + + float fLightD = length(vTSToLight); + float nDotL = dot(vTSNormal, normalize(vTSToLight)); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + float fAtten = 1.0 / (vAttParams.y + vAttParams.z * fLightD + vAttParams.w * fLightD * fLightD); + + vOut += vDiffuseColour * nDotL * fAtten; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Point_DiffuseSpecular(in vec3 vTSNormal, + in vec3 vTSView, + in vec3 vTSToLight, + in vec4 vAttParams, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float fLightD = length(vTSToLight); + vec3 vTSNegLightDirNorm = normalize(vTSToLight); + float nDotL = dot(vTSNormal, vTSNegLightDirNorm); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vTSViewNorm = normalize(vTSView); + vec3 vHalfWay = normalize(vTSViewNorm + vTSNegLightDirNorm); + float nDotH = dot(vTSNormal, vHalfWay); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z * fLightD + vAttParams.w * fLightD * fLightD); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower) * fAtten; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_Diffuse(in vec3 vTSNormal, + in vec3 vTSToLight, + in vec3 vTSNegLightDir, + in vec4 vAttParams, + in vec3 vSpotParams, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vOut = vBaseColour; + + float fLightD = length(vTSToLight); + vec3 vTSToLightNorm = normalize(vTSToLight); + float nDotL = dot(vTSNormal, vTSToLightNorm); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z * fLightD + vAttParams.w * fLightD * fLightD); + float rho = dot(vTSNegLightDirNorm, vTSToLightNorm); + float fSpotE = clamp((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y), 0.0, 1.0); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOut += vDiffuseColour * nDotL * fAtten * fSpotT; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_DiffuseSpecular(in vec3 vTSNormal, + in vec3 vTSView, + in vec3 vTSToLight, + in vec3 vTSNegLightDir, + in vec4 vAttParams, + in vec3 vSpotParams, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float fLightD = length(vTSToLight); + vec3 vTSToLightNorm = normalize(vTSToLight); + float nDotL = dot(vTSNormal, vTSToLightNorm); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + vec3 vTSViewNorm = normalize(vTSView); + vec3 vHalfWay = normalize(vTSViewNorm + vTSNegLightDirNorm); + float nDotH = dot(vTSNormal, vHalfWay); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z * fLightD + vAttParams.w * fLightD * fLightD); + float rho = dot(vTSNegLightDirNorm, vTSToLightNorm); + float fSpotE = clamp((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y), 0.0, 1.0); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten * fSpotT; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower) * fAtten * fSpotT; + } +} diff --git a/bin/media/RTShaderLib/SGXLib_NormalMapLighting.hlsl b/bin/media/RTShaderLib/SGXLib_NormalMapLighting.hlsl new file mode 100644 index 0000000000..39390f3f3b --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_NormalMapLighting.hlsl @@ -0,0 +1,257 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: SGXLib_NormalMapLighting +// Program Desc: Normal map lighting functions. +// Program Type: Vertex/Pixel shader +// Language: HLSL +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_ConstructTBNMatrix(in float3 vNormal, + in float3 vTangent, + out float3x3 vOut) +{ + float3 vBinormal = cross(vTangent, vNormal); + + vOut = float3x3(vTangent, vBinormal, vNormal); +} + +//----------------------------------------------------------------------------- +void SGX_TransformNormal(in float3x3 m, + in float3 v, + out float3 vOut) +{ + vOut = mul(m, v); +} + +//----------------------------------------------------------------------------- +void SGX_TransformNormal(in float4x4 m, + in float3 v, + out float3 vOut) +{ + vOut = mul((float3x3)m, v); +} + +//----------------------------------------------------------------------------- +void SGX_TransformPosition(in float4x4 m, + in float4 v, + out float3 vOut) +{ + vOut = mul(m, v).xyz; +} + +//----------------------------------------------------------------------------- +void SGX_FetchNormal(in sampler2D s, + in float2 uv, + out float3 vOut) +{ + vOut = 2 * tex2D(s, uv).xyz - 1; +} + +//----------------------------------------------------------------------------- +void SGX_Generate_Parallax_Texcoord(in sampler2D normalHeightMap, + in float2 texCoord, + in float3 eyeVec, + in float2 scaleBias, + out float2 newTexCoord) +{ + eyeVec = normalize(eyeVec); + float height = tex2D(normalHeightMap, texCoord).a; + float displacement = (height * scaleBias.x) + scaleBias.y; + float3 scaledEyeDir = eyeVec * displacement; + newTexCoord = (scaledEyeDir + float3(texCoord, 1.0)).xy; +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_Diffuse( + in float3 vTSNormal, + in float3 vTSNegLightDir, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + float3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float nDotL = dot(vTSNormal, vTSNegLightDirNorm); + + vOut = vBaseColour + vDiffuseColour * saturate(nDotL); +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_DiffuseSpecular( + in float3 vTSNormal, + in float3 vTSView, + in float3 vTSNegLightDir, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float nDotL = dot(vTSNormal, vTSNegLightDirNorm); + float3 vTSViewNorm = normalize(vTSView); + float3 vHalfWay = normalize(vTSView + vTSNegLightDir); + float nDotH = dot(vTSNormal, vHalfWay); + + if (nDotL > 0) + { + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower); + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Point_Diffuse( + in float3 vTSNormal, + in float3 vTSToLight, + in float4 vAttParams, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + vOut = vBaseColour; + + float fLightD = length(vTSToLight); + float nDotL = dot(vTSNormal, normalize(vTSToLight)); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOut += vDiffuseColour * nDotL * fAtten; + } +} + + + +//----------------------------------------------------------------------------- +void SGX_Light_Point_DiffuseSpecular( + in float3 vTSNormal, + in float3 vTSView, + in float3 vTSToLight, + in float4 vAttParams, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float fLightD = length(vTSToLight); + float3 vTSNegLightDirNorm = normalize(vTSToLight); + float nDotL = dot(vTSNormal, vTSNegLightDirNorm); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vTSViewNorm = normalize(vTSView); + float3 vHalfWay = normalize(vTSViewNorm + vTSNegLightDirNorm); + float nDotH = dot(vTSNormal, vHalfWay); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower) * fAtten; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_Diffuse( + in float3 vTSNormal, + in float3 vTSToLight, + in float3 vTSNegLightDir, + in float4 vAttParams, + in float3 vSpotParams, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + vOut = vBaseColour; + + float fLightD = length(vTSToLight); + float3 vTSToLightNorm = normalize(vTSToLight); + float nDotL = dot(vTSNormal, vTSToLightNorm); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vTSNegLightDirNorm, vTSToLightNorm); + float fSpotE = saturate((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y)); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOut += vDiffuseColour * nDotL * fAtten * fSpotT; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_DiffuseSpecular( + in float3 vTSNormal, + in float3 vTSView, + in float3 vTSToLight, + in float3 vTSNegLightDir, + in float4 vAttParams, + in float3 vSpotParams, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float fLightD = length(vTSToLight); + float3 vTSToLightNorm = normalize(vTSToLight); + float nDotL = dot(vTSNormal, vTSToLightNorm); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vTSNegLightDirNorm = normalize(vTSNegLightDir); + float3 vTSViewNorm = normalize(vTSView); + float3 vHalfWay = normalize(vTSViewNorm + vTSNegLightDirNorm); + float nDotH = dot(vTSNormal, vHalfWay); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vTSNegLightDirNorm, vTSToLightNorm); + float fSpotE = saturate((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y)); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten * fSpotT; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower) * fAtten * fSpotT; + } +} diff --git a/bin/media/RTShaderLib/SGXLib_PerPixelLighting.cg b/bin/media/RTShaderLib/SGXLib_PerPixelLighting.cg new file mode 100644 index 0000000000..bd4b955ab1 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_PerPixelLighting.cg @@ -0,0 +1,226 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: SGXLib_Lighting +// Program Desc: Per pixel lighting functions. +// Program Type: Vertex/Pixel shader +// Language: CG +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_TransformNormal(in float4x4 m, + in float3 v, + out float3 vOut) +{ + vOut = mul((float3x3)m, v); +} + +//----------------------------------------------------------------------------- +void SGX_TransformPosition(in float4x4 mWorldView, + in float4 vPos, + out float3 vOut) +{ + vOut = mul(mWorldView, vPos).xyz; +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_Diffuse( + in float3 vNormal, + in float3 vNegLightDirView, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vNegLightDirView); + + vOut = vBaseColour + vDiffuseColour * saturate(nDotL); +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_DiffuseSpecular( + in float3 vNormal, + in float3 vViewPos, + in float3 vNegLightDirView, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vNegLightDirView); + float3 vView = -normalize(vViewPos); + float3 vHalfWay = normalize(vView + vNegLightDirView); + float nDotH = dot(vNormalView, vHalfWay); + + if (nDotL > 0) + { + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower); + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Point_Diffuse( + in float3 vNormal, + in float3 vViewPos, + in float3 vLightPosView, + in float4 vAttParams, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + vOut = vBaseColour; + + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, normalize(vLightView)); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOut += vDiffuseColour * nDotL * fAtten; + } +} + + + +//----------------------------------------------------------------------------- +void SGX_Light_Point_DiffuseSpecular( + in float3 vNormal, + in float3 vViewPos, + in float3 vLightPosView, + in float4 vAttParams, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vView = -normalize(vViewPos); + float3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower) * fAtten; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_Diffuse( + in float3 vNormal, + in float3 vViewPos, + in float3 vLightPosView, + in float3 vNegLightDirView, + in float4 vAttParams, + in float3 vSpotParams, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + vOut = vBaseColour; + + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = saturate((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y)); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOut += vDiffuseColour * nDotL * fAtten * fSpotT; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_DiffuseSpecular( + in float3 vNormal, + in float3 vViewPos, + in float3 vLightPosView, + in float3 vNegLightDirView, + in float4 vAttParams, + in float3 vSpotParams, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vLightView); + + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vView = -normalize(vViewPos); + float3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = saturate((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y)); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten * fSpotT; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower) * fAtten * fSpotT; + } +} diff --git a/bin/media/RTShaderLib/SGXLib_PerPixelLighting.glsl b/bin/media/RTShaderLib/SGXLib_PerPixelLighting.glsl new file mode 100644 index 0000000000..7e035c2d47 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_PerPixelLighting.glsl @@ -0,0 +1,228 @@ +#version 120 +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: SGXLib_Lighting +// Program Desc: Per pixel lighting functions. +// Program Type: Vertex/Pixel shader +// Language: GLSL +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_TransformNormal(in mat4 m, + in vec3 v, + out vec3 vOut) +{ + vOut = (m * vec4(v, 1.0)).xyz; +} + +//----------------------------------------------------------------------------- +void SGX_TransformPosition(in mat4 mWorldView, + in vec4 vPos, + out vec3 vOut) +{ + vOut = (mWorldView * vPos).xyz; +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_Diffuse( + in vec3 vNormal, + in vec3 vNegLightDirView, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vec3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vNegLightDirView); + + vOut = vBaseColour + vDiffuseColour * clamp(nDotL, 0.0, 1.0); +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_DiffuseSpecular( + in vec3 vNormal, + in vec3 vViewPos, + in vec3 vNegLightDirView, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vNegLightDirView); + vec3 vView = -normalize(vViewPos); + vec3 vHalfWay = normalize(vView + vNegLightDirView); + float nDotH = dot(vNormalView, vHalfWay); + + if (nDotL > 0.0) + { + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower); + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Point_Diffuse( + in vec3 vNormal, + in vec3 vViewPos, + in vec3 vLightPosView, + in vec4 vAttParams, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vOut = vBaseColour; + + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vec3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, normalize(vLightView)); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + float fAtten = 1.0 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOut += vDiffuseColour * nDotL * fAtten; + } +} + + + +//----------------------------------------------------------------------------- +void SGX_Light_Point_DiffuseSpecular( + in vec3 vNormal, + in vec3 vViewPos, + in vec3 vLightPosView, + in vec4 vAttParams, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + vec3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vView = -normalize(vViewPos); + vec3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower) * fAtten; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_Diffuse( + in vec3 vNormal, + in vec3 vViewPos, + in vec3 vLightPosView, + in vec3 vNegLightDirView, + in vec4 vAttParams, + in vec3 vSpotParams, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vOut = vBaseColour; + + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + vec3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + float fAtten = 1.0 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = clamp((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y), 0.0, 1.0); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOut += vDiffuseColour * nDotL * fAtten * fSpotT; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_DiffuseSpecular( + in vec3 vNormal, + in vec3 vViewPos, + in vec3 vLightPosView, + in vec3 vNegLightDirView, + in vec4 vAttParams, + in vec3 vSpotParams, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + vec3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vLightView); + + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vView = -normalize(vViewPos); + vec3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = clamp((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y), 0.0, 1.0); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten * fSpotT; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower) * fAtten * fSpotT; + } +} + diff --git a/bin/media/RTShaderLib/SGXLib_PerPixelLighting.glsles b/bin/media/RTShaderLib/SGXLib_PerPixelLighting.glsles new file mode 100644 index 0000000000..ad3d78e760 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_PerPixelLighting.glsles @@ -0,0 +1,223 @@ +#version 100 +precision highp float; +precision highp int; +precision lowp sampler2D; +precision lowp samplerCube; +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: SGXLib_Lighting +// Program Desc: Per pixel lighting functions. +// Program Type: Vertex/Pixel shader +// Language: GLSL ES +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_TransformNormal(in mat4 m, + in vec3 v, + out vec3 vOut) +{ + vOut = (m * vec4(v, 1.0)).xyz; +} + +//----------------------------------------------------------------------------- +void SGX_TransformPosition(in mat4 mWorldView, + in vec4 vPos, + out vec3 vOut) +{ + vOut = (mWorldView * vPos).xyz; +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_Diffuse(in vec3 vNormal, + in vec3 vNegLightDirView, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vec3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vNegLightDirView); + + vOut = vBaseColour + vDiffuseColour * clamp(nDotL, 0.0, 1.0); +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_DiffuseSpecular(in vec3 vNormal, + in vec3 vViewPos, + in vec3 vNegLightDirView, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vNegLightDirView); + vec3 vView = -normalize(vViewPos); + vec3 vHalfWay = normalize(vView + vNegLightDirView); + float nDotH = dot(vNormalView, vHalfWay); + + if (nDotL > 0.0) + { + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower); + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Point_Diffuse(in vec3 vNormal, + in vec3 vViewPos, + in vec3 vLightPosView, + in vec4 vAttParams, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vOut = vBaseColour; + + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vec3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, normalize(vLightView)); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + float fAtten = 1.0 / (vAttParams.y + vAttParams.z * fLightD + vAttParams.w * fLightD * fLightD); + + vOut += vDiffuseColour * nDotL * fAtten; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Point_DiffuseSpecular(in vec3 vNormal, + in vec3 vViewPos, + in vec3 vLightPosView, + in vec4 vAttParams, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + vec3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vView = -normalize(vViewPos); + vec3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z * fLightD + vAttParams.w * fLightD * fLightD); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower) * fAtten; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_Diffuse(in vec3 vNormal, + in vec3 vViewPos, + in vec3 vLightPosView, + in vec3 vNegLightDirView, + in vec4 vAttParams, + in vec3 vSpotParams, + in vec3 vDiffuseColour, + in vec3 vBaseColour, + out vec3 vOut) +{ + vOut = vBaseColour; + + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + vec3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + float fAtten = 1.0 / (vAttParams.y + vAttParams.z * fLightD + vAttParams.w * fLightD * fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = clamp((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y), 0.0, 1.0); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOut += vDiffuseColour * nDotL * fAtten * fSpotT; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_DiffuseSpecular(in vec3 vNormal, + in vec3 vViewPos, + in vec3 vLightPosView, + in vec3 vNegLightDirView, + in vec4 vAttParams, + in vec3 vSpotParams, + in vec3 vDiffuseColour, + in vec3 vSpecularColour, + in float fSpecularPower, + in vec3 vBaseDiffuseColour, + in vec3 vBaseSpecularColour, + out vec3 vOutDiffuse, + out vec3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + vec3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + vec3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vLightView); + + + if (nDotL > 0.0 && fLightD <= vAttParams.x) + { + vec3 vView = -normalize(vViewPos); + vec3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1.0 / (vAttParams.y + vAttParams.z * fLightD + vAttParams.w * fLightD * fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = clamp((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y), 0.0, 1.0); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten * fSpotT; + vOutSpecular += vSpecularColour * pow(clamp(nDotH, 0.0, 1.0), fSpecularPower) * fAtten * fSpotT; + } +} diff --git a/bin/media/RTShaderLib/SGXLib_PerPixelLighting.hlsl b/bin/media/RTShaderLib/SGXLib_PerPixelLighting.hlsl new file mode 100644 index 0000000000..611b2e284e --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_PerPixelLighting.hlsl @@ -0,0 +1,226 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Program Name: SGXLib_Lighting +// Program Desc: Per pixel lighting functions. +// Program Type: Vertex/Pixel shader +// Language: HLSL +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_TransformNormal(in float4x4 m, + in float3 v, + out float3 vOut) +{ + vOut = mul((float3x3)m, v); +} + +//----------------------------------------------------------------------------- +void SGX_TransformPosition(in float4x4 mWorldView, + in float4 vPos, + out float3 vOut) +{ + vOut = mul(mWorldView, vPos).xyz; +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_Diffuse( + in float3 vNormal, + in float3 vNegLightDirView, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vNegLightDirView); + + vOut = vBaseColour + vDiffuseColour * saturate(nDotL); +} + +//----------------------------------------------------------------------------- +void SGX_Light_Directional_DiffuseSpecular( + in float3 vNormal, + in float3 vViewPos, + in float3 vNegLightDirView, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vNegLightDirView); + float3 vView = -normalize(vViewPos); + float3 vHalfWay = normalize(vView + vNegLightDirView); + float nDotH = dot(vNormalView, vHalfWay); + + if (nDotL > 0) + { + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower); + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Point_Diffuse( + in float3 vNormal, + in float3 vViewPos, + in float3 vLightPosView, + in float4 vAttParams, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + vOut = vBaseColour; + + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, normalize(vLightView)); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOut += vDiffuseColour * nDotL * fAtten; + } +} + + + +//----------------------------------------------------------------------------- +void SGX_Light_Point_DiffuseSpecular( + in float3 vNormal, + in float3 vViewPos, + in float3 vLightPosView, + in float4 vAttParams, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vView = -normalize(vViewPos); + float3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower) * fAtten; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_Diffuse( + in float3 vNormal, + in float3 vViewPos, + in float3 vLightPosView, + in float3 vNegLightDirView, + in float4 vAttParams, + in float3 vSpotParams, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + vOut = vBaseColour; + + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vLightView); + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = saturate((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y)); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOut += vDiffuseColour * nDotL * fAtten * fSpotT; + } +} + +//----------------------------------------------------------------------------- +void SGX_Light_Spot_DiffuseSpecular( + in float3 vNormal, + in float3 vViewPos, + in float3 vLightPosView, + in float3 vNegLightDirView, + in float4 vAttParams, + in float3 vSpotParams, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vLightView = vLightPosView - vViewPos; + float fLightD = length(vLightView); + vLightView = normalize(vLightView); + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vLightView); + + + if (nDotL > 0 && fLightD <= vAttParams.x) + { + float3 vView = -normalize(vViewPos); + float3 vHalfWay = normalize(vView + vLightView); + float nDotH = dot(vNormalView, vHalfWay); + float fAtten = 1 / (vAttParams.y + vAttParams.z*fLightD + vAttParams.w*fLightD*fLightD); + float rho = dot(vNegLightDirView, vLightView); + float fSpotE = saturate((rho - vSpotParams.y) / (vSpotParams.x - vSpotParams.y)); + float fSpotT = pow(fSpotE, vSpotParams.z); + + vOutDiffuse += vDiffuseColour * nDotL * fAtten * fSpotT; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower) * fAtten * fSpotT; + } +} diff --git a/bin/media/RTShaderLib/SGXLib_TextureAtlas.cg b/bin/media/RTShaderLib/SGXLib_TextureAtlas.cg new file mode 100644 index 0000000000..87f1db9c20 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_TextureAtlas.cg @@ -0,0 +1,122 @@ +//----------------------------------------------------------------------------- +// Program Name: SGXLib_IntegratedPSSM +// Program Desc: Texture Atlas functions. +// Program Type: Vertex/Pixel shader +// Language: CG +//----------------------------------------------------------------------------- + +float mipmapLevel(float2 coords, float2 texSize) +{ + coords = coords.xy * texSize; + float2 dx = ddx(coords.xy); + float2 dy = ddy(coords.xy); + float Px = length(dx); + float Py = length(dy); + float Pmax = max(Px, Py); + return log2(max(Pmax,1)); +} + + +//----------------------------------------------------------------------------- +void SGX_Atlas_Sample_Auto_Adjust(in sampler2D sample, + in float2 origTexcoord, + in float2 atlasTexcoord, + in float4 textureData, + in float2 imageSize, + out float4 texel) +{ + // + // Most of the idea for this function has been taken from the code under the webpage: + // http://www.gamedev.net/topic/534149-solved-texture-seams-using-atlas-with-screenshots/ + + + // origTexcoord - original texture coordintates as received from the vertex buffer. + // atlasTexcoord - texture coordinates that have gone through on which different mathematical + // functions to simulate different texture addressing modes (wrap, mirror, clamp) + // textureData.xy - top left corner (in 0-1 units) where the needed texture in the texture atlas begins + // textureData.zw - width and height in power of 2 for the needed texture in the texture atlas + // imageSize - size of the image in pixels + // texel - [Output] The color of the pixel at the requested position + + float2 startPos = textureData.xy; + + + // calculate the tileSize by using the power of 2 value + float2 pwrs = textureData.zw; + + //Calculate the power of 2 size of the maximum avialable Mipmap + //Note: We limit the amount of available LODs to [actual number] - 2 + //as some atlas packaging tools do not include the last 2 LODs + //when packeging DXT format atlas textures. + float availableLODCount = min(pwrs.x,pwrs.y) - 2; + float2 tileSize = pow(float2(2.0,2.0),pwrs); + + // retrieve the mipmap level for this pixel clamped by the power of 2 value + float lod = clamp(mipmapLevel(origTexcoord, tileSize), 0, availableLODCount); + + float2 relativeTileSize = tileSize / imageSize; + // get the width/height of the mip surface we've decided on + float2 mipSize = pow(float2(2.0,2.0), pwrs.xy - ceil(lod)); + + // compute the inverse fraction size for the tile + //float2 lodSize = mipSize * imageSize / tileSize; + float2 lodSizeInv = (relativeTileSize / mipSize); + //compute the new coordinates + //atlasTexcoord = atlasTexcoord * ((lodSize * (tileSize / imageSize) - 1.0) / lodSize) + (0.5 / lodSize) + startPos; + atlasTexcoord = atlasTexcoord * (relativeTileSize - lodSizeInv) + (0.5 * lodSizeInv) + startPos; + + //return the pixel from the correct mip surface of the atlas + texel = tex2Dlod(sample, float4(atlasTexcoord, 0, lod)); +} +//----------------------------------------------------------------------------- +void SGX_Atlas_Sample_Normal(in sampler2D sample, + in float2 origTexcoord, + in float2 atlasTexcoord, + in float4 textureData, + in float2 imageSize, + out float4 texel) +{ + //texcoord contain: + // x = texture atlas u + // y = texture atlas v + // z = derivative of original u + // w = derivative of original v + atlasTexcoord = textureData.xy + (atlasTexcoord * pow(float2(2.0,2.0),textureData.zw) / imageSize); + //texel = tex2Dlod(sample, float4(atlasTexcoord, 0,0)); + texel = tex2D(sample, atlasTexcoord); +} + +//----------------------------------------------------------------------------- +void SGX_Atlas_Wrap(in float inpCoord, out float outCoord) +{ + outCoord = frac(inpCoord); +} + +//----------------------------------------------------------------------------- +void SGX_Atlas_Clamp(in float inpCoord, out float outCoord) +{ + outCoord = saturate(inpCoord); +} +//----------------------------------------------------------------------------- +void SGX_Atlas_Mirror(in float inpCoord, out float outCoord) +{ + outCoord = (inpCoord + 1) * 0.5; + outCoord = abs(frac(outCoord) * 2 - 1); +} + +//----------------------------------------------------------------------------- +void SGX_Atlas_Border(in float inpCoord, out float outCoord) +{ + // + //The shader needs to check whether the original texcoord are beyond the 0,1 range. + //The shader attempts to do so without using if statments which are complicated for shaders + // + + //if texcoord is in the 0,1 range then check will equal 0, + //Otherwise it will equal the number 1 or greater + float check = step(inpCoord, 0) + step(1, inpCoord); + + //using the check value transport the value of the texcoord beyond the 0,1 range so it will + //recive the border color + outCoord = abs(inpCoord) + check * 2; +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SGXLib_TextureAtlas.glsl b/bin/media/RTShaderLib/SGXLib_TextureAtlas.glsl new file mode 100644 index 0000000000..69a3221a2f --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_TextureAtlas.glsl @@ -0,0 +1,124 @@ +//----------------------------------------------------------------------------- +// Program Name: SGXLib_IntegratedPSSM +// Program Desc: Texture Atlas functions. +// Program Type: Vertex/Pixel shader +// Language: GLSL +//----------------------------------------------------------------------------- +#version 120 +#extension GL_ARB_shader_texture_lod : require + +float mipmapLevel(vec2 coords, vec2 texSize) +{ + coords = coords.xy * texSize; + vec2 dx = dFdx(coords.xy); + vec2 dy = dFdy(coords.xy); + float Px = length(dx); + float Py = length(dy); + float Pmax = max(Px, Py); + return log2(max(Pmax,1)); +} + + +//----------------------------------------------------------------------------- +void SGX_Atlas_Sample_Auto_Adjust(in sampler2D sample, + in vec2 origTexcoord, + in vec2 atlasTexcoord, + in vec4 textureData, + in vec2 imageSize, + out vec4 texel) +{ + // + // Most of the idea for this function has been taken from the code under the webpage: + // http://www.gamedev.net/topic/534149-solved-texture-seams-using-atlas-with-screenshots/ + + + // origTexcoord - original texture coordintates as received from the vertex buffer. + // atlasTexcoord - texture coordinates that have gone through on which different mathematical + // functions to simulate different texture addressing modes (wrap, mirror, clamp) + // textureData.xy - top left corner (in 0-1 units) where the needed texture in the texture atlas begins + // textureData.zw - width and height in power of 2 for the needed texture in the texture atlas + // imageSize - size of the image in pixels + // texel - [Output] The color of the pixel at the requested position + + vec2 startPos = textureData.xy; + + + // calculate the tileSize by using the power of 2 value + vec2 pwrs = textureData.zw; + + //Calculate the power of 2 size of the maximum avialable Mipmap + //Note: We limit the amount of available LODs to [actual number] - 2 + //as some atlas packaging tools do not include the last 2 LODs + //when packeging DXT format atlas textures. + float availableLODCount = min(pwrs.x,pwrs.y) - 2; + vec2 tileSize = pow(vec2(2.0,2.0),pwrs); + + // retrieve the mipmap level for this pixel clamped by the power of 2 value + float lod = clamp(mipmapLevel(origTexcoord, tileSize), 0, availableLODCount); + + vec2 relativeTileSize = tileSize / imageSize; + // get the width/height of the mip surface we've decided on + vec2 mipSize = pow(vec2(2.0,2.0), pwrs.xy - ceil(lod)); + + // compute the inverse fraction size for the tile + //vec2 lodSize = mipSize * imageSize / tileSize; + vec2 lodSizeInv = (relativeTileSize / mipSize); + //compute the new coordinates + //atlasTexcoord = atlasTexcoord * ((lodSize * (tileSize / imageSize) - 1.0) / lodSize) + (0.5 / lodSize) + startPos; + atlasTexcoord = atlasTexcoord * (relativeTileSize - lodSizeInv) + (0.5 * lodSizeInv) + startPos; + + //return the pixel from the correct mip surface of the atlas + texel = texture2DLod(sample, atlasTexcoord, lod); +} +//----------------------------------------------------------------------------- +void SGX_Atlas_Sample_Normal(in sampler2D sample, + in vec2 origTexcoord, + in vec2 atlasTexcoord, + in vec4 textureData, + in vec2 imageSize, + out vec4 texel) +{ + //texcoord contain: + // x = texture atlas u + // y = texture atlas v + // z = derivative of original u + // w = derivative of original v + atlasTexcoord = textureData.xy + (atlasTexcoord * pow(vec2(2.0,2.0),textureData.zw) / imageSize); + //texel = texture2DLod(sample, vec4(atlasTexcoord, 0,0)); + texel = texture2D(sample, atlasTexcoord); +} + +//----------------------------------------------------------------------------- +void SGX_Atlas_Wrap(in float inpCoord, out float outCoord) +{ + outCoord = fract(inpCoord); +} + +//----------------------------------------------------------------------------- +void SGX_Atlas_Clamp(in float inpCoord, out float outCoord) +{ + outCoord = clamp(inpCoord, 0.0, 1.0); +} +//----------------------------------------------------------------------------- +void SGX_Atlas_Mirror(in float inpCoord, out float outCoord) +{ + outCoord = (inpCoord + 1) * 0.5; + outCoord = abs(fract(outCoord) * 2 - 1); +} + +//----------------------------------------------------------------------------- +void SGX_Atlas_Border(in float inpCoord, out float outCoord) +{ + // + //The shader needs to check whether the original texcoord are beyond the 0,1 range. + //The shader attempts to do so without using if statments which are complicated for shaders + // + + //if texcoord is in the 0,1 range then check will equal 0, + //Otherwise it will equal the number 1 or greater + float check = step(inpCoord, 0) + step(1, inpCoord); + + //using the check value transport the value of the texcoord beyond the 0,1 range so it will + //recive the border color + outCoord = abs(inpCoord) + check * 2; +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SGXLib_TextureAtlas.glsles b/bin/media/RTShaderLib/SGXLib_TextureAtlas.glsles new file mode 100644 index 0000000000..2ae482240a --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_TextureAtlas.glsles @@ -0,0 +1,122 @@ +//----------------------------------------------------------------------------- +// Program Name: SGXLib_IntegratedPSSM +// Program Desc: Texture Atlas functions. +// Program Type: Vertex/Pixel shader +// Language: GLSLES +//----------------------------------------------------------------------------- + +float mipmapLevel(vec2 coords, vec2 texSize) +{ + coords = coords.xy * texSize; + vec2 dx = ddx(coords.xy); + vec2 dy = ddy(coords.xy); + float Px = length(dx); + float Py = length(dy); + float Pmax = max(Px, Py); + return log2(max(Pmax,1)); +} + + +//----------------------------------------------------------------------------- +void SGX_Atlas_Sample_Auto_Adjust(in sampler2D sample, + in vec2 origTexcoord, + in vec2 atlasTexcoord, + in vec4 textureData, + in vec2 imageSize, + out vec4 texel) +{ + // + // Most of the idea for this function has been taken from the code under the webpage: + // http://www.gamedev.net/topic/534149-solved-texture-seams-using-atlas-with-screenshots/ + + + // origTexcoord - original texture coordintates as received from the vertex buffer. + // atlasTexcoord - texture coordinates that have gone through on which different mathematical + // functions to simulate different texture addressing modes (wrap, mirror, clamp) + // textureData.xy - top left corner (in 0-1 units) where the needed texture in the texture atlas begins + // textureData.zw - width and height in power of 2 for the needed texture in the texture atlas + // imageSize - size of the image in pixels + // texel - [Output] The color of the pixel at the requested position + + vec2 startPos = textureData.xy; + + + // calculate the tileSize by using the power of 2 value + vec2 pwrs = textureData.zw; + + //Calculate the power of 2 size of the maximum avialable Mipmap + //Note: We limit the amount of available LODs to [actual number] - 2 + //as some atlas packaging tools do not include the last 2 LODs + //when packeging DXT format atlas textures. + float availableLODCount = min(pwrs.x,pwrs.y) - 2; + vec2 tileSize = pow(vec2(2.0,2.0),pwrs); + + // retrieve the mipmap level for this pixel clamped by the power of 2 value + float lod = clamp(mipmapLevel(origTexcoord, tileSize), 0, availableLODCount); + + vec2 relativeTileSize = tileSize / imageSize; + // get the width/height of the mip surface we've decided on + vec2 mipSize = pow(vec2(2.0,2.0), pwrs.xy - ceil(lod)); + + // compute the inverse fraction size for the tile + //vec2 lodSize = mipSize * imageSize / tileSize; + vec2 lodSizeInv = (relativeTileSize / mipSize); + //compute the new coordinates + //atlasTexcoord = atlasTexcoord * ((lodSize * (tileSize / imageSize) - 1.0) / lodSize) + (0.5 / lodSize) + startPos; + atlasTexcoord = atlasTexcoord * (relativeTileSize - lodSizeInv) + (0.5 * lodSizeInv) + startPos; + + //return the pixel from the correct mip surface of the atlas + texel = texture2DLod(sample, vec4(atlasTexcoord, 0, lod)); +} +//----------------------------------------------------------------------------- +void SGX_Atlas_Sample_Normal(in sampler2D sample, + in vec2 origTexcoord, + in vec2 atlasTexcoord, + in vec4 textureData, + in vec2 imageSize, + out vec4 texel) +{ + //texcoord contain: + // x = texture atlas u + // y = texture atlas v + // z = derivative of original u + // w = derivative of original v + atlasTexcoord = textureData.xy + (atlasTexcoord * pow(vec2(2.0,2.0),textureData.zw) / imageSize); + //texel = texture2DLod(sample, float4(atlasTexcoord, 0,0)); + texel = texture2D(sample, atlasTexcoord); +} + +//----------------------------------------------------------------------------- +void SGX_Atlas_Wrap(in float inpCoord, out float outCoord) +{ + outCoord = frac(inpCoord); +} + +//----------------------------------------------------------------------------- +void SGX_Atlas_Clamp(in float inpCoord, out float outCoord) +{ + outCoord = clamp(inpCoord, 0.0, 1.0); +} +//----------------------------------------------------------------------------- +void SGX_Atlas_Mirror(in float inpCoord, out float outCoord) +{ + outCoord = (inpCoord + 1) * 0.5; + outCoord = abs(frac(outCoord) * 2 - 1); +} + +//----------------------------------------------------------------------------- +void SGX_Atlas_Border(in float inpCoord, out float outCoord) +{ + // + //The shader needs to check whether the original texcoord are beyond the 0,1 range. + //The shader attempts to do so without using if statments which are complicated for shaders + // + + //if texcoord is in the 0,1 range then check will equal 0, + //Otherwise it will equal the number 1 or greater + float check = step(inpCoord, 0) + step(1, inpCoord); + + //using the check value transport the value of the texcoord beyond the 0,1 range so it will + //recive the border color + outCoord = abs(inpCoord) + check * 2; +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SGXLib_TextureAtlas.hlsl b/bin/media/RTShaderLib/SGXLib_TextureAtlas.hlsl new file mode 100644 index 0000000000..b8f062039f --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_TextureAtlas.hlsl @@ -0,0 +1,122 @@ +//----------------------------------------------------------------------------- +// Program Name: SGXLib_IntegratedPSSM +// Program Desc: Texture Atlas functions. +// Program Type: Vertex/Pixel shader +// Language: HLSL +//----------------------------------------------------------------------------- + +float mipmapLevel(float2 coords, float2 texSize) +{ + coords = coords.xy * texSize; + float2 dx = ddx(coords.xy); + float2 dy = ddy(coords.xy); + float Px = length(dx); + float Py = length(dy); + float Pmax = max(Px, Py); + return log2(max(Pmax,1)); +} + + +//----------------------------------------------------------------------------- +void SGX_Atlas_Sample_Auto_Adjust(in sampler2D sample, + in float2 origTexcoord, + in float2 atlasTexcoord, + in float4 textureData, + in float2 imageSize, + out float4 texel) +{ + // + // Most of the idea for this function has been taken from the code under the webpage: + // http://www.gamedev.net/topic/534149-solved-texture-seams-using-atlas-with-screenshots/ + + + // origTexcoord - original texture coordintates as received from the vertex buffer. + // atlasTexcoord - texture coordinates that have gone through on which different mathematical + // functions to simulate different texture addressing modes (wrap, mirror, clamp) + // textureData.xy - top left corner (in 0-1 units) where the needed texture in the texture atlas begins + // textureData.zw - width and height in power of 2 for the needed texture in the texture atlas + // imageSize - size of the image in pixels + // texel - [Output] The color of the pixel at the requested position + + float2 startPos = textureData.xy; + + + // calculate the tileSize by using the power of 2 value + float2 pwrs = textureData.zw; + + //Calculate the power of 2 size of the maximum avialable Mipmap + //Note: We limit the amount of available LODs to [actual number] - 2 + //as some atlas packaging tools do not include the last 2 LODs + //when packeging DXT format atlas textures. + float availableLODCount = min(pwrs.x,pwrs.y) - 2; + float2 tileSize = pow(float2(2.0,2.0),pwrs); + + // retrieve the mipmap level for this pixel clamped by the power of 2 value + float lod = clamp(mipmapLevel(origTexcoord, tileSize), 0, availableLODCount); + + float2 relativeTileSize = tileSize / imageSize; + // get the width/height of the mip surface we've decided on + float2 mipSize = pow(float2(2.0,2.0), pwrs.xy - ceil(lod)); + + // compute the inverse fraction size for the tile + //float2 lodSize = mipSize * imageSize / tileSize; + float2 lodSizeInv = (relativeTileSize / mipSize); + //compute the new coordinates + //atlasTexcoord = atlasTexcoord * ((lodSize * (tileSize / imageSize) - 1.0) / lodSize) + (0.5 / lodSize) + startPos; + atlasTexcoord = atlasTexcoord * (relativeTileSize - lodSizeInv) + (0.5 * lodSizeInv) + startPos; + + //return the pixel from the correct mip surface of the atlas + texel = tex2Dlod(sample, float4(atlasTexcoord, 0, lod)); +} +//----------------------------------------------------------------------------- +void SGX_Atlas_Sample_Normal(in sampler2D sample, + in float2 origTexcoord, + in float2 atlasTexcoord, + in float4 textureData, + in float2 imageSize, + out float4 texel) +{ + //texcoord contain: + // x = texture atlas u + // y = texture atlas v + // z = derivative of original u + // w = derivative of original v + atlasTexcoord = textureData.xy + (atlasTexcoord * pow(float2(2.0,2.0),textureData.zw) / imageSize); + //texel = tex2Dlod(sample, float4(atlasTexcoord, 0,0)); + texel = tex2D(sample, atlasTexcoord); +} + +//----------------------------------------------------------------------------- +void SGX_Atlas_Wrap(in float inpCoord, out float outCoord) +{ + outCoord = frac(inpCoord); +} + +//----------------------------------------------------------------------------- +void SGX_Atlas_Clamp(in float inpCoord, out float outCoord) +{ + outCoord = saturate(inpCoord); +} +//----------------------------------------------------------------------------- +void SGX_Atlas_Mirror(in float inpCoord, out float outCoord) +{ + outCoord = (inpCoord + 1) * 0.5; + outCoord = abs(frac(outCoord) * 2 - 1); +} + +//----------------------------------------------------------------------------- +void SGX_Atlas_Border(in float inpCoord, out float outCoord) +{ + // + //The shader needs to check whether the original texcoord are beyond the 0,1 range. + //The shader attempts to do so without using if statments which are complicated for shaders + // + + //if texcoord is in the 0,1 range then check will equal 0, + //Otherwise it will equal the number 1 or greater + float check = step(inpCoord, 0) + step(1, inpCoord); + + //using the check value transport the value of the texcoord beyond the 0,1 range so it will + //recive the border color + outCoord = abs(inpCoord) + check * 2; +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SGXLib_TriplanarTexturing.cg b/bin/media/RTShaderLib/SGXLib_TriplanarTexturing.cg new file mode 100644 index 0000000000..f196e62d6f --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_TriplanarTexturing.cg @@ -0,0 +1,45 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +void SGX_TriplanarTexturing(in float4 diffuse, in float3 normal, in float4 position, in sampler2D texFromX, in sampler2D texFromY, in sampler2D texFromZ, in float3 parameters, out float4 cOut) { + float3 blendWeights = abs(normalize(normal)); + blendWeights = blendWeights - parameters.y; + blendWeights = pow(max(blendWeights, 0), parameters.z); + blendWeights /= (blendWeights.x + blendWeights.y + blendWeights.z ).xxx; + // Move the planar mapping a bit according to the normal length to avoid bad looking skirts. + float nLength = length(normal - 1.0); + float2 coord1 = (position.yz + nLength) * parameters.x; + float2 coord2 = (position.zx + nLength) * parameters.x; + float2 coord3 = (position.xy + nLength) * parameters.x; + + float4 col1 = tex2D(texFromX, coord1); + float4 col2 = tex2D(texFromY, coord2); + float4 col3 = tex2D(texFromZ, coord3); + cOut = diffuse * float4(col1.xyz * blendWeights.x + + col2.xyz * blendWeights.y + + col3.xyz * blendWeights.z, 1); +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SGXLib_TriplanarTexturing.glsl b/bin/media/RTShaderLib/SGXLib_TriplanarTexturing.glsl new file mode 100644 index 0000000000..d4bace1410 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_TriplanarTexturing.glsl @@ -0,0 +1,47 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +void SGX_TriplanarTexturing(in vec4 diffuse, in vec3 normal, in vec4 position, in sampler2D texFromX, in sampler2D texFromY, in sampler2D texFromZ, in vec3 parameters, out vec4 cOut) { + + vec3 blendWeights = abs(normalize(normal)); + blendWeights = blendWeights - vec3(parameters.yyy); + blendWeights = vec3(pow(max(blendWeights.x, 0), parameters.z), pow(max(blendWeights.y, 0), parameters.z), pow(max(blendWeights.z, 0), parameters.z)); + float sum = blendWeights.x + blendWeights.y + blendWeights.z; + blendWeights = blendWeights/vec3(sum, sum, sum); + // Move the planar mapping a bit according to the normal length to avoid bad looking skirts. + float nLength = length(normal - 1.0); + vec2 coord1 = (position.yz + nLength) * parameters.x; + vec2 coord2 = (position.zx + nLength) * parameters.x; + vec2 coord3 = (position.xy + nLength) * parameters.x; + + vec4 col1 = texture2D(texFromX, coord1); + vec4 col2 = texture2D(texFromY, coord2); + vec4 col3 = texture2D(texFromZ, coord3); + cOut = diffuse * vec4(col1.xyz * blendWeights.x + + col2.xyz * blendWeights.y + + col3.xyz * blendWeights.z, 1); +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SGXLib_TriplanarTexturing.glsles b/bin/media/RTShaderLib/SGXLib_TriplanarTexturing.glsles new file mode 100644 index 0000000000..2c1f0bd0c2 --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_TriplanarTexturing.glsles @@ -0,0 +1,47 @@ +#version 120 +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +void SGX_TriplanarTexturing(in vec4 diffuse, in vec3 normal, in vec4 position, in sampler2D texFromX, in sampler2D texFromY, in sampler2D texFromZ, in vec3 parameters, out vec4 cOut) +{ + vec3 blendWeights = abs(normalize(normal)); + blendWeights = blendWeights - parameters.y; + blendWeights = pow(max(blendWeights, 0), parameters.z); + blendWeights /= (blendWeights.x + blendWeights.y + blendWeights.z ).xxx; + // Move the planar mapping a bit according to the normal length to avoid bad looking skirts. + float nLength = length(normal - 1.0); + vec2 coord1 = (position.yz + nLength) * parameters.x; + vec2 coord2 = (position.zx + nLength) * parameters.x; + vec2 coord3 = (position.xy + nLength) * parameters.x; + + vec4 col1 = texture2D(texFromX, coord1); + vec4 col2 = texture2D(texFromY, coord2); + vec4 col3 = texture2D(texFromZ, coord3); + cOut = diffuse * vec4(col1.xyz * blendWeights.x + + col2.xyz * blendWeights.y + + col3.xyz * blendWeights.z, 1); +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SGXLib_TriplanarTexturing.hlsl b/bin/media/RTShaderLib/SGXLib_TriplanarTexturing.hlsl new file mode 100644 index 0000000000..f196e62d6f --- /dev/null +++ b/bin/media/RTShaderLib/SGXLib_TriplanarTexturing.hlsl @@ -0,0 +1,45 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +void SGX_TriplanarTexturing(in float4 diffuse, in float3 normal, in float4 position, in sampler2D texFromX, in sampler2D texFromY, in sampler2D texFromZ, in float3 parameters, out float4 cOut) { + float3 blendWeights = abs(normalize(normal)); + blendWeights = blendWeights - parameters.y; + blendWeights = pow(max(blendWeights, 0), parameters.z); + blendWeights /= (blendWeights.x + blendWeights.y + blendWeights.z ).xxx; + // Move the planar mapping a bit according to the normal length to avoid bad looking skirts. + float nLength = length(normal - 1.0); + float2 coord1 = (position.yz + nLength) * parameters.x; + float2 coord2 = (position.zx + nLength) * parameters.x; + float2 coord3 = (position.xy + nLength) * parameters.x; + + float4 col1 = tex2D(texFromX, coord1); + float4 col2 = tex2D(texFromY, coord2); + float4 col3 = tex2D(texFromZ, coord3); + cOut = diffuse * float4(col1.xyz * blendWeights.x + + col2.xyz * blendWeights.y + + col3.xyz * blendWeights.z, 1); +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SampleLib_InstancedViewports.cg b/bin/media/RTShaderLib/SampleLib_InstancedViewports.cg new file mode 100644 index 0000000000..35bde92eda --- /dev/null +++ b/bin/media/RTShaderLib/SampleLib_InstancedViewports.cg @@ -0,0 +1,76 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Transform the output position to the current "monitor" +//----------------------------------------------------------------------------- + +void SGX_InstancedViewportsTransform( + in float4 i_position, + in float4x4 i_worldViewMatrix, + in float4x4 i_projectionMatrix, + in float4 i_viewportOffsetMatrixR0, + in float4 i_viewportOffsetMatrixR1, + in float4 i_viewportOffsetMatrixR2, + in float4 i_viewportOffsetMatrixR3, + in float2 i_monitorsCount, + in float4 i_monitorIndex, + out float4 o_position) + { + o_position = mul(i_worldViewMatrix, i_position); + float4x4 viewportOffset = float4x4(i_viewportOffsetMatrixR0, + i_viewportOffsetMatrixR1, + i_viewportOffsetMatrixR2, + i_viewportOffsetMatrixR3 + ); + o_position = mul(viewportOffset, o_position); + o_position = mul(i_projectionMatrix, o_position); + float2 monitorIndexNorm =i_monitorIndex.xy - ((i_monitorsCount - 1.0)/ 2.0) ; + o_position.xy = + (o_position.xy + (o_position.w * monitorIndexNorm)*2.0) / i_monitorsCount ; + }; + +//----------------------------------------------------------------------------- +// Discard any pixel that is outside the bounds of the current "monitor" +//----------------------------------------------------------------------------- + +void SGX_InstancedViewportsDiscardOutOfBounds( + in float2 i_monitorsCount, + in float4 i_monitorIndex, + in float4 i_positionProjectiveSpace) +{ + float2 boxedXY = i_positionProjectiveSpace.xy / (i_positionProjectiveSpace.w * 2); + boxedXY = (boxedXY + 0.5) * i_monitorsCount; + float2 middleMonitor = ((i_monitorIndex.xy + 0.5)); + + boxedXY = abs(boxedXY - middleMonitor); + float maxM = max(boxedXY.x,boxedXY.y); + if (maxM >= 0.5) + { + discard; + } +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SampleLib_InstancedViewports.glsl b/bin/media/RTShaderLib/SampleLib_InstancedViewports.glsl new file mode 100644 index 0000000000..80dfff5924 --- /dev/null +++ b/bin/media/RTShaderLib/SampleLib_InstancedViewports.glsl @@ -0,0 +1,93 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Transform the output position to the current "monitor" +//----------------------------------------------------------------------------- + +void SGX_InstancedViewportsTransform( + in vec4 i_position, + in mat4 i_worldViewMatrix, + in mat4 i_projectionMatrix, + in vec4 i_viewportOffsetMatrixR0, + in vec4 i_viewportOffsetMatrixR1, + in vec4 i_viewportOffsetMatrixR2, + in vec4 i_viewportOffsetMatrixR3, + in vec2 i_monitorsCount, + in vec4 i_monitorIndex, + out vec4 o_position) + { + o_position = i_worldViewMatrix * i_position; + mat4 viewportOffset; + viewportOffset[0][0] = i_viewportOffsetMatrixR0.x; + viewportOffset[1][0] = i_viewportOffsetMatrixR0.y; + viewportOffset[2][0] = i_viewportOffsetMatrixR0.z; + viewportOffset[3][0] = i_viewportOffsetMatrixR0.w; + + viewportOffset[0][1] = i_viewportOffsetMatrixR1.x; + viewportOffset[1][1] = i_viewportOffsetMatrixR1.y; + viewportOffset[2][1] = i_viewportOffsetMatrixR1.z; + viewportOffset[3][1] = i_viewportOffsetMatrixR1.w; + + viewportOffset[0][2] = i_viewportOffsetMatrixR2.x; + viewportOffset[1][2] = i_viewportOffsetMatrixR2.y; + viewportOffset[2][2] = i_viewportOffsetMatrixR2.z; + viewportOffset[3][2] = i_viewportOffsetMatrixR2.w; + + viewportOffset[0][3] = i_viewportOffsetMatrixR3.x; + viewportOffset[1][3] = i_viewportOffsetMatrixR3.y; + viewportOffset[2][3] = i_viewportOffsetMatrixR3.z; + viewportOffset[3][3] = i_viewportOffsetMatrixR3.w; + + o_position = viewportOffset * o_position; + o_position = i_projectionMatrix * o_position; + + vec2 monitorIndexNorm = i_monitorIndex.xy - ((i_monitorsCount - 1.0)/2.0); + o_position.xy = + (o_position.xy + (o_position.w * monitorIndexNorm)*2.0) / i_monitorsCount; + } + +//----------------------------------------------------------------------------- +// Discard any pixel that is outside the bounds of the current "monitor" +//----------------------------------------------------------------------------- + +void SGX_InstancedViewportsDiscardOutOfBounds( + in vec2 i_monitorsCount, + in vec4 i_monitorIndex, + in vec4 i_positionProjectiveSpace) +{ + vec2 boxedXY = i_positionProjectiveSpace.xy / (i_positionProjectiveSpace.w * 2.0); + boxedXY = (boxedXY + 0.5) * i_monitorsCount; + vec2 middleMonitor = i_monitorIndex.xy + 0.5; + + boxedXY = abs(boxedXY - middleMonitor); + float maxM = max(boxedXY.x,boxedXY.y); + if (maxM >= 0.5) + { + discard; + } +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SampleLib_InstancedViewports.hlsl b/bin/media/RTShaderLib/SampleLib_InstancedViewports.hlsl new file mode 100644 index 0000000000..35bde92eda --- /dev/null +++ b/bin/media/RTShaderLib/SampleLib_InstancedViewports.hlsl @@ -0,0 +1,76 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Transform the output position to the current "monitor" +//----------------------------------------------------------------------------- + +void SGX_InstancedViewportsTransform( + in float4 i_position, + in float4x4 i_worldViewMatrix, + in float4x4 i_projectionMatrix, + in float4 i_viewportOffsetMatrixR0, + in float4 i_viewportOffsetMatrixR1, + in float4 i_viewportOffsetMatrixR2, + in float4 i_viewportOffsetMatrixR3, + in float2 i_monitorsCount, + in float4 i_monitorIndex, + out float4 o_position) + { + o_position = mul(i_worldViewMatrix, i_position); + float4x4 viewportOffset = float4x4(i_viewportOffsetMatrixR0, + i_viewportOffsetMatrixR1, + i_viewportOffsetMatrixR2, + i_viewportOffsetMatrixR3 + ); + o_position = mul(viewportOffset, o_position); + o_position = mul(i_projectionMatrix, o_position); + float2 monitorIndexNorm =i_monitorIndex.xy - ((i_monitorsCount - 1.0)/ 2.0) ; + o_position.xy = + (o_position.xy + (o_position.w * monitorIndexNorm)*2.0) / i_monitorsCount ; + }; + +//----------------------------------------------------------------------------- +// Discard any pixel that is outside the bounds of the current "monitor" +//----------------------------------------------------------------------------- + +void SGX_InstancedViewportsDiscardOutOfBounds( + in float2 i_monitorsCount, + in float4 i_monitorIndex, + in float4 i_positionProjectiveSpace) +{ + float2 boxedXY = i_positionProjectiveSpace.xy / (i_positionProjectiveSpace.w * 2); + boxedXY = (boxedXY + 0.5) * i_monitorsCount; + float2 middleMonitor = ((i_monitorIndex.xy + 0.5)); + + boxedXY = abs(boxedXY - middleMonitor); + float maxM = max(boxedXY.x,boxedXY.y); + if (maxM >= 0.5) + { + discard; + } +} \ No newline at end of file diff --git a/bin/media/RTShaderLib/SampleLib_ReflectionMap.cg b/bin/media/RTShaderLib/SampleLib_ReflectionMap.cg new file mode 100644 index 0000000000..b69baf56c0 --- /dev/null +++ b/bin/media/RTShaderLib/SampleLib_ReflectionMap.cg @@ -0,0 +1,62 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + + +//----------------------------------------------------------------------------- +// Simple masked reflection map effect. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_ApplyReflectionMap(in sampler2D maskSampler, + in float2 maskSamplerTexCoord, + in sampler2D reflectionSampler, + in float2 reflectionSamplerTexCoord, + in float3 baseColor, + in float reflectionPower, + out float3 vOut) +{ + float3 maskTexel = tex2D(maskSampler, maskSamplerTexCoord).xyz; + float3 reflectionTexel = tex2D(reflectionSampler, reflectionSamplerTexCoord).xyz; + + vOut = baseColor + reflectionTexel.xyz*maskTexel.xyz*reflectionPower; +} + +//----------------------------------------------------------------------------- +void SGX_ApplyReflectionMap(in sampler2D maskSampler, + in float2 maskSamplerTexCoord, + in samplerCUBE reflectionSampler, + in float3 reflectionSamplerTexCoord, + in float3 baseColor, + in float reflectionPower, + out float3 vOut) +{ + float3 maskTexel = tex2D(maskSampler, maskSamplerTexCoord).xyz; + float3 reflectionTexel = texCUBE(reflectionSampler, reflectionSamplerTexCoord).xyz; + + vOut = baseColor + reflectionTexel.xyz*maskTexel.xyz*reflectionPower; +} + \ No newline at end of file diff --git a/bin/media/RTShaderLib/SampleLib_ReflectionMap.glsl b/bin/media/RTShaderLib/SampleLib_ReflectionMap.glsl new file mode 100644 index 0000000000..028711446a --- /dev/null +++ b/bin/media/RTShaderLib/SampleLib_ReflectionMap.glsl @@ -0,0 +1,65 @@ +#version 120 +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + + +//----------------------------------------------------------------------------- +// Simple masked reflection map effect. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_ApplyReflectionMap(in sampler2D maskSampler, + in vec2 maskSamplerTexCoord, + in sampler2D reflectionSampler, + in vec2 reflectionSamplerTexCoord, + in vec3 baseColor, + in float reflectionPower, + out vec3 vOut) +{ + vec3 maskTexel = texture2D(maskSampler, maskSamplerTexCoord).xyz; + reflectionSamplerTexCoord.y = -reflectionSamplerTexCoord.y; // Hack for gl + vec3 reflectionTexel = texture2D(reflectionSampler, reflectionSamplerTexCoord).xyz; + + vOut = baseColor + reflectionTexel.xyz*maskTexel.xyz*reflectionPower; +} + +//----------------------------------------------------------------------------- +void SGX_ApplyReflectionMap(in sampler2D maskSampler, + in vec2 maskSamplerTexCoord, + in samplerCube reflectionSampler, + in vec3 reflectionSamplerTexCoord, + in vec3 baseColor, + in float reflectionPower, + out vec3 vOut) +{ + vec3 maskTexel = texture2D(maskSampler, maskSamplerTexCoord).xyz; + reflectionSamplerTexCoord.z = -reflectionSamplerTexCoord.z; // Hack for gl + vec3 reflectionTexel = textureCube(reflectionSampler, reflectionSamplerTexCoord).xyz; + + vOut = baseColor + reflectionTexel.xyz*maskTexel.xyz*reflectionPower; +} + diff --git a/bin/media/RTShaderLib/SampleLib_ReflectionMap.glsles b/bin/media/RTShaderLib/SampleLib_ReflectionMap.glsles new file mode 100644 index 0000000000..ef9e64a5b4 --- /dev/null +++ b/bin/media/RTShaderLib/SampleLib_ReflectionMap.glsles @@ -0,0 +1,67 @@ +#version 100 +precision highp float; +precision highp int; +precision lowp sampler2D; +precision lowp samplerCube; +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + +//----------------------------------------------------------------------------- +// Simple masked reflection map effect. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_ApplyReflectionMap(in sampler2D maskSampler, + in vec2 maskSamplerTexCoord, + in sampler2D reflectionSampler, + in vec2 reflectionSamplerTexCoord, + in vec3 baseColor, + in float reflectionPower, + out vec3 vOut) +{ + vec3 maskTexel = texture2D(maskSampler, maskSamplerTexCoord).xyz; + reflectionSamplerTexCoord.y = -reflectionSamplerTexCoord.y; // Hack for gl + vec3 reflectionTexel = texture2D(reflectionSampler, reflectionSamplerTexCoord).xyz; + + vOut = baseColor + reflectionTexel.xyz * maskTexel.xyz * reflectionPower; +} + +//----------------------------------------------------------------------------- +void SGX_ApplyReflectionMap(in sampler2D maskSampler, + in vec2 maskSamplerTexCoord, + in samplerCube reflectionSampler, + in vec3 reflectionSamplerTexCoord, + in vec3 baseColor, + in float reflectionPower, + out vec3 vOut) +{ + vec3 maskTexel = texture2D(maskSampler, maskSamplerTexCoord).xyz; + reflectionSamplerTexCoord.z = -reflectionSamplerTexCoord.z; // Hack for gl + vec3 reflectionTexel = textureCube(reflectionSampler, reflectionSamplerTexCoord).xyz; + + vOut = baseColor + reflectionTexel.xyz * maskTexel.xyz * reflectionPower; +} diff --git a/bin/media/RTShaderLib/SampleLib_ReflectionMap.hlsl b/bin/media/RTShaderLib/SampleLib_ReflectionMap.hlsl new file mode 100644 index 0000000000..b69baf56c0 --- /dev/null +++ b/bin/media/RTShaderLib/SampleLib_ReflectionMap.hlsl @@ -0,0 +1,62 @@ +/* +----------------------------------------------------------------------------- +This source file is part of OGRE +(Object-oriented Graphics Rendering Engine) +For the latest info, see http://www.ogre3d.org + +Copyright (c) 2000-2012 Torus Knot Software Ltd +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +----------------------------------------------------------------------------- +*/ + + +//----------------------------------------------------------------------------- +// Simple masked reflection map effect. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SGX_ApplyReflectionMap(in sampler2D maskSampler, + in float2 maskSamplerTexCoord, + in sampler2D reflectionSampler, + in float2 reflectionSamplerTexCoord, + in float3 baseColor, + in float reflectionPower, + out float3 vOut) +{ + float3 maskTexel = tex2D(maskSampler, maskSamplerTexCoord).xyz; + float3 reflectionTexel = tex2D(reflectionSampler, reflectionSamplerTexCoord).xyz; + + vOut = baseColor + reflectionTexel.xyz*maskTexel.xyz*reflectionPower; +} + +//----------------------------------------------------------------------------- +void SGX_ApplyReflectionMap(in sampler2D maskSampler, + in float2 maskSamplerTexCoord, + in samplerCUBE reflectionSampler, + in float3 reflectionSamplerTexCoord, + in float3 baseColor, + in float reflectionPower, + out float3 vOut) +{ + float3 maskTexel = tex2D(maskSampler, maskSamplerTexCoord).xyz; + float3 reflectionTexel = texCUBE(reflectionSampler, reflectionSamplerTexCoord).xyz; + + vOut = baseColor + reflectionTexel.xyz*maskTexel.xyz*reflectionPower; +} + \ No newline at end of file diff --git a/bin/media/RTShaderLib/SegmentedPerPixelLighting.cg b/bin/media/RTShaderLib/SegmentedPerPixelLighting.cg new file mode 100644 index 0000000000..7daa0e473d --- /dev/null +++ b/bin/media/RTShaderLib/SegmentedPerPixelLighting.cg @@ -0,0 +1,185 @@ + + +//----------------------------------------------------------------------------- +// Program Name: SL_Lighting +// Program Desc: Per pixel lighting functions. +// Program Type: Vertex/Pixel shader +// Language: CG +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +void SL_TransformNormal(in float4x4 m, + in float3 v, + out float3 vOut) +{ + vOut = mul((float3x3)m, v); +} + +//----------------------------------------------------------------------------- +void SL_TransformPosition(in float4x4 mWorldView, + in float4 vPos, + out float3 vOut) +{ + vOut = mul(mWorldView, vPos).xyz; +} + +//----------------------------------------------------------------------------- +void SL_Light_Directional_Diffuse( + in float3 vNormal, + in float3 vNegLightDirView, + in float3 vDiffuseColour, + in float3 vBaseColour, + out float3 vOut) +{ + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vNegLightDirView); + + vOut = vBaseColour + vDiffuseColour * saturate(nDotL); +} + +//----------------------------------------------------------------------------- +void SL_Light_Directional_DiffuseSpecular( + in float3 vNormal, + in float3 vViewPos, + in float3 vNegLightDirView, + in float3 vDiffuseColour, + in float3 vSpecularColour, + in float fSpecularPower, + in float3 vBaseDiffuseColour, + in float3 vBaseSpecularColour, + out float3 vOutDiffuse, + out float3 vOutSpecular) +{ + vOutDiffuse = vBaseDiffuseColour; + vOutSpecular = vBaseSpecularColour; + + float3 vNormalView = normalize(vNormal); + float nDotL = dot(vNormalView, vNegLightDirView); + float3 vView = -normalize(vViewPos); + float3 vHalfWay = normalize(vView + vNegLightDirView); + float nDotH = dot(vNormalView, vHalfWay); + + nDotL = max(nDotL, 0); + vOutDiffuse += vDiffuseColour * nDotL; + vOutSpecular += vSpecularColour * pow(saturate(nDotH), fSpecularPower); +} + + +//the amount of light taken for ambient light (does not realy on direction) +//const float spotAmbientPart = 1; + + +//----------------------------------------------------------------------------- +void SL_Light_Ambient_Diffuse_Inner( + in float3 vNormal, + in float3 vLightView, + in float fLightDist, + in float3 vNegLightDirView, + in float3 vSpotParams, + in float3 vDiffuseColour, + inout float3 vColorOut) +{ + float fLightDistInv = 1 / fLightDist; + float nDotL = dot(vNormal, vLightView) * fLightDistInv; + + float fAtten = (1 - (fLightDist * vSpotParams.x)); + fAtten = fAtten * fAtten; + + float rho = dot(vNegLightDirView, vLightView) * fLightDistInv; + float fSpotT = saturate((rho - vSpotParams.y) * vSpotParams.z); + + nDotL = step(0,nDotL) * (0.7 + (0.3 * nDotL)); + vColorOut += vDiffuseColour * 2* nDotL * fAtten * fSpotT; + + //if ((fLightDist < 150) && (rho < 0.85)) + // vColorOut.x = 0.5; +} + + +//----------------------------------------------------------------------------- +void SL_Light_Ambient_Diffuse( + in float3 vNormal, + in float3 vViewPos, + in float3 vLightPosView, + in float3 vNegLightDirView, + in float3 vSpotParams, + in float3 vDiffuseColour, + inout float3 vColorOut) +{ + float3 vLightView = vLightPosView - vViewPos; + float fLightDist = length(vLightView); + if (fLightDist * vSpotParams.x < 1) + { + SL_Light_Ambient_Diffuse_Inner(vNormal, vLightView, fLightDist, + vNegLightDirView, vSpotParams, vDiffuseColour, vColorOut); + } +} + +//----------------------------------------------------------------------------- + +void SL_Light_Segment_Texture_Ambient_Diffuse( + in float3 vNormal, + in float3 vViewPos, + in sampler2D dataTexture, + in float2 lightIndexLimit, + in float4 lightBounds, + in float invWidth, + in float invHeight, + inout float3 vColorOut) +{ + float widthOffset = invWidth * 0.5; + float heightOffset = invHeight * 0.5; + + float2 indexes = (vViewPos.xz - lightBounds.xy) * lightBounds.zw; + indexes = clamp(indexes,0,8); + int index = (int)indexes.x + (int)(indexes.y) * 9; + widthOffset += invWidth * 3 * index; + + float4 indexBounds = tex2Dlod(dataTexture, float4(widthOffset,heightOffset,0,0)); + int toIndex = min(lightIndexLimit.y, indexBounds.x); + for(int i = lightIndexLimit.x; i <= toIndex; ++i) + { + float heightCoord = heightOffset + invHeight * i; + float4 dat1 = tex2Dlod(dataTexture, float4(widthOffset,heightCoord,0,0)); + + float3 vLightView = dat1.xyz - vViewPos; + float fLightDist = length(vLightView); + if (fLightDist * dat1.w < 1) + { + float4 dat2 = tex2Dlod(dataTexture, float4(widthOffset + invWidth,heightCoord,0,0)); + float4 dat3 = tex2Dlod(dataTexture, float4(widthOffset + invWidth * 2,heightCoord,0,0)); + SL_Light_Ambient_Diffuse_Inner(vNormal, vLightView, fLightDist, dat2.xyz, float3(dat1.w, dat2.w, dat3.w), dat3.xyz, vColorOut); + } + } +} + + +void SL_Light_Segment_Debug( + in float3 vNormal, + in float3 vViewPos, + in sampler2D dataTexture, + in float2 lightIndexLimit, + in float4 lightBounds, + in float invWidth, + in float invHeight, + inout float3 vColorOut) +{ + float widthOffset = invWidth * 0.5; + float heightOffset = invHeight * 0.5; + + + float2 indexes = (vViewPos.xz - lightBounds.xy) * lightBounds.zw; + indexes = clamp(indexes,0,8); + int index = (int)indexes.x + (int)(indexes.y) * 9; + float4 indexBounds = tex2Dlod(dataTexture, float4(widthOffset,heightOffset,0,0)); + + //if (indexes.x >= 0 && indexes.x < 9 && indexes.y >= 0 && indexes.y < 9) + //{ + float2 debugColors = vColorOut.xy * 0.5 + ((mod(floor(indexes.xy),2) == 0) ? 0.1 : 0.2); + vColorOut.xy = debugColors; + int toIndex = min(lightIndexLimit.y, indexBounds.x); + vColorOut.z = (toIndex - lightIndexLimit.x) / 32; + //} + //vColorOut.x = 1; + +} diff --git a/bin/media/RTShaderLib/cache/dummy.txt b/bin/media/RTShaderLib/cache/dummy.txt new file mode 100644 index 0000000000..5bad61fd9a --- /dev/null +++ b/bin/media/RTShaderLib/cache/dummy.txt @@ -0,0 +1 @@ +This is a dummy file used to create this directory in the mercurial source control. \ No newline at end of file diff --git a/bin/media/RTShaderLib/materials/DualQuaternionSkinning_Shadow.cg b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_Shadow.cg new file mode 100644 index 0000000000..9acf2e30c4 --- /dev/null +++ b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_Shadow.cg @@ -0,0 +1,292 @@ +float2x4 blendTwoWeights(float4 blendWgt, float4 blendIdx, float2x4 dualQuaternions[24]) +{ + float2x4 blendDQ = blendWgt.x*dualQuaternions[blendIdx.x]; + blendDQ += blendWgt.y*dualQuaternions[blendIdx.y]; + + return blendDQ; +} + +float2x4 blendTwoWeightsAntipod(float4 blendWgt, float4 blendIdx, float2x4 dualQuaternions[24]) +{ + float2x4 dq0 = dualQuaternions[blendIdx.x]; + float2x4 dq1 = dualQuaternions[blendIdx.y]; + + //Accurate antipodality handling. For speed increase, remove the following line, + //though, the results will only be valid for rotations less than 180 degrees. + if (dot(dq0[0], dq1[0]) < 0.0) dq1 *= -1.0; + + float2x4 blendDQ = blendWgt.x*dq0; + blendDQ += blendWgt.y*dq1; + + return blendDQ; +} + +float2x4 blendThreeWeightsAntipod(float4 blendWgt, float4 blendIdx, float2x4 dualQuaternions[24]) +{ + float2x4 dq0 = dualQuaternions[blendIdx.x]; + float2x4 dq1 = dualQuaternions[blendIdx.y]; + float2x4 dq2 = dualQuaternions[blendIdx.z]; + + //Accurate antipodality handling. For speed increase, remove the following line, + //though, the results will only be valid for rotations less than 180 degrees. + if (dot(dq0[0], dq1[0]) < 0.0) dq1 *= -1.0; + if (dot(dq0[0], dq2[0]) < 0.0) dq2 *= -1.0; + + float2x4 blendDQ = blendWgt.x*dq0; + blendDQ += blendWgt.y*dq1; + blendDQ += blendWgt.z*dq2; + + return blendDQ; +} + +float2x4 blendFourWeightsAntipod(float4 blendWgt, float4 blendIdx, float2x4 dualQuaternions[24]) +{ + float2x4 dq0 = dualQuaternions[blendIdx.x]; + float2x4 dq1 = dualQuaternions[blendIdx.y]; + float2x4 dq2 = dualQuaternions[blendIdx.z]; + float2x4 dq3 = dualQuaternions[blendIdx.w]; + + //Accurate antipodality handling. For speed increase, remove the following line, + //though, the results will only be valid for rotations less than 180 degrees. + if (dot(dq0[0], dq1[0]) < 0.0) dq1 *= -1.0; + if (dot(dq0[0], dq2[0]) < 0.0) dq2 *= -1.0; + if (dot(dq0[0], dq3[0]) < 0.0) dq3 *= -1.0; + + float2x4 blendDQ = blendWgt.x*dq0; + blendDQ += blendWgt.y*dq1; + blendDQ += blendWgt.z*dq2; + blendDQ += blendWgt.w*dq3; + + return blendDQ; +} + +float3 calculateBlendPosition(float4 position, float2x4 blendDQ) +{ + float3 blendPosition = position.xyz + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, position.xyz) + blendDQ[0].x*position.xyz); + float3 trans = 2.0*(blendDQ[0].x*blendDQ[1].yzw - blendDQ[1].x*blendDQ[0].yzw + cross(blendDQ[0].yzw, blendDQ[1].yzw)); + blendPosition += trans; + + return blendPosition; +} + +float3 calculateBlendNormal(float3 normal, float2x4 blendDQ) +{ + return normal + 2.0*cross(blendDQ[0].yzw, cross(blendDQ[0].yzw, normal) + blendDQ[0].x*normal); +} + +float3x3 adjointTransposeMatrix(float3x3 M) +{ + float3x3 atM; + atM._m00 = M._m22 * M._m11 - M._m12 * M._m21; + atM._m01 = M._m12 * M._m20 - M._m10 * M._m22; + atM._m02 = M._m10 * M._m21 - M._m20 * M._m11; + + atM._m10 = M._m02 * M._m21 - M._m22 * M._m01; + atM._m11 = M._m22 * M._m00 - M._m02 * M._m20; + atM._m12 = M._m20 * M._m01 - M._m00 * M._m21; + + atM._m20 = M._m12 * M._m01 - M._m02 * M._m11; + atM._m21 = M._m10 * M._m02 - M._m12 * M._m00; + atM._m22 = M._m00 * M._m11 - M._m10 * M._m01; + + return atM; +} + +void shadow_caster_dq_vs( + float4 position : POSITION, + out float4 oPosition : POSITION, + out float2 oDepthInfo : TEXCOORD0, + + uniform float4x4 wvpMatrix) +{ + // output position. + oPosition = mul(wvpMatrix, position); + + // depth info for the fragment. + oDepthInfo.x = oPosition.z; + oDepthInfo.y = oPosition.w; +} + +void shadow_caster_dq_ps( + in float4 colour : COLOR, + out float4 oColour : COLOR) +{ + oColour = colour; +} + +//Shadow caster pass +void shadow_caster_dq_skinning_1weight_vs( + float4 position : POSITION, + float4 blendIdx : BLENDINDICES, + float4 blendWgt : BLENDWEIGHT, + + out float4 oPosition : POSITION, + out float4 colour : COLOR, + // Support up to 24 bones of float3x4 + // vs_1_1 only supports 96 params so more than this is not feasible + uniform float2x4 worldDualQuaternion2x4Array[24], + uniform float4x4 viewProjectionMatrix, + uniform float4 ambient) +{ + float2x4 blendDQ = blendWgt.x * worldDualQuaternion2x4Array[blendIdx.x]; + + float len = length(blendDQ[0]); + blendDQ /= len; + + float3 blendPosition = calculateBlendPosition(position, blendDQ); + + // view / projection + oPosition = mul(viewProjectionMatrix, float4(blendPosition, 1.0)); + + colour = ambient; +} + +void shadow_caster_dq_skinning_2weight_vs( + float4 position : POSITION, + float4 blendIdx : BLENDINDICES, + float4 blendWgt : BLENDWEIGHT, + + out float4 oPosition : POSITION, + out float4 colour : COLOR, + // Support up to 24 bones of float3x4 + // vs_1_1 only supports 96 params so more than this is not feasible + uniform float2x4 worldDualQuaternion2x4Array[24], + uniform float4x4 viewProjectionMatrix, + uniform float4 ambient) +{ + float2x4 blendDQ = blendTwoWeightsAntipod(blendWgt, blendIdx, worldDualQuaternion2x4Array); + + float len = length(blendDQ[0]); + blendDQ /= len; + + float3 blendPosition = calculateBlendPosition(position, blendDQ); + + // view / projection + oPosition = mul(viewProjectionMatrix, float4(blendPosition, 1.0)); + + colour = ambient; +} + +void shadow_caster_dq_skinning_3weight_vs( + float4 position : POSITION, + float4 blendIdx : BLENDINDICES, + float4 blendWgt : BLENDWEIGHT, + + out float4 oPosition : POSITION, + out float4 colour : COLOR, + // Support up to 24 bones of float3x4 + // vs_1_1 only supports 96 params so more than this is not feasible + uniform float2x4 worldDualQuaternion2x4Array[24], + uniform float4x4 viewProjectionMatrix, + uniform float4 ambient) +{ + float2x4 blendDQ = blendThreeWeightsAntipod(blendWgt, blendIdx, worldDualQuaternion2x4Array); + + float len = length(blendDQ[0]); + blendDQ /= len; + + float3 blendPosition = calculateBlendPosition(position, blendDQ); + + // view / projection + oPosition = mul(viewProjectionMatrix, float4(blendPosition, 1.0)); + + colour = ambient; +} + +void shadow_caster_dq_skinning_4weight_vs( + float4 position : POSITION, + float4 blendIdx : BLENDINDICES, + float4 blendWgt : BLENDWEIGHT, + + out float4 oPosition : POSITION, + out float4 colour : COLOR, + // Support up to 24 bones of float3x4 + // vs_1_1 only supports 96 params so more than this is not feasible + uniform float2x4 worldDualQuaternion2x4Array[24], + uniform float4x4 viewProjectionMatrix, + uniform float4 ambient) +{ + float2x4 blendDQ = blendFourWeightsAntipod(blendWgt, blendIdx, worldDualQuaternion2x4Array); + + float len = length(blendDQ[0]); + blendDQ /= len; + + float3 blendPosition = calculateBlendPosition(position, blendDQ); + + // view / projection + oPosition = mul(viewProjectionMatrix, float4(blendPosition, 1.0)); + + colour = ambient; +} + + +//Two-phase skinning shadow caster pass +void shadow_caster_dq_skinning_1weight_twophase_vs( + float4 position : POSITION, + float4 blendIdx : BLENDINDICES, + float4 blendWgt : BLENDWEIGHT, + + out float4 oPosition : POSITION, + out float4 colour : COLOR, + // Support up to 24 bones of float3x4 + // vs_1_1 only supports 96 params so more than this is not feasible + uniform float2x4 worldDualQuaternion2x4Array[24], + uniform float3x4 scaleM[24], + uniform float4x4 viewProjectionMatrix, + uniform float4 ambient) +{ + //First phase - applies scaling and shearing: + float3x4 blendS = blendWgt.x*scaleM[blendIdx.x]; + + float3 pass1_position = mul(blendS, position); + + //Second phase + float2x4 blendDQ = blendWgt.x * worldDualQuaternion2x4Array[blendIdx.x]; + + float len = length(blendDQ[0]); + blendDQ /= len; + + float3 blendPosition = calculateBlendPosition(float4(pass1_position, 1.0), blendDQ); + + // view / projection + oPosition = mul(viewProjectionMatrix, float4(blendPosition, 1.0)); + + colour = ambient; +} + +//Two-phase skinning shadow caster pass +void shadow_caster_dq_skinning_2weight_twophase_vs( + float4 position : POSITION, + float4 blendIdx : BLENDINDICES, + float4 blendWgt : BLENDWEIGHT, + + out float4 oPosition : POSITION, + out float4 colour : COLOR, + // Support up to 24 bones of float3x4 + // vs_1_1 only supports 96 params so more than this is not feasible + uniform float2x4 worldDualQuaternion2x4Array[24], + uniform float3x4 scaleM[24], + uniform float4x4 viewProjectionMatrix, + uniform float4 ambient) +{ + //First phase - applies scaling and shearing: + float3x4 blendS = blendWgt.x*scaleM[blendIdx.x]; + blendS += blendWgt.y*scaleM[blendIdx.y]; + + float3 pass1_position = mul(blendS, position); + + //Second phase + float2x4 blendDQ = blendTwoWeightsAntipod(blendWgt, blendIdx, worldDualQuaternion2x4Array); + + float len = length(blendDQ[0]); + blendDQ /= len; + + float3 blendPosition = calculateBlendPosition(float4(pass1_position, 1.0), blendDQ); + + // view / projection + oPosition = mul(viewProjectionMatrix, float4(blendPosition, 1.0)); + + colour = ambient; +} + + diff --git a/bin/media/RTShaderLib/materials/DualQuaternionSkinning_Shadow.material b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_Shadow.material new file mode 100644 index 0000000000..fd94953a14 --- /dev/null +++ b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_Shadow.material @@ -0,0 +1,384 @@ +/////////////////////////////////////////////////////////////////////////// +/// Declare shaders for casters +/////////////////////////////////////////////////////////////////////////// + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_1weight_vs unified +{ + delegate Ogre/RTShader/shadow_caster_dq_skinning_1weight_vs_glsl + delegate Ogre/RTShader/shadow_caster_dq_skinning_1weight_vs_cg +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_2weight_vs unified +{ + delegate Ogre/RTShader/shadow_caster_dq_skinning_2weight_vs_glsl + delegate Ogre/RTShader/shadow_caster_dq_skinning_2weight_vs_cg +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_3weight_vs unified +{ + delegate Ogre/RTShader/shadow_caster_dq_skinning_3weight_vs_glsl + delegate Ogre/RTShader/shadow_caster_dq_skinning_3weight_vs_cg +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_4weight_vs unified +{ + delegate Ogre/RTShader/shadow_caster_dq_skinning_4weight_vs_glsl + delegate Ogre/RTShader/shadow_caster_dq_skinning_4weight_vs_cg +} +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_1weight_twophase_vs unified +{ + delegate Ogre/RTShader/shadow_caster_dq_skinning_1weight_twophase_vs_cg +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_2weight_twophase_vs unified +{ + delegate Ogre/RTShader/shadow_caster_dq_skinning_2weight_twophase_vs_cg +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_3weight_twophase_vs unified +{ + delegate Ogre/RTShader/shadow_caster_dq_skinning_3weight_twophase_vs_cg +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_4weight_twophase_vs unified +{ + delegate Ogre/RTShader/shadow_caster_dq_skinning_4weight_twophase_vs_cg +} + +fragment_program Ogre/RTShader/shadow_caster_dq_ps unified +{ + delegate Ogre/RTShader/shadow_caster_dq_ps_glsl + delegate Ogre/RTShader/shadow_caster_dq_ps_cg +} + +// declare the fragment shader (GLSL for the language) +fragment_program Ogre/RTShader/shadow_caster_dq_ps_glsl glsl +{ + source DualQuaternionSkinning_ShadowPassThrough_ps.glsl +} + +// declare the fragment shader (CG for the language) +fragment_program Ogre/RTShader/shadow_caster_dq_ps_cg cg +{ + // source file + source DualQuaternionSkinning_Shadow.cg + // will run on pixel shader 2.0+ + profiles ps_2_0 arbfp1 + // entry function + entry_point shadow_caster_dq_ps + + default_params + { + + } +} + +vertex_program Ogre/RTShader/DualQuaternionHardwareSkinningTwoWeightsCommon glsl +{ + source DualQuaternion_Common.glsl +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_1weight_vs_glsl glsl +{ + source DualQuaternionSkinning_ShadowOneWeight.glsl + attach Ogre/RTShader/DualQuaternionHardwareSkinningTwoWeightsCommon + includes_skeletal_animation true + + default_params + { + param_named_auto worldDualQuaternion2x4Array world_dualquaternion_array_2x4 + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto ambient ambient_light_colour + } +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_2weight_vs_glsl glsl +{ + source DualQuaternionSkinning_ShadowTwoWeights.glsl + attach Ogre/RTShader/DualQuaternionHardwareSkinningTwoWeightsCommon + includes_skeletal_animation true + + default_params + { + param_named_auto worldDualQuaternion2x4Array world_dualquaternion_array_2x4 + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto ambient ambient_light_colour + } +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_3weight_vs_glsl glsl +{ + source DualQuaternionSkinning_ShadowThreeWeights.glsl + attach Ogre/RTShader/DualQuaternionHardwareSkinningTwoWeightsCommon + includes_skeletal_animation true + + default_params + { + param_named_auto worldDualQuaternion2x4Array world_dualquaternion_array_2x4 + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto ambient ambient_light_colour + } +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_4weight_vs_glsl glsl +{ + source DualQuaternionSkinning_ShadowFourWeights.glsl + attach Ogre/RTShader/DualQuaternionHardwareSkinningTwoWeightsCommon + includes_skeletal_animation true + + default_params + { + param_named_auto worldDualQuaternion2x4Array world_dualquaternion_array_2x4 + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto ambient ambient_light_colour + } +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_1weight_vs_cg cg +{ + source DualQuaternionSkinning_Shadow.cg + //will run on 3 to accommodate the amount of registers + profiles vs_3_0 vp40 arbvp1 + entry_point shadow_caster_dq_skinning_1weight_vs + + default_params + { + param_named_auto worldDualQuaternion2x4Array world_dualquaternion_array_2x4 + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto ambient ambient_light_colour + } +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_2weight_vs_cg cg +{ + source DualQuaternionSkinning_Shadow.cg + //will run on 3 to accommodate the amount of registers + profiles vs_3_0 vp40 arbvp1 + entry_point shadow_caster_dq_skinning_2weight_vs + includes_skeletal_animation true + + default_params + { + param_named_auto worldDualQuaternion2x4Array world_dualquaternion_array_2x4 + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto ambient ambient_light_colour + } +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_3weight_vs_cg cg +{ + source DualQuaternionSkinning_Shadow.cg + //will run on 3 to accommodate the amount of registers + profiles vs_3_0 vp40 arbvp1 + entry_point shadow_caster_dq_skinning_3weight_vs + + default_params + { + param_named_auto worldDualQuaternion2x4Array world_dualquaternion_array_2x4 + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto ambient ambient_light_colour + } +} + + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_4weight_vs_cg cg +{ + source DualQuaternionSkinning_Shadow.cg + //will run on 3 to accommodate the amount of registers + profiles vs_3_0 vp40 arbvp1 + entry_point shadow_caster_dq_skinning_4weight_vs + + default_params + { + param_named_auto worldDualQuaternion2x4Array world_dualquaternion_array_2x4 + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto ambient ambient_light_colour + } +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_1weight_twophase_vs_cg cg +{ + source DualQuaternionSkinning_Shadow.cg + //will run on 3 to accommodate the amount of registers + profiles vs_3_0 vp40 arbvp1 + entry_point shadow_caster_dq_skinning_1weight_twophase_vs + + default_params + { + param_named_auto worldDualQuaternion2x4Array world_dualquaternion_array_2x4 + param_named_auto scaleM world_scale_shear_matrix_array_3x4 + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto ambient ambient_light_colour + } +} + +vertex_program Ogre/RTShader/shadow_caster_dq_skinning_2weight_twophase_vs_cg cg +{ + source DualQuaternionSkinning_Shadow.cg + //will run on 3 to accommodate the amount of registers + profiles vs_3_0 vp40 arbvp1 + entry_point shadow_caster_dq_skinning_2weight_twophase_vs + includes_skeletal_animation true + + default_params + { + param_named_auto worldDualQuaternion2x4Array world_dualquaternion_array_2x4 + param_named_auto scaleM world_scale_shear_matrix_array_3x4 + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto ambient ambient_light_colour + } +} + +/////////////////////////////////////////////////////////////////////////// +/// Declare materials for casters and casters with hardware skinning +/////////////////////////////////////////////////////////////////////////// + +material Ogre/RTShader/shadow_caster_dq_skinning_1weight +{ + technique + { + // all this will do is write depth and depth˛ to red and green + pass + { + vertex_program_ref Ogre/RTShader/shadow_caster_dq_skinning_1weight_vs + { + } + + fragment_program_ref Ogre/RTShader/shadow_caster_dq_ps + { + } + } + } +} + + +material Ogre/RTShader/shadow_caster_dq_skinning_2weight +{ + technique + { + // all this will do is write depth and depth˛ to red and green + pass + { + vertex_program_ref Ogre/RTShader/shadow_caster_dq_skinning_2weight_vs + { + } + + fragment_program_ref Ogre/RTShader/shadow_caster_dq_ps + { + } + } + } +} + + +material Ogre/RTShader/shadow_caster_dq_skinning_3weight +{ + technique + { + // all this will do is write depth and depth˛ to red and green + pass + { + vertex_program_ref Ogre/RTShader/shadow_caster_dq_skinning_3weight_vs + { + } + + fragment_program_ref Ogre/RTShader/shadow_caster_dq_ps + { + } + } + } +} + + +material Ogre/RTShader/shadow_caster_dq_skinning_4weight +{ + technique + { + // all this will do is write depth and depth˛ to red and green + pass + { + vertex_program_ref Ogre/RTShader/shadow_caster_dq_skinning_4weight_vs + { + } + + fragment_program_ref Ogre/RTShader/shadow_caster_dq_ps + { + } + } + } +} + +material Ogre/RTShader/shadow_caster_dq_skinning_1weight_twophase +{ + technique + { + // all this will do is write depth and depth˛ to red and green + pass + { + vertex_program_ref Ogre/RTShader/shadow_caster_dq_skinning_1weight_twophase_vs + { + } + + fragment_program_ref Ogre/RTShader/shadow_caster_dq_ps + { + } + } + } +} + + +material Ogre/RTShader/shadow_caster_dq_skinning_2weight_twophase +{ + technique + { + // all this will do is write depth and depth˛ to red and green + pass + { + vertex_program_ref Ogre/RTShader/shadow_caster_dq_skinning_2weight_twophase_vs + { + } + + fragment_program_ref Ogre/RTShader/shadow_caster_dq_ps + { + } + } + } +} + + +material Ogre/RTShader/shadow_caster_dq_skinning_3weight_twophase +{ + technique + { + // all this will do is write depth and depth˛ to red and green + pass + { + vertex_program_ref Ogre/RTShader/shadow_caster_dq_skinning_2weight_twophase_vs + { + } + + fragment_program_ref Ogre/RTShader/shadow_caster_dq_ps + { + } + } + } +} + + +material Ogre/RTShader/shadow_caster_dq_skinning_4weight_twophase +{ + technique + { + // all this will do is write depth and depth˛ to red and green + pass + { + vertex_program_ref Ogre/RTShader/shadow_caster_dq_skinning_2weight_twophase_vs + { + } + + fragment_program_ref Ogre/RTShader/shadow_caster_dq_ps + { + } + } + } +} diff --git a/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowFourWeights.glsl b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowFourWeights.glsl new file mode 100644 index 0000000000..bf2d5a8077 --- /dev/null +++ b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowFourWeights.glsl @@ -0,0 +1,29 @@ +#version 120 + +mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, mat4x2 dualQuaternions[24]); +vec3 calculateBlendPosition(vec4 position, mat2x4 blendDQ); + +uniform mat4x2 worldDualQuaternion2x4Array[24]; +uniform mat4x4 viewProjectionMatrix; +uniform vec4 ambient; + +attribute vec4 vertex; +attribute vec4 blendIndices; +attribute vec4 blendWeights; + +//Shadow caster pass +void main() +{ + mat2x4 blendDQ = blendTwoWeightsAntipod(blendWeights, blendIndices, worldDualQuaternion2x4Array); + + float len = length(blendDQ[0]); + blendDQ /= len; + + vec3 blendPosition = calculateBlendPosition(vertex, blendDQ); + + // view / projection + gl_Position = viewProjectionMatrix * vec4(blendPosition, 1.0); + + gl_FrontColor = ambient; +} + diff --git a/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowOneWeight.glsl b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowOneWeight.glsl new file mode 100644 index 0000000000..efff54c738 --- /dev/null +++ b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowOneWeight.glsl @@ -0,0 +1,28 @@ +#version 120 + +vec3 calculateBlendPosition(vec4 position, mat2x4 blendDQ); + +uniform mat4x2 worldDualQuaternion2x4Array[24]; +uniform mat4x4 viewProjectionMatrix; +uniform vec4 ambient; + +attribute vec4 vertex; +attribute vec4 blendIndices; +attribute vec4 blendWeights; + +//Shadow caster pass +void main() +{ + mat2x4 blendDQ = blendWeights.x * worldDualQuaternion2x4Array[blendIndices.x]; + + float len = length(blendDQ[0]); + blendDQ /= len; + + vec3 blendPosition = calculateBlendPosition(vertex, blendDQ); + + // view / projection + gl_Position = viewProjectionMatrix * vec4(blendPosition, 1.0); + + gl_FrontColor = ambient; +} + diff --git a/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowPassThrough_ps.glsl b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowPassThrough_ps.glsl new file mode 100644 index 0000000000..020d50ec01 --- /dev/null +++ b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowPassThrough_ps.glsl @@ -0,0 +1,9 @@ +#version 120 + +attribute vec4 colour; + +void main() +{ + gl_FragColor = colour; +} + diff --git a/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowPassThrough_vs.glsl b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowPassThrough_vs.glsl new file mode 100644 index 0000000000..60f0a2d498 --- /dev/null +++ b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowPassThrough_vs.glsl @@ -0,0 +1,15 @@ +#version 120 + +uniform mat4x4 viewProjectionMatrix; +attribute vec4 vertex; + +void main() +{ + // view / projection + gl_Position = viewProjectionMatrix * vertex; + + //Depth information + gl_TexCoord[0].x = gl_Position.z; + gl_TexCoord[0].y = gl_Position.w; +} + diff --git a/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowThreeWeights.glsl b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowThreeWeights.glsl new file mode 100644 index 0000000000..bf2d5a8077 --- /dev/null +++ b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowThreeWeights.glsl @@ -0,0 +1,29 @@ +#version 120 + +mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, mat4x2 dualQuaternions[24]); +vec3 calculateBlendPosition(vec4 position, mat2x4 blendDQ); + +uniform mat4x2 worldDualQuaternion2x4Array[24]; +uniform mat4x4 viewProjectionMatrix; +uniform vec4 ambient; + +attribute vec4 vertex; +attribute vec4 blendIndices; +attribute vec4 blendWeights; + +//Shadow caster pass +void main() +{ + mat2x4 blendDQ = blendTwoWeightsAntipod(blendWeights, blendIndices, worldDualQuaternion2x4Array); + + float len = length(blendDQ[0]); + blendDQ /= len; + + vec3 blendPosition = calculateBlendPosition(vertex, blendDQ); + + // view / projection + gl_Position = viewProjectionMatrix * vec4(blendPosition, 1.0); + + gl_FrontColor = ambient; +} + diff --git a/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowTwoWeights.glsl b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowTwoWeights.glsl new file mode 100644 index 0000000000..e0ff330fac --- /dev/null +++ b/bin/media/RTShaderLib/materials/DualQuaternionSkinning_ShadowTwoWeights.glsl @@ -0,0 +1,29 @@ +#version 120 + +mat2x4 blendTwoWeightsAntipod(vec4 blendWgt, vec4 blendIdx, vec4 dualQuaternions[48]); +vec3 calculateBlendPosition(vec3 position, mat2x4 blendDQ); + +uniform vec4 worldDualQuaternion2x4Array[48]; +uniform mat4x4 viewProjectionMatrix; +uniform vec4 ambient; + +attribute vec4 vertex; +attribute vec4 blendIndices; +attribute vec4 blendWeights; + +//Shadow caster pass +void main() +{ + mat2x4 blendDQ = blendTwoWeightsAntipod(blendWeights, blendIndices, worldDualQuaternion2x4Array); + + float len = length(blendDQ[0]); + blendDQ /= len; + + vec3 blendPosition = calculateBlendPosition(vertex.xyz, blendDQ); + + // view / projection + gl_Position = viewProjectionMatrix * vec4(blendPosition, 1.0); + + gl_FrontColor = ambient; +} + diff --git a/bin/media/RTShaderLib/materials/HardwareSkinningShadow.cg b/bin/media/RTShaderLib/materials/HardwareSkinningShadow.cg new file mode 100644 index 0000000000..a407a8a4b0 --- /dev/null +++ b/bin/media/RTShaderLib/materials/HardwareSkinningShadow.cg @@ -0,0 +1,111 @@ +void shadow_caster_vs( + float4 position : POSITION, + out float4 oPosition : POSITION, + out float2 oDepthInfo : TEXCOORD0, + + uniform float4x4 wvpMatrix) +{ + // output position. + oPosition = mul(wvpMatrix, position); + + // depth info for the fragment. + oDepthInfo.x = oPosition.z; + oDepthInfo.y = oPosition.w; +} + +void shadow_caster_skinning_1weight_vs( + float4 position : POSITION, + out float4 oPosition : POSITION, + out float2 oDepthInfo : TEXCOORD0, + float4 blendIdx : BLENDINDICES, + float4 blendWgt : BLENDWEIGHT, + uniform float4x4 viewProjectionMatrix, + uniform float3x4 worldMatrix3x4Array[80]) +{ + // output position. + oPosition.xyz = mul(worldMatrix3x4Array[blendIdx.x], position) * blendWgt.x; + oPosition.w = 1; + oPosition = mul(viewProjectionMatrix, oPosition); + + + // depth info for the fragment. + oDepthInfo.x = oPosition.z; + oDepthInfo.y = oPosition.w; +} + +void shadow_caster_skinning_2weight_vs( + float4 position : POSITION, + out float4 oPosition : POSITION, + out float2 oDepthInfo : TEXCOORD0, + float4 blendIdx : BLENDINDICES, + float4 blendWgt : BLENDWEIGHT, + + uniform float4x4 viewProjectionMatrix, + uniform float3x4 worldMatrix3x4Array[80]) +{ + // output position. + oPosition.xyz = mul(worldMatrix3x4Array[blendIdx.x], position) * blendWgt.x + + mul(worldMatrix3x4Array[blendIdx.y], position) * blendWgt.y; + oPosition.w = 1; + oPosition = mul(viewProjectionMatrix, oPosition); + + + // depth info for the fragment. + oDepthInfo.x = oPosition.z; + oDepthInfo.y = oPosition.w; +} + + +void shadow_caster_skinning_3weight_vs( + float4 position : POSITION, + out float4 oPosition : POSITION, + out float2 oDepthInfo : TEXCOORD0, + float4 blendIdx : BLENDINDICES, + float4 blendWgt : BLENDWEIGHT, + + uniform float4x4 viewProjectionMatrix, + uniform float3x4 worldMatrix3x4Array[80]) +{ + // output position. + oPosition.xyz = mul(worldMatrix3x4Array[blendIdx.x], position) * blendWgt.x + + mul(worldMatrix3x4Array[blendIdx.y], position) * blendWgt.y + + mul(worldMatrix3x4Array[blendIdx.z], position) * blendWgt.z; + oPosition.w = 1; + oPosition = mul(viewProjectionMatrix, oPosition); + + + // depth info for the fragment. + oDepthInfo.x = oPosition.z; + oDepthInfo.y = oPosition.w; +} + + +void shadow_caster_skinning_4weight_vs( + float4 position : POSITION, + out float4 oPosition : POSITION, + out float2 oDepthInfo : TEXCOORD0, + float4 blendIdx : BLENDINDICES, + float4 blendWgt : BLENDWEIGHT, + + uniform float4x4 viewProjectionMatrix, + uniform float3x4 worldMatrix3x4Array[80]) +{ + // output position. + oPosition.xyz = mul(worldMatrix3x4Array[blendIdx.x], position) * blendWgt.x + + mul(worldMatrix3x4Array[blendIdx.y], position) * blendWgt.y + + mul(worldMatrix3x4Array[blendIdx.z], position) * blendWgt.z + + mul(worldMatrix3x4Array[blendIdx.w], position) * blendWgt.w; + oPosition.w = 1; + oPosition = mul(viewProjectionMatrix, oPosition); + + + // depth info for the fragment. + oDepthInfo.x = oPosition.z; + oDepthInfo.y = oPosition.w; +} + +void shadow_caster_ps( + out float4 oColour : COLOR) +{ + oColour = 0.5; +} diff --git a/bin/media/RTShaderLib/materials/HardwareSkinningShadow.material b/bin/media/RTShaderLib/materials/HardwareSkinningShadow.material new file mode 100644 index 0000000000..1685ee88ce --- /dev/null +++ b/bin/media/RTShaderLib/materials/HardwareSkinningShadow.material @@ -0,0 +1,265 @@ +/////////////////////////////////////////////////////////////////////////// +/// Declare CG shaders for casters +/////////////////////////////////////////////////////////////////////////// + +// declare the fragment shader (CG for the language) +fragment_program Ogre/RTShader/shadow_caster_ps_cg cg +{ + // source file + source HardwareSkinningShadow.cg + // will run on pixel shader 2.0+ + profiles ps_2_0 arbfp1 + // entry function + entry_point shadow_caster_ps + default_params + { + + } +} + +vertex_program Ogre/RTShader/shadow_caster_skinning_1weight_vs cg +{ + source HardwareSkinningShadow.cg + //will run on 3 to accommodate the amount of registers + profiles vs_3_0 vp40 arbvp1 + entry_point shadow_caster_skinning_1weight_vs + + default_params + { + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto worldMatrix3x4Array world_matrix_array_3x4 + } +} + +vertex_program Ogre/RTShader/shadow_caster_skinning_2weight_vs_cg cg +{ + source HardwareSkinningShadow.cg + //will run on 3 to accommodate the amount of registers + profiles vs_3_0 vp40 arbvp1 + entry_point shadow_caster_skinning_2weight_vs + + default_params + { + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto worldMatrix3x4Array world_matrix_array_3x4 + } +} + +vertex_program Ogre/RTShader/shadow_caster_skinning_3weight_vs cg +{ + source HardwareSkinningShadow.cg + //will run on 3 to accommodate the amount of registers + profiles vs_3_0 vp40 arbvp1 + entry_point shadow_caster_skinning_3weight_vs + + default_params + { + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto worldMatrix3x4Array world_matrix_array_3x4 + } +} + + +vertex_program Ogre/RTShader/shadow_caster_skinning_4weight_vs cg +{ + source HardwareSkinningShadow.cg + //will run on 3 to accommodate the amount of registers + profiles vs_3_0 vp40 arbvp1 + entry_point shadow_caster_skinning_4weight_vs + + default_params + { + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto worldMatrix3x4Array world_matrix_array_3x4 + } +} + +/////////////////////////////////////////////////////////////////////////// +/// Declare GLSL shaders for casters +/////////////////////////////////////////////////////////////////////////// + +fragment_program Ogre/RTShader/shadow_caster_ps_glsl glsl +{ + source HardwareSkinningShadow_Fragment.glsl +} + +vertex_program Ogre/RTShader/shadow_caster_skinning_2weight_vs_glsl glsl +{ + source HardwareSkinningShadow_TwoWeights.glsl + includes_skeletal_animation true + + default_params + { + param_named_auto viewProjectionMatrix viewproj_matrix + param_named_auto worldMatrix3x4Array world_matrix_array_3x4 + param_named_auto ambient ambient_light_colour + } +} + +/////////////////////////////////////////////////////////////////////////// +/// Unified program declarations +/////////////////////////////////////////////////////////////////////////// +fragment_program Ogre/RTShader/shadow_caster_ps unified +{ + delegate Ogre/RTShader/shadow_caster_ps_glsl + delegate Ogre/RTShader/shadow_caster_ps_cg +} + +vertex_program Ogre/RTShader/shadow_caster_skinning_2weight_vs unified +{ + delegate Ogre/RTShader/shadow_caster_skinning_2weight_vs_glsl + delegate Ogre/RTShader/shadow_caster_skinning_2weight_vs_cg +} + +/////////////////////////////////////////////////////////////////////////// +/// Declare materials for casters and casters with hardware skinning +/////////////////////////////////////////////////////////////////////////// + +material Ogre/RTShader/shadow_caster_skinning_1weight +{ + technique + { + // all this will do is write depth and depth˛ to red and green + pass + { + vertex_program_ref Ogre/RTShader/shadow_caster_skinning_1weight_vs + { + } + + fragment_program_ref Ogre/RTShader/shadow_caster_ps + { + } + } + } +} + + +material Ogre/RTShader/shadow_caster_skinning_2weight +{ + technique + { + // all this will do is write depth and depth˛ to red and green + pass + { + vertex_program_ref Ogre/RTShader/shadow_caster_skinning_2weight_vs + { + } + + fragment_program_ref Ogre/RTShader/shadow_caster_ps + { + } + } + } +} + + +material Ogre/RTShader/shadow_caster_skinning_3weight +{ + technique + { + // all this will do is write depth and depth˛ to red and green + pass + { + vertex_program_ref Ogre/RTShader/shadow_caster_skinning_3weight_vs + { + } + + fragment_program_ref Ogre/RTShader/shadow_caster_ps + { + } + } + } +} + + +material Ogre/RTShader/shadow_caster_skinning_4weight +{ + technique + { + // all this will do is write depth and depth˛ to red and green + pass + { + vertex_program_ref Ogre/RTShader/shadow_caster_skinning_4weight_vs + { + } + + fragment_program_ref Ogre/RTShader/shadow_caster_ps + { + } + } + } +} + +/////////////////////////////////////////////////////////////////////////// +/// Declare programs for recievers +/////////////////////////////////////////////////////////////////////////// + + +vertex_program Ogre/RTShader/shadow_receiver_vs cg +{ + source HardwareSkinningShadow.cg + profiles vs_1_1 arbvp1 + entry_point shadow_receiver_vs + + default_params + { + param_named_auto worldMatrix world_matrix + param_named_auto viewProjMatrix viewproj_matrix + } +} + +fragment_program Ogre/RTShader/shadow_receiver_ps cg +{ + source HardwareSkinningShadow.cg + profiles ps_2_x arbfp1 + entry_point shadow_receiver_ps + + default_params + { + param_named_auto shadowColor shadow_colour + } +} + +material Ogre/RTShader/shadow_receiver +{ + technique + { + pass + { + ambient 1 1 1 1 + diffuse 1 1 1 1 + + depth_bias 1.25 1.15 + lighting off + fog_override true none + depth_write off + + vertex_program_ref Ogre/RTShader/shadow_receiver_vs + { + param_named texViewProjMatrix0 float4x4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + param_named texViewProjMatrix1 float4x4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + param_named texViewProjMatrix2 float4x4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + } + fragment_program_ref Ogre/RTShader/shadow_receiver_ps + { + param_named pssmSplitPoints float3 0 0 0 + } + + texture_unit shadow_tex0 + { + tex_address_mode border + tex_border_colour 1.0 1.0 1.0 1.0 + } + texture_unit shadow_tex1 + { + tex_address_mode border + tex_border_colour 1.0 1.0 1.0 1.0 + } + texture_unit shadow_tex2 + { + tex_address_mode border + tex_border_colour 1.0 1.0 1.0 1.0 + } + } + } +} diff --git a/bin/media/RTShaderLib/materials/HardwareSkinningShadow_Fragment.glsl b/bin/media/RTShaderLib/materials/HardwareSkinningShadow_Fragment.glsl new file mode 100644 index 0000000000..4d1e91ff7b --- /dev/null +++ b/bin/media/RTShaderLib/materials/HardwareSkinningShadow_Fragment.glsl @@ -0,0 +1,6 @@ +#version 120 + +void main() +{ + gl_FragColor = gl_Color; +} diff --git a/bin/media/RTShaderLib/materials/HardwareSkinningShadow_TwoWeights.glsl b/bin/media/RTShaderLib/materials/HardwareSkinningShadow_TwoWeights.glsl new file mode 100644 index 0000000000..2e050103b0 --- /dev/null +++ b/bin/media/RTShaderLib/materials/HardwareSkinningShadow_TwoWeights.glsl @@ -0,0 +1,18 @@ +#version 120 + +attribute vec4 vertex; +attribute vec4 blendIndices; +attribute vec4 blendWeights; + +uniform vec4 ambient; +uniform mat4x4 viewProjectionMatrix; +uniform mat4x3 worldMatrix3x4Array[80]; + +void main() +{ + // output position. + gl_Position = vertex.xyz * worldMatrix3x4Array[int(blendIndices.x)] * blendWeights.x + vertex.xyz * worldMatrix3x4Array[int(blendIndices.y)] * blendWeights.y; + gl_Position = viewProjectionMatrix * gl_Position; + + gl_FrontColor = ambient; +} diff --git a/bin/media/RTShaderLib/materials/RTShaderSystem.material b/bin/media/RTShaderLib/materials/RTShaderSystem.material new file mode 100644 index 0000000000..2afc7c2cc9 --- /dev/null +++ b/bin/media/RTShaderLib/materials/RTShaderSystem.material @@ -0,0 +1,221 @@ + +// RTShader System materials. + +// This is a single pass per pixel lighting based material. +// All scene lights will be applied within a single rendering pass. +// It saves geometry overdraw but it consumes more instructions during vertex and pixel shaders. +// Use this method when your scene uses small amount of lights. (1-3). +material RTSS/PerPixel_SinglePass +{ + technique + { + pass + { + // Turn off specular in order to use only diffuse based bump map technique. + specular 1.0 1.0 1.0 32 + + texture_unit + { + texture Panels_Diffuse.png + } + + // RT Shader system section. + rtshader_system + { + // Override lighting stage with per pixel lighting. + lighting_stage per_pixel + } + } + } +} + +// This is a single pass normal map lighting based material. +// All scene lights will be applied within a single rendering pass. +// Supports all kind of lights - directional, point and spot. +// It saves geometry overdraw but it consumes more instructions during vertex and pixel shaders. +// Use this method when your scene uses small amount of lights. (1-3). +material RTSS/NormalMapping_SinglePass +{ + technique + { + pass + { + // Comment the specular in order to use only diffuse based normal map technique. + specular 1.0 1.0 1.0 32 + + texture_unit + { + texture Panels_Diffuse.png + } + + // RT Shader system section. + rtshader_system + { + // Override lighting stage with normal map lighting. + lighting_stage normal_map Panels_Normal_Tangent.png tangent_space 0 bilinear 1 -1.0 + } + } + } +} + +// This is a multi pass normal map lighting based material. +// It acts as any other multi light material. +// This material defined to use only one type of light per lighting pass because the RTSS need to +// know what code to produce for the iterative lighting pass, otherwise it will throw an exception. +// It support any number of lights drawing but it uses more geometry drawing. +// Use this method when your scene uses large amount of lights. (3-8). +material RTSS/NormalMapping_MultiPass +{ + technique + { + // Base ambient pass + pass ambient + { + // base colours, not needed for rendering, but as information + // to lighting pass categorisation routine + ambient 1 1 1 + diffuse 0 0 0 + specular 0 0 0 0 + + // RT Shader system section. + rtshader_system + { + // Override dynamic light count with zero light count. + // Doing this will cause the RTSS to create + // ambient lighting shaders. + // If not doing that the RTSS it will use the current scene light count + // which will result in full lighting calculation in this pass. + light_count 0 0 0 + } + } + + // Lighting pass. + pass lighting + { + // Comment the specular in order to use only diffuse based normal map technique. + specular 1.0 1.0 1.0 32 + + // base colours, not needed for rendering, but as information + // to lighting pass categorisation routine + ambient 0 0 0 + + // do this for each point light + // You MUST specify the light type when working with the RT Shader System in iterative lighting method. + // otherwise an exception will be thrown. + iteration once_per_light point + + scene_blend add + + // RT Shader system section. + rtshader_system + { + // Override lighting stage with normal map lighting. + lighting_stage normal_map Panels_Normal_Tangent.png tangent_space 0 bilinear 1 -1.0 + } + } + + // Decal pass + pass decal + { + + lighting off + + scene_blend dest_colour zero + texture_unit decalmap + { + texture Panels_Diffuse.png + } + } + } +} + +// Athene single multi pass material override. +material RTSS/Athene/NormalMapping_SinglePass : RTSS/NormalMapping_SinglePass +{ + technique + { + pass + { + // Override the diffuse map. + texture_unit + { + texture egyptrockyfull.jpg + } + + // Override the normal map. + rtshader_system + { + lighting_stage normal_map atheneNormalMap.png tangent_space 0 bilinear 1 -1.0 + } + } + } +} + +// Athene model multi pass material override. +material RTSS/Athene/NormalMapping_MultiPass : RTSS/NormalMapping_MultiPass +{ + technique + { + pass lighting + { + // Override the normal map. + rtshader_system + { + lighting_stage normal_map atheneNormalMap.png tangent_space 0 bilinear 1 -1.0 + } + } + + // Decal pass + pass decal + { + // Override the decal map. + texture_unit decalmap + { + texture egyptrockyfull.jpg + } + } + } +} + +// This material derive from the multi pass normal map material. +// The only difference is that it process 2 point lights at each lighting pass. +material RTSS/NormalMapping_MultiPass_2lights : RTSS/NormalMapping_MultiPass +{ + technique + { + pass lighting + { + // Override light iteration definition. + iteration 1 per_n_lights 2 point + } + } +} + +// This material demonstrates the texture blending extension. +material RTSS/LayeredBlending +{ + technique + { + pass + { + lighting off + texture_unit + { + scale 0.1 0.1 + texture rockwall.tga + } + + texture_unit + { + // RT Shader system section - required by the layered blend extension. + rtshader_system + { + layered_blend luminosity + source_modifier src1_inverse_modulate custom 2 + } + texture ogrelogo.png + } + } + } +} + diff --git a/bin/media/RTShaderLib/materials/TriplanarTexturing.material b/bin/media/RTShaderLib/materials/TriplanarTexturing.material new file mode 100644 index 0000000000..0c0a8e323e --- /dev/null +++ b/bin/media/RTShaderLib/materials/TriplanarTexturing.material @@ -0,0 +1,17 @@ +material Ogre/RTShader/TriplanarTexturing +{ + technique + { + pass + { + ambient 0.5 0.5 0.5 + diffuse 1.0 1.0 1.0 + rtshader_system + { + // Texturescale, Plateau-size (0 to 0.57, not bigger to avoid division by zero!), transition-speed + // Texture from x, from y, from z + triplanarTexturing 0.05 0.2 4.0 BumpyMetal.jpg egyptrockyfull.jpg MtlPlat2.jpg + } + } + } +} \ No newline at end of file From c4f4bd0ee4a88a196b8adb6d80242ed28c7a4f7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lasse=20=C3=96=C3=B6rni?= Date: Fri, 8 Feb 2013 17:37:43 +0200 Subject: [PATCH 09/13] Checkout a fixed Ogre revision for Android build --- android/BuildAndroidDeps.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/BuildAndroidDeps.bash b/android/BuildAndroidDeps.bash index bb6be3c567..63343559b4 100755 --- a/android/BuildAndroidDeps.bash +++ b/android/BuildAndroidDeps.bash @@ -20,7 +20,7 @@ fi tundra_android_native_api_level=9 # This is the minimum API level we can possibly support, we require NativeActivity and AAssetManager. echo "Targeting Android Native API level $tundra_android_native_api_level" -export TUNDRA_ANDROID_ABI=x86 # Possible options 'armeabi', 'armeabi-v7a', 'x86' +export TUNDRA_ANDROID_ABI=armeabi-v7a # Possible options 'armeabi', 'armeabi-v7a', 'x86' echo "Targeting Android ABI '$TUNDRA_ANDROID_ABI'" cmake_build_type=Release @@ -88,7 +88,7 @@ fi if [ ! -d ogre/.hg ]; then echo "Cloning OGRE.." - hg clone -r v1-9 https://bitbucket.org/sinbad/ogre ogre + hg clone -r dd56c87 https://bitbucket.org/sinbad/ogre ogre else echo "OGRE already cloned. Skipping.." fi From 9d735318b7c96b21158d1da6ae7ae520070cd7c1 Mon Sep 17 00:00:00 2001 From: cadaver Date: Fri, 8 Feb 2013 20:24:54 +0200 Subject: [PATCH 10/13] Revert back to default x86 ABI. --- android/BuildAndroidDeps.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/BuildAndroidDeps.bash b/android/BuildAndroidDeps.bash index 63343559b4..8d8bdea1d4 100755 --- a/android/BuildAndroidDeps.bash +++ b/android/BuildAndroidDeps.bash @@ -20,7 +20,7 @@ fi tundra_android_native_api_level=9 # This is the minimum API level we can possibly support, we require NativeActivity and AAssetManager. echo "Targeting Android Native API level $tundra_android_native_api_level" -export TUNDRA_ANDROID_ABI=armeabi-v7a # Possible options 'armeabi', 'armeabi-v7a', 'x86' +export TUNDRA_ANDROID_ABI=x86 # Possible options 'armeabi', 'armeabi-v7a', 'x86' echo "Targeting Android ABI '$TUNDRA_ANDROID_ABI'" cmake_build_type=Release From 3128e0723a14c0b9f71c84d59d47548d4b356196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lasse=20=C3=96=C3=B6rni?= Date: Thu, 13 Dec 2012 15:32:36 +0200 Subject: [PATCH 11/13] Make sure pthread library is not attempted to be linked on Android. --- cmake/ConfigurePackages.cmake | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmake/ConfigurePackages.cmake b/cmake/ConfigurePackages.cmake index 494203ae50..27406ed4d2 100644 --- a/cmake/ConfigurePackages.cmake +++ b/cmake/ConfigurePackages.cmake @@ -70,6 +70,11 @@ if (APPLE) set (BOOST_INCLUDE_DIRS ${ENV_TUNDRA_DEP_PATH}/include) endif() +# On Android, pthread library does not exist. Remove it if mistakenly added to boost libraries +if (ANDROID) + list(REMOVE_ITEM Boost_LIBRARIES "pthread") +endif() + endmacro (configure_boost) macro (configure_qt4) From 3d2d025110426c51322e83fb9f0ed6a20f0e2c7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Fri, 14 Dec 2012 17:40:44 +0200 Subject: [PATCH 12/13] Don't look up system boost libraries on Android, since we are cross-compiling. --- cmake/ConfigurePackages.cmake | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmake/ConfigurePackages.cmake b/cmake/ConfigurePackages.cmake index 27406ed4d2..517f890eb1 100644 --- a/cmake/ConfigurePackages.cmake +++ b/cmake/ConfigurePackages.cmake @@ -35,6 +35,11 @@ endif() message("** Configuring Boost") message(STATUS "Using BOOST_ROOT = " ${BOOST_ROOT}) +# We build boost from custom deps directory, so don't look up boost from system. +if (ANDROID) + set(Boost_NO_SYSTEM_PATHS TRUE) +endif() + set(Boost_FIND_REQUIRED TRUE) set(Boost_FIND_QUIETLY TRUE) set(Boost_DEBUG FALSE) From e3b638e0457e7f9aa32797cf517877fb9c8f1c3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lasse=20=C3=96=C3=B6rni?= Date: Fri, 8 Feb 2013 22:07:47 +0200 Subject: [PATCH 13/13] Removed outdated information from Android build instructions. --- android/Build-instructions.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/android/Build-instructions.txt b/android/Build-instructions.txt index ab8caf74fe..efa7f98d70 100644 --- a/android/Build-instructions.txt +++ b/android/Build-instructions.txt @@ -112,6 +112,4 @@ Running Tundra - Tundra on Android will currently use the fixed directory Download/Tundra on the Android device's internal memory (/sdcard/Download/Tundra) as its "Bin" folder. Copy the contents of your Tundra Bin directory there as applicable. -- Qt's .so files (in the Necessitas build's 'lib' directory, as well as in 'plugins/platforms/android' directory) and .jar files (in Necessitas build's 'jar' directory) need also to be placed in Download/Tundra. - - If it exists, Tundra will use the file commandline.txt in the Download/Tundra folder for its command line parameters. Use this to configure eg. the scene to load.