summaryrefslogtreecommitdiff
path: root/Runtime/Export/ShaderBindings.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Export/ShaderBindings.txt')
-rw-r--r--Runtime/Export/ShaderBindings.txt415
1 files changed, 415 insertions, 0 deletions
diff --git a/Runtime/Export/ShaderBindings.txt b/Runtime/Export/ShaderBindings.txt
new file mode 100644
index 0000000..30a64bd
--- /dev/null
+++ b/Runtime/Export/ShaderBindings.txt
@@ -0,0 +1,415 @@
+C++RAW
+
+#include "UnityPrefix.h"
+#include "Configuration/UnityConfigure.h"
+#include "Runtime/Mono/MonoExportUtility.h"
+#include "Runtime/Shaders/Material.h"
+#include "Runtime/Shaders/Shader.h"
+#include "External/shaderlab/Library/intshader.h"
+#include "Runtime/Camera/Renderqueue.h"
+#include "External/shaderlab/Library/properties.h"
+#include "Runtime/Misc/ResourceManager.h"
+#include "Runtime/Shaders/ShaderNameRegistry.h"
+#include "Runtime/Shaders/ShaderKeywords.h"
+#include "Runtime/Shaders/ComputeShader.h"
+#include "Runtime/Scripting/ScriptingUtility.h"
+#include "Runtime/Scripting/ScriptingManager.h"
+#include "Runtime/Scripting/Backend/ScriptingTypeRegistry.h"
+#include "Runtime/Scripting/ScriptingExportUtility.h"
+#include "Runtime/Scripting/Backend/ScriptingBackendApi.h"
+#include "Runtime/Misc/GraphicsScriptingUtility.h"
+#include "Runtime/Scripting/ScriptingObjectWithIntPtrField.h"
+
+
+
+C++RAW
+
+PPtr<Shader> s_ScriptingCurrentShader;
+const ChannelAssigns* s_ScriptingCurrentChannels;
+
+
+CSRAW
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Collections;
+
+namespace UnityEngine
+{
+
+CLASS Shader : Object
+
+ CUSTOM static Shader Find (string name)
+ {
+ return Scripting::ScriptingWrapperFor(GetScriptMapper().FindShader(name));
+ }
+ CUSTOM internal static Shader FindBuiltin (string name)
+ {
+ return Scripting::ScriptingWrapperFor(GetBuiltinResource<Shader> (name));
+ }
+
+ AUTO_PROP bool isSupported IsSupported
+
+ CONDITIONAL UNITY_EDITOR
+ CUSTOM_PROP internal string customEditor { return scripting_string_new (self->GetCustomEditorName()); }
+
+ CUSTOM static void EnableKeyword (string keyword) {
+ g_ShaderKeywords.Enable( keywords::Create( keyword ) );
+ }
+ CUSTOM static void DisableKeyword (string keyword) {
+ g_ShaderKeywords.Disable( keywords::Create( keyword ) );
+ }
+
+ AUTO_PROP int maximumLOD GetMaximumShaderLOD SetMaximumShaderLOD
+ CUSTOM_PROP static int globalMaximumLOD { return Shader::GetGlobalMaximumShaderLOD(); } { Shader::SetGLobalMaximumShaderLOD (value); }
+
+ CUSTOM_PROP int renderQueue { return self->GetShaderLabShader()->GetRenderQueue(); }
+
+ CSRAW public static void SetGlobalColor (string propertyName, Color color) {
+ SetGlobalColor(Shader.PropertyToID(propertyName), color);
+ }
+ CUSTOM static void SetGlobalColor (int nameID, Color color) {
+ ShaderLab::PropertySheet *props = ShaderLab::g_GlobalProperties;
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ props->SetVector (propName, color.GetPtr ());
+ }
+ CSRAW public static void SetGlobalVector (string propertyName, Vector4 vec) {
+ SetGlobalColor (propertyName, vec);
+ }
+ CSRAW public static void SetGlobalVector (int nameID, Vector4 vec) {
+ SetGlobalColor (nameID, vec);
+ }
+
+ CSRAW public static void SetGlobalFloat (string propertyName, float value) {
+ SetGlobalFloat(Shader.PropertyToID(propertyName), value);
+ }
+ CUSTOM static void SetGlobalFloat (int nameID, float value) {
+ ShaderLab::PropertySheet *props = ShaderLab::g_GlobalProperties;
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ props->SetFloat (propName, value);
+ }
+
+ CSRAW public static void SetGlobalInt (string propertyName, int value) { SetGlobalFloat(propertyName, (float)value); }
+ CSRAW public static void SetGlobalInt (int nameID, int value) { SetGlobalFloat(nameID, (float)value); }
+
+ CSRAW public static void SetGlobalTexture (string propertyName, Texture tex) {
+ SetGlobalTexture (Shader.PropertyToID(propertyName), tex);
+ }
+ CUSTOM static void SetGlobalTexture (int nameID, Texture tex) {
+ Texture& texture = *tex;
+ ShaderLab::PropertySheet *props = ShaderLab::g_GlobalProperties;
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ props->SetTexture (propName, &texture);
+ }
+
+ CSRAW public static void SetGlobalMatrix (string propertyName, Matrix4x4 mat) {
+ SetGlobalMatrix (Shader.PropertyToID(propertyName), mat);
+ }
+ CUSTOM static void SetGlobalMatrix (int nameID, Matrix4x4 mat) {
+ ShaderLab::PropertySheet *props = ShaderLab::g_GlobalProperties;
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ props->SetValueProp (propName, 16, mat.GetPtr());
+ }
+
+ CUSTOM static void SetGlobalTexGenMode (string propertyName, TexGenMode mode) {
+ ShaderLab::PropertySheet *props = ShaderLab::g_GlobalProperties;
+ props->GetTexEnv(ScriptingStringToProperty (propertyName))->SetTexGen ((TexGenMode)mode);
+ }
+ CUSTOM static void SetGlobalTextureMatrixName (string propertyName, string matrixName) {
+ if(propertyName.Length() == 0)
+ {
+ ErrorString ("SetGlobalTextureMatrixName: Invalid empty propertyName");
+ return;
+ }
+ if(matrixName.Length() == 0)
+ {
+ ErrorString ("SetGlobalTextureMatrixName: Invalid empty matrixName");
+ return;
+ }
+ ShaderLab::PropertySheet *props = ShaderLab::g_GlobalProperties;
+ props->GetTexEnv(ScriptingStringToProperty (propertyName))->SetMatrixName (ScriptingStringToProperty (matrixName));
+ }
+
+ CONDITIONAL !UNITY_FLASH
+ CUSTOM static void SetGlobalBuffer (string propertyName, ComputeBuffer buffer) {
+ ShaderLab::PropertySheet *props = ShaderLab::g_GlobalProperties;
+ props->SetComputeBuffer (ScriptingStringToProperty (propertyName), buffer ? buffer->GetBufferHandle() : ComputeBufferID());
+ }
+
+ CUSTOM static int PropertyToID (string name) {
+ return ScriptingStringToProperty (name).index;
+ }
+
+ CUSTOM static void WarmupAllShaders () {
+ WarmupAllShaders ();
+ }
+
+END
+
+
+
+NONSEALED_CLASS Material : Object
+
+ CSRAW public Material (string contents) { Internal_CreateWithString (this, contents); }
+
+ CSRAW public Material (Shader shader) { Internal_CreateWithShader (this, shader); }
+
+ CSRAW public Material (Material source) : base () { Internal_CreateWithMaterial (this, source); }
+
+
+ AUTO_PTR_PROP Shader shader GetShader SetShader
+
+
+ CSRAW public Color color { get { return GetColor ("_Color"); } set { SetColor ("_Color", value); } }
+ CSRAW public Texture mainTexture { get { return GetTexture ("_MainTex"); } set { SetTexture ("_MainTex", value); } }
+ CSRAW public Vector2 mainTextureOffset { get { return GetTextureOffset("_MainTex"); } set { SetTextureOffset("_MainTex", value); } }
+ CSRAW public Vector2 mainTextureScale { get { return GetTextureScale("_MainTex"); } set { SetTextureScale("_MainTex", value); } }
+
+ CSRAW public void SetColor (string propertyName, Color color)
+ {
+ SetColor (Shader.PropertyToID(propertyName), color);
+ }
+ CUSTOM void SetColor (int nameID, Color color)
+ {
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ self->SetColor (propName, color);
+ }
+ CSRAW public Color GetColor (string propertyName)
+ {
+ return GetColor (Shader.PropertyToID(propertyName));
+ }
+ CUSTOM Color GetColor (int nameID)
+ {
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ return self->GetColor (propName);
+ }
+
+ CSRAW public void SetVector (string propertyName, Vector4 vector)
+ {
+ SetColor (propertyName, new Color (vector.x, vector.y, vector.z, vector.w));
+ }
+ CSRAW public void SetVector (int nameID, Vector4 vector)
+ {
+ SetColor (nameID, new Color (vector.x, vector.y, vector.z, vector.w));
+ }
+ CSRAW public Vector4 GetVector (string propertyName)
+ {
+ Color temp = GetColor (propertyName);
+ return new Vector4 (temp.r, temp.g, temp.b, temp.a);
+ }
+ CSRAW public Vector4 GetVector (int nameID)
+ {
+ Color temp = GetColor (nameID);
+ return new Vector4 (temp.r, temp.g, temp.b, temp.a);
+ }
+
+ CSRAW public void SetTexture (string propertyName, Texture texture)
+ {
+ SetTexture (Shader.PropertyToID(propertyName), texture);
+ }
+ CUSTOM void SetTexture (int nameID, Texture texture)
+ {
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ self->SetTexture (propName, texture);
+ }
+ CSRAW public Texture GetTexture (string propertyName)
+ {
+ return GetTexture (Shader.PropertyToID(propertyName));
+ }
+ CUSTOM Texture GetTexture (int nameID)
+ {
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ return Scripting::ScriptingWrapperFor (self->GetTexture (propName));
+ }
+
+
+ // Workaround for gcc/msvc where passing small mono structures by value does not work
+ CUSTOM private static void Internal_GetTextureOffset (Material mat, string name, out Vector2 output)
+ {
+ *output = mat->GetTextureOffset( ScriptingStringToProperty(name) );
+ }
+ CUSTOM private static void Internal_GetTextureScale (Material mat, string name, out Vector2 output)
+ {
+ *output = mat->GetTextureScale( ScriptingStringToProperty(name) );
+ }
+
+ CUSTOM void SetTextureOffset (string propertyName, Vector2 offset)
+ {
+ self->SetTextureOffset( ScriptingStringToProperty(propertyName), offset );
+ }
+ CSRAW public Vector2 GetTextureOffset (string propertyName)
+ {
+ Vector2 r;
+ Internal_GetTextureOffset(this, propertyName, out r);
+ return r;
+ }
+
+ CUSTOM void SetTextureScale (string propertyName, Vector2 scale)
+ {
+ self->SetTextureScale( ScriptingStringToProperty(propertyName), scale );
+ }
+ CSRAW public Vector2 GetTextureScale (string propertyName)
+ {
+ Vector2 r;
+ Internal_GetTextureScale(this, propertyName, out r);
+ return r;
+ }
+
+ CSRAW public void SetMatrix (string propertyName, Matrix4x4 matrix)
+ {
+ SetMatrix (Shader.PropertyToID(propertyName), matrix);
+ }
+ CUSTOM void SetMatrix (int nameID, Matrix4x4 matrix)
+ {
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ self->SetMatrix (propName, matrix);
+ }
+ CSRAW public Matrix4x4 GetMatrix (string propertyName)
+ {
+ return GetMatrix (Shader.PropertyToID(propertyName));
+ }
+ CUSTOM Matrix4x4 GetMatrix (int nameID)
+ {
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ return self->GetMatrix (propName);
+ }
+
+ CSRAW public void SetFloat (string propertyName, float value)
+ {
+ SetFloat (Shader.PropertyToID(propertyName), value);
+ }
+ CUSTOM void SetFloat (int nameID, float value)
+ {
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ self->SetFloat (propName, value);
+ }
+ CSRAW public float GetFloat (string propertyName)
+ {
+ return GetFloat (Shader.PropertyToID(propertyName));
+ }
+ CUSTOM float GetFloat (int nameID)
+ {
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ return self->GetFloat (propName);
+ }
+
+ CSRAW public void SetInt (string propertyName, int value) { SetFloat(propertyName, (float)value); }
+ CSRAW public void SetInt (int nameID, int value) { SetFloat(nameID, (float)value); }
+ CSRAW public int GetInt (string propertyName) { return (int)GetFloat(propertyName); }
+ CSRAW public int GetInt (int nameID) { return (int)GetFloat(nameID); }
+
+ CONDITIONAL !UNITY_FLASH
+ CUSTOM void SetBuffer (string propertyName, ComputeBuffer buffer) {
+ FastPropertyName fpName = ScriptingStringToProperty(propertyName);
+ self->SetComputeBuffer (fpName, buffer ? buffer->GetBufferHandle() : ComputeBufferID());
+ }
+
+ CSRAW public bool HasProperty (string propertyName)
+ {
+ return HasProperty (Shader.PropertyToID(propertyName));
+ }
+ CUSTOM bool HasProperty (int nameID)
+ {
+ ShaderLab::FastPropertyName propName; propName.index = nameID;
+ return self->HasProperty (propName);
+ }
+
+ CUSTOM string GetTag (string tag, bool searchFallbacks, string defaultValue = "") {
+ return scripting_string_new (self->GetTag (tag, !searchFallbacks, defaultValue));
+ }
+
+ CUSTOM void Lerp (Material start, Material end, float t)
+ {
+ const ShaderLab::PropertySheet &s1 = start->GetProperties();
+ const ShaderLab::PropertySheet &s2 = end->GetProperties();
+ self->GetWritableProperties().LerpProperties( s1, s2, clamp01(t) );
+ }
+
+ AUTO_PROP int passCount GetPassCount
+
+
+ CUSTOM bool SetPass (int pass) {
+ Material& mat = *self;
+ if (pass >= mat.GetPassCount())
+ {
+ ErrorStringMsg("Trying to access pass %d, but material '%s' subshader (0) has only %d valid passes.",
+ pass,
+ mat.GetName(),
+ mat.GetPassCount());
+ return false;
+ }
+
+ if (!CheckShouldRenderPass (pass, mat))
+ return false;
+ s_ScriptingCurrentShader = mat.GetShaderPPtr();
+ s_ScriptingCurrentChannels = mat.SetPass(pass);
+ return s_ScriptingCurrentChannels != NULL;
+ }
+
+ AUTO_PROP int renderQueue GetActualRenderQueue SetCustomRenderQueue
+
+ OBSOLETE warning Use the Material constructor instead.
+ CSRAW static public Material Create (string scriptContents)
+ {
+ return new Material (scriptContents);
+ }
+
+ CUSTOM private static void Internal_CreateWithString ([Writable]Material mono, string contents)
+ {
+ Material *mat = Material::CreateMaterial (contents.AsUTF8().c_str(), 0, true);
+ Scripting::ConnectScriptingWrapperToObject (mono.GetScriptingObject(), mat);
+ mat->ApplyMaterialPropertyDrawers();
+ }
+
+ CUSTOM private static void Internal_CreateWithShader ([Writable]Material mono, Shader shader)
+ {
+ Material *mat = Material::CreateMaterial (*shader, 0, true);
+ Scripting::ConnectScriptingWrapperToObject (mono.GetScriptingObject(), mat);
+ mat->ApplyMaterialPropertyDrawers();
+ }
+
+ CUSTOM private static void Internal_CreateWithMaterial ([Writable]Material mono, Material source)
+ {
+ Material *mat = Material::CreateMaterial (*source, 0, true);
+ Scripting::ConnectScriptingWrapperToObject (mono.GetScriptingObject(), mat);
+ mat->ApplyMaterialPropertyDrawers();
+ }
+
+ CUSTOM void CopyPropertiesFromMaterial (Material mat) {
+ if (mat != NULL)
+ self->CopyPropertiesFromMaterial(*mat);
+ else
+ ErrorString ("Trying to copy properties from null material.");
+ }
+
+ CUSTOM void EnableKeyword (string keyword) {
+ self->EnableKeyword (keyword);
+ }
+ CUSTOM void DisableKeyword (string keyword) {
+ self->DisableKeyword (keyword);
+ }
+
+ CONDITIONAL ENABLE_MONO || UNITY_WINRT
+ CUSTOM_PROP String[] shaderKeywords {
+ const size_t count = self->GetShaderKeywords ().size ();
+
+ ScriptingArrayPtr array = CreateScriptingArray<ScriptingStringPtr> (GetScriptingManager().GetCommonClasses().string, count);
+ for (int i=0;i<count;i++)
+ {
+ Scripting::SetScriptingArrayElement<ScriptingStringPtr>(array,i,scripting_string_new(self->GetShaderKeywords ()[i]));
+ }
+ return array;
+ }
+ {
+ Material::ShaderKeywordsT names;
+ for (int i=0;i<GetScriptingArraySize (value);i++)
+ names.push_back (scripting_cpp_string_for (Scripting::GetScriptingArrayElementNoRef<ScriptingStringPtr> (value, i)));
+ self->SetShaderKeywords (names);
+ }
+
+END
+
+
+
+CSRAW
+}