private void readTechniqueStatement(Statement statement) throws IOException { String[] split = statement.getLine().split("[ \\{]"); if (split[0].equals("VertexShader") || split[0].equals("FragmentShader") || split[0].equals("GeometryShader") || split[0].equals("TessellationControlShader") || split[0].equals("TessellationEvaluationShader")) { readShaderStatement(statement.getLine()); } else if (split[0].equals("LightMode")) { readLightMode(statement.getLine()); } else if (split[0].equals("LightSpace")) { readLightSpace(statement.getLine()); } else if (split[0].equals("ShadowMode")) { readShadowMode(statement.getLine()); } else if (split[0].equals("WorldParameters")) { readWorldParams(statement.getContents()); } else if (split[0].equals("RenderState")) { readRenderState(statement.getContents()); } else if (split[0].equals("ForcedRenderState")) { readForcedRenderState(statement.getContents()); } else if (split[0].equals("Defines")) { readDefines(statement.getContents()); } else if (split[0].equals("ShaderNodesDefinitions")) { initNodesLoader(); if (isUseNodes) { nodesLoaderDelegate.readNodesDefinitions(statement.getContents()); } } else if (split[0].equals("VertexShaderNodes")) { initNodesLoader(); if (isUseNodes) { nodesLoaderDelegate.readVertexShaderNodes(statement.getContents()); } } else if (split[0].equals("FragmentShaderNodes")) { initNodesLoader(); if (isUseNodes) { nodesLoaderDelegate.readFragmentShaderNodes(statement.getContents()); } } else if (split[0].equals("NoRender")) { technique.setNoRender(true); } else { throw new MatParseException(null, split[0], statement); } }