From 9a4e17b7665df1e441fe3d59eae086832f2bd905 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 13 Mar 2009 10:40:00 +0000 Subject: [PATCH] From Bryan Thrall, "The attached ReaderWriterGLSL.cpp conveniently sets the shader type when the filename extension is "vert" or "frag" but still lets this be overridden by the Options (for those crazy people who store their fragment shaders in .vert files :) )." --- src/osgPlugins/glsl/ReaderWriterGLSL.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/osgPlugins/glsl/ReaderWriterGLSL.cpp b/src/osgPlugins/glsl/ReaderWriterGLSL.cpp index 61fcafbaa..45560b95e 100644 --- a/src/osgPlugins/glsl/ReaderWriterGLSL.cpp +++ b/src/osgPlugins/glsl/ReaderWriterGLSL.cpp @@ -62,7 +62,17 @@ class ReaderWriterGLSL : public osgDB::ReaderWriter osgDB::ifstream istream(fileName.c_str(), std::ios::in | std::ios::binary); if(!istream) return ReadResult::FILE_NOT_HANDLED; ReadResult rr = readShader(istream, options); - if(rr.validShader()) rr.getShader()->setFileName(file); + if(rr.validShader()) + { + osg::Shader* shader = rr.getShader(); + shader->setFileName(file); + if (shader->getType() == osg::Shader::UNDEFINED) + { + // set type based on filename extension, where possible + if (ext == "frag") shader->setType(osg::Shader::FRAGMENT); + if (ext == "vert") shader->setType(osg::Shader::VERTEX); + } + } return rr; }