Browse Source

Add possibility to set buffer type Variants as a shader parameter (will be interpreted as an array of floats.)

Lasse Öörni 10 years ago
parent
commit
21f896fa49

+ 8 - 0
Source/Urho3D/Graphics/Direct3D11/D3D11Graphics.cpp

@@ -1263,6 +1263,14 @@ void Graphics::SetShaderParameter(StringHash param, const Variant& value)
         SetShaderParameter(param, value.GetMatrix4());
         break;
 
+    case VAR_BUFFER:
+        {
+            const PODVector<unsigned char>& buffer = value.GetBuffer();
+            if (buffer.Size() >= sizeof(float))
+                SetShaderParameter(param, reinterpret_cast<const float*>(&buffer[0]), buffer.Size() / sizeof(float));
+        }
+        break;
+
     default:
         // Unsupported parameter type, do nothing
         break;

+ 8 - 0
Source/Urho3D/Graphics/Direct3D9/D3D9Graphics.cpp

@@ -1314,6 +1314,14 @@ void Graphics::SetShaderParameter(StringHash param, const Variant& value)
         SetShaderParameter(param, value.GetMatrix4());
         break;
 
+    case VAR_BUFFER:
+        {
+            const PODVector<unsigned char>& buffer = value.GetBuffer();
+            if (buffer.Size() >= sizeof(float))
+                SetShaderParameter(param, reinterpret_cast<const float*>(&buffer[0]), buffer.Size() / sizeof(float));
+        }
+        break;
+
     default:
         // Unsupported parameter type, do nothing
         break;

+ 8 - 0
Source/Urho3D/Graphics/OpenGL/OGLGraphics.cpp

@@ -1384,6 +1384,14 @@ void Graphics::SetShaderParameter(StringHash param, const Variant& value)
         SetShaderParameter(param, value.GetMatrix4());
         break;
 
+    case VAR_BUFFER:
+        {
+            const PODVector<unsigned char>& buffer = value.GetBuffer();
+            if (buffer.Size() >= sizeof(float))
+                SetShaderParameter(param, reinterpret_cast<const float*>(&buffer[0]), buffer.Size() / sizeof(float));
+        }
+        break;
+
     default:
         // Unsupported parameter type, do nothing
         break;