240{
241 logs.clear();
242 START_PROFILER();
243 sharedMemoryManager->Clear();
244 SNENode *outputNode =
static_cast<SNENode *
>(shaderNodeEditor->outputNode);
245 outputNode->dataBlobOffset = sharedMemoryManager->AddItem();
246
247 for(auto &it : shaderNodeEditor->nodes)
248 {
250 node->dataBlobOffset = sharedMemoryManager->AddItem();
251 }
252
253 outputNode->sharedData = sharedMemoryManager->At(outputNode->dataBlobOffset);
254 outputNode->UpdateShaders();
255
256 for(auto &it : shaderNodeEditor->nodes)
257 {
259 node->sharedData = sharedMemoryManager->At(node->dataBlobOffset);
260 node->UpdateShaders();
261 }
262
263 shaderTextureManager->UpdateShaders();
264 PrepVertShader();
265 vertexSource = vsh->GenerateGLSL();
266 PrepGeomShader();
267 geometrySource = gsh->GenerateGLSL();
268 PrepFragShader();
269 fragmentSource = fsh->GenerateGLSL();
270
271 if(optimizeGLSL)
272 {
273
274
275
276
277
278
279
280
281
282
283
284
285 }
286
287 appState->shaders.terrain =
new Shader(vertexSource, fragmentSource, geometrySource);
288 double time = 0.0f;
289 END_PROFILER(time);
290 logs.push_back("Generated & Compiled Shaders in " + std::to_string(time) + "ms");
291}