Procházet zdrojové kódy

Saving and loading textures as params with new renderer

Ivan Safrin před 10 roky
rodič
revize
63eed9df32

+ 1 - 3
src/core/PolySceneEntityInstance.cpp

@@ -235,12 +235,10 @@ void SceneEntityInstance::applySceneMesh(ObjectEntry *entry, SceneMesh *sceneMes
                                             int type = materialShader->getExpectedParamType(nameEntry->stringVal);
                                             
                                             // RENDERER_TODO
-                                            /*
-                                            LocalShaderParam *param = sceneMesh->getLocalShaderOptions()->addParam(type, nameEntry->stringVal);
+                                            LocalShaderParam *param = sceneMesh->getShaderPass(0).shaderBinding->addParam(type, nameEntry->stringVal);
                                             if(param) {
                                                 param->setParamValueFromString(type, valueEntry->stringVal);
                                             }
-                                             */
                                         }
                                     }
                                     

+ 5 - 1
src/core/PolyShader.cpp

@@ -545,6 +545,10 @@ void LocalShaderParam::setParamValueFromString(int type, String pvalue) {
 					printf("Material parameter error: Color %s must have 4 values (%d provided)!\n", name.c_str(), (int)values.size());
                 }
             }
-                break;
+            break;
+            case ProgramParam::PARAM_TEXTURE:
+                Texture *texture = Services()->getMaterialManager()->createTextureFromFile(pvalue);
+                setTexture(texture);
+            break;
         }
 }

+ 1 - 6
src/ide/PolycodeEntityEditor.cpp

@@ -2452,13 +2452,8 @@ void PolycodeEntityEditor::saveShaderOptionsToEntry(ObjectEntry *entry, Material
             Shader *shader = material->getShader(s);
             
             ObjectEntry *shaderEntry = entry->addChild("shader");
-            ObjectEntry *texturesEntry = shaderEntry->addChild("textures");
-            
-            // RENDERER_TODO
-            
             if(shader->expectedParams.size() > 0 || shader->expectedParams.size() > 0) {
-                ObjectEntry *paramsEntry = shaderEntry->addChild("params");
-                
+                ObjectEntry *paramsEntry = shaderEntry->addChild("params");                
                 for(int j=0; j < shader->expectedParams.size(); j++) {
                     if(binding->getLocalParamByName(shader->expectedParams[j].name)) {
                         ObjectEntry *paramEntry = paramsEntry->addChild("param");

+ 6 - 0
src/ide/PolycodeMaterialEditor.cpp

@@ -1274,6 +1274,12 @@ String PolycodeMaterialEditor::createStringValue(unsigned int type, void *value)
 			retString = String::NumberToString(vec.x) + " " + String::NumberToString(vec.y) + " " + String::NumberToString(vec.z);
 		}
 		break;
+        case ProgramParam::PARAM_TEXTURE:
+        {
+            Texture *tex = (Texture*) value;
+            retString = tex->getResourcePath();
+        }
+        break;
 	}
 	
 	return retString;