[shaderz] r19 committed - Submitting some work-in-progress stuff...

0 views
Skip to first unread message

sha...@googlecode.com

unread,
Mar 11, 2010, 5:28:58 PM3/11/10
to shade...@googlegroups.com
Revision: 19
Author: vijay.michaeljoseph
Date: Thu Mar 11 14:28:24 2010
Log: Submitting some work-in-progress stuff

* Added a generic container widget. This widget is similar to the material
container, and will eventually replace it. Created this container so that
it can be re-used instead of writing container code every time we need one.

* Defined base classes for Shaderz. The idea behind this is to de-couple as
much as possible the tool code with the toolkit. Also allows us to add
certain functionality to base classes which will be automatically be
available to our subclasses. Currently not more than typedefs.

Shaders and parameter info
* Added shProgram class for representing a generic shader program
* Added shProgramCG for CG shaders


Misc:
* Added/modified some test code, esp with the material editor cpp file

http://code.google.com/p/shaderz/source/detail?r=19

Added:
/trunk/data/fonts
/trunk/data/fonts/Arial.ttf
/trunk/data/osgnvcg1.cg
/trunk/include/qtwidgets/shcontainerwidget.h
/trunk/include/shdefs.h
/trunk/include/shshaderprogram.h
/trunk/src/qtwidgets/shcontainerwidget.cpp
/trunk/src/shshaderprogram.cpp
Modified:
/trunk/Makefile
/trunk/include/shmaterialcontainer.h
/trunk/include/shmaterialeditordialog.h
/trunk/include/shmaterialinstance.h
/trunk/shaderz.pro
/trunk/src/shmaterialcontainer.cpp
/trunk/src/shmaterialeditordialog.cpp
/trunk/src/shmaterialinstance.cpp
/trunk/ui/shmaterialeditordialog.ui

=======================================
--- /dev/null
+++ /trunk/data/fonts/Arial.ttf Thu Mar 11 14:28:24 2010
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/data/osgnvcg1.cg Thu Mar 11 14:28:24 2010
@@ -0,0 +1,63 @@
+// This source file has been taken from the nVIDIA's Cg SDK
+
+
+// Define inputs from application.
+struct appin
+{
+ float4 Position : POSITION;
+ float4 Normal : NORMAL;
+};
+
+// Define outputs from vertex shader.
+struct vertout
+{
+ float4 HPosition : POSITION;
+ float4 Color : COLOR;
+};
+
+ float3 testFloat3 : COLOR;
+ bool testBool;
+ float testFloat;
+vertout main(appin IN,
+ uniform float4x4 ModelViewProj,
+ uniform float4x4 ModelViewIT,
+ uniform float4 LightVec)
+{
+ vertout OUT;
+
+ // Transform vertex position into homogenous clip-space.
+ OUT.HPosition = mul(ModelViewProj, IN.Position);
+
+ // Transform normal from model-space to view-space.
+ float3 normalVec = normalize(mul(ModelViewIT, IN.Normal).xyz);
+
+ // Store normalized light vector.
+ float3 lightVec = normalize(LightVec.xyz);
+
+ // Calculate half angle vector.
+ float3 eyeVec = float3(0.0, 0.0, 1.0);
+ float3 halfVec = normalize(lightVec + eyeVec);
+
+ // Calculate diffuse component.
+ float diffuse = dot(normalVec, lightVec);
+
+ // Calculate specular component.
+ float specular = dot(normalVec, halfVec);
+
+ // Use the lit function to compute lighting vector from
+ // diffuse and specular values.
+ float4 lighting = lit(diffuse, specular, 32);
+
+ // Blue diffuse material
+ float3 diffuseMaterial = float3(0.0, 0.0, 1.0);
+
+ // White specular material
+ float3 specularMaterial = float3(1.0, 1.0, 1.0);
+
+ // Combine diffuse and specular contributions and
+ // output final vertex color.
+ OUT.Color.rgb = lighting.y * diffuseMaterial + lighting.z *
specularMaterial;
+ OUT.Color.a = 1.0;
+
+ return OUT;
+}
=======================================
--- /dev/null
+++ /trunk/include/qtwidgets/shcontainerwidget.h Thu Mar 11 14:28:24 2010
@@ -0,0 +1,31 @@
+#ifndef SHCONTAINERWIDGET_H
+#define SHCONTAINERWIDGET_H
+
+#include "shdefs.h"
+
+/**
+ * Class to manage containers with scroll bars. Addition of children will
automatically resize the
+ * internal container and provide scrollbars as nexessary.
+ */
+class shContainerWidget : public Shaderz::shScrollAreaWidget
+{
+ Q_OBJECT
+
+public:
+ shContainerWidget(Shaderz::shWidget* pParent,
+ const char * pName = 0,
+ Qt::WindowFlags f = 0 );
+
+ ~shContainerWidget();
+ Shaderz::shWidget* getContainer(void){ return &m_mainContainer; }
+ void addChildWidget(Shaderz::shWidget* pNewChild);
+
+protected:
+ Shaderz::shWidget m_mainContainer;
+ std::vector<Shaderz::shWidget*> m_childWidgets;
+
+private:
+ typedef Shaderz::shScrollAreaWidget ParentClass;
+};
+
+#endif // SHCONTAINERWIDGET_H
=======================================
--- /dev/null
+++ /trunk/include/shdefs.h Thu Mar 11 14:28:24 2010
@@ -0,0 +1,15 @@
+#ifndef SHWIDGET_H
+#define SHWIDGET_H
+
+#include <QtGui/QWidget>
+#include <QtGui/QScrollArea>
+#include <QtGui/QResizeEvent>
+
+namespace Shaderz
+{
+ typedef QRect shRect;
+ typedef QWidget shWidget;
+ typedef QScrollArea shScrollAreaWidget;
+ typedef QResizeEvent shResizeEvent;
+}
+#endif // SHWIDGET_H
=======================================
--- /dev/null
+++ /trunk/include/shshaderprogram.h Thu Mar 11 14:28:24 2010
@@ -0,0 +1,51 @@
+#ifndef SHSHADERPROGRAM_H
+#define SHSHADERPROGRAM_H
+
+#include <osgNVCg/Program>
+
+/**
+ * Base class for encapsulating the functionality to load a shader
program, and get information on its parameters.
+ * To use this class, simply create an object of appropriate class, call
setFileName and apply it to the stateset of the osgnode.
+ *
+ * Technical Note:
+ * The parent class doesn't expose much information on program
handles etc. Hence this class will create a local
+ * handle for the shader and extract information from it. This might
cause a double compilation of the shader.
+ */
+class shShaderProgram : public osgNVCg::Program
+{
+public:
+ shShaderProgram();
+ shShaderProgram(const shShaderProgram& rhs, const osg::CopyOp op =
osg::CopyOp::SHALLOW_COPY );
+ virtual ~shShaderProgram() {}
+
+ META_StateAttribute(shaderz, shShaderProgram, OSGNVCG_PROGRAM);
+
+ virtual void setFileName( std::string sFileName );
+ virtual bool parseShader(std::string sShaderFile);
+
+private:
+ typedef osgNVCg::Program ParentClass;
+};
+
+/**
+ * The CG extension of the shader program. This class deals with CG
shaders.
+ */
+class shShaderProgramCG : public shShaderProgram
+{
+ public:
+ shShaderProgramCG();
+ shShaderProgramCG(std::string sShaderFile);
+ shShaderProgramCG(const shShaderProgramCG& rhs, const osg::CopyOp
op = osg::CopyOp::SHALLOW_COPY );
+ virtual ~shShaderProgramCG(){}
+
+ META_StateAttribute(shaderz, shShaderProgramCG, OSGNVCG_PROGRAM);
+
+ virtual bool parseShader(std::string sShaderFile);
+ virtual void dumpParameterInfo(CGparameter, int) const;
+
+ private:
+ CGprogram m_ShaderHandle;
+ typedef shShaderProgram ParentClass;
+};
+
+#endif // SHSHADERPROGRAM_H
=======================================
--- /dev/null
+++ /trunk/src/qtwidgets/shcontainerwidget.cpp Thu Mar 11 14:28:24 2010
@@ -0,0 +1,53 @@
+#include "qtwidgets/shcontainerwidget.h"
+
+using namespace Shaderz;
+
+shContainerWidget::shContainerWidget(shWidget* pParent,
+ const char * pName,
+ Qt::WindowFlags f)
+ : ParentClass(pParent)
+{
+ // set the main container widget
+ setWidget(&m_mainContainer);
+
+ // make the container a little smaller than the actual widget
+ shRect containerGeometry = geometry();
+ containerGeometry.setRight(containerGeometry.right() - 5);
+ containerGeometry.setBottom(containerGeometry.bottom() - 5);
+ m_mainContainer.setGeometry(containerGeometry);
+}
+
+shContainerWidget::~shContainerWidget()
+{
+}
+
+/**
+ * Adds a new child to the container widget and resizes internal
container accordingly.
+ * Scroll bars will appear if necessary.
+ */
+void shContainerWidget::addChildWidget( shWidget* pNewChild )
+{
+ m_childWidgets.push_back(pNewChild);
+
+ shRect childGeo = pNewChild->geometry();
+ shRect containerGeometry = geometry();
+
+ if( childGeo.left() < containerGeometry.left() )
+ {
+ containerGeometry.setLeft(childGeo.left());
+ }
+ if( childGeo.top() < containerGeometry.top() )
+ {
+ containerGeometry.setTop(childGeo.top());
+ }
+ if( childGeo.right() > containerGeometry.right() )
+ {
+ containerGeometry.setRight(childGeo.right());
+ }
+ if( childGeo.bottom() > containerGeometry.bottom() )
+ {
+ containerGeometry.setBottom(childGeo.bottom());
+ }
+
+ m_mainContainer.setGeometry(containerGeometry);
+}
=======================================
--- /dev/null
+++ /trunk/src/shshaderprogram.cpp Thu Mar 11 14:28:24 2010
@@ -0,0 +1,84 @@
+#include "shshaderprogram.h"
+#include "shlogger.h"
+
+shShaderProgram::shShaderProgram()
+ : osgNVCg::Program(new osgNVCg::Context, osgNVCg::Program::BEST_VP)
+{
+}
+
+shShaderProgram::shShaderProgram(const shShaderProgram& rhs, const
osg::CopyOp op )
+ : ParentClass(rhs, op)
+{
+}
+
+bool shShaderProgram::parseShader(std::string sShaderFile)
+{
+ // nothing to do in base class
+ return false;
+}
+
+void shShaderProgram::setFileName(std::string sShaderFileName)
+{
+ parseShader(sShaderFileName);
+ ParentClass::setFileName(sShaderFileName);
+}
+
+//////////
+// shShaderProgramCG
+//////////
+shShaderProgramCG::shShaderProgramCG()
+ : ParentClass()
+{
+}
+
+shShaderProgramCG::shShaderProgramCG(std::string sShaderFile)
+ : ParentClass()
+{
+ ParentClass::setFileName(sShaderFile);
+ parseShader(sShaderFile);
+}
+
+shShaderProgramCG::shShaderProgramCG(const shShaderProgramCG& rhs, const
osg::CopyOp op )
+ : ParentClass(rhs, op)
+{
+ m_ShaderHandle = rhs.m_ShaderHandle;
+}
+
+bool shShaderProgramCG::parseShader(std::string sShaderFile)
+{
+ if( !cgIsProgram(m_ShaderHandle) )
+ {
+ LOG<<"program not compiled.\n";
+ return false;
+ }
+
+ CGenum query[] = { CG_GLOBAL, CG_PROGRAM };
+ for( unsigned int i=0; i<sizeof(query)/sizeof(query[0]); ++i )
+ {
+ LOG<<"--------------------\n";
+ CGparameter pParam = cgGetFirstParameter( m_ShaderHandle, query[i]
);
+ dumpParameterInfo( pParam, 0 );
+ }
+
+ return true;
+}
+
+void shShaderProgramCG::dumpParameterInfo( CGparameter pParam, int
indentLevel ) const
+{
+ while(pParam)
+ {
+ for( int k=0; k<indentLevel; ++k) LOG<<" ";
+ LOG<<"param: "<<cgGetParameterName(pParam)<<" ";
+ LOG<<cgGetTypeString(cgGetParameterNamedType(pParam))<<" ";
+ LOG<<cgGetParameterClass(pParam)<<" ";
+ LOG<<cgGetParameterSemantic(pParam)<<" * ";
+ LOG<<"\n";
+
+ if( cgGetParameterClass(pParam) == CG_PARAMETERCLASS_STRUCT )
+ {
+ CGparameter structParam = cgGetFirstStructParameter(pParam);
+ dumpParameterInfo(structParam, indentLevel+1);
+ }
+ pParam = cgGetNextParameter( pParam );
+ }
+}
=======================================
--- /trunk/Makefile Fri Jan 15 18:17:06 2010
+++ /trunk/Makefile Thu Mar 11 14:28:24 2010
@@ -1,6 +1,6 @@

#############################################################################
# Makefile for building: shaderz.app/Contents/MacOS/shaderz
-# Generated by qmake (2.01a) (Qt 4.5.3) on: Sat Jan 16 09:39:59 2010
+# Generated by qmake (2.01a) (Qt 4.5.3) on: Fri Mar 12 06:10:12 2010
# Project: shaderz.pro
# Template: app
# Command: /usr/bin/qmake -spec /usr/local/Qt4.5/mkspecs/macx-g++ -macx -o
Makefile shaderz.pro
@@ -16,7 +16,7 @@
INCPATH = -I/usr/local/Qt4.5/mkspecs/macx-g++ -I.
-I/Library/Frameworks/QtCore.framework/Versions/4/Headers
-I/usr/include/QtCore
-I/Library/Frameworks/QtGui.framework/Versions/4/Headers
-I/usr/include/QtGui
-I/Library/Frameworks/QtOpenGL.framework/Versions/4/Headers
-I/usr/include/QtOpenGL -I/usr/include -I../sdks/include -Iinclude
-I/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers
-I/System/Library/Frameworks/AGL.framework/Headers -I. -I.
-F/Library/Frameworks
LINK = g++
LFLAGS = -headerpad_max_install_names -arch i386
-LIBS = $(SUBLIBS) -F/Library/Frameworks
-L/Library/Frameworks ../sdks/lib/libOpenThreads.2.4.0.dylib ../sdks/lib/libosg.2.8.2.dylib ../sdks/lib/libosgDB.2.8.2.dylib ../sdks/lib/libosgUtil.2.8.2.dylib ../sdks/lib/libosgGA.2.8.2.dylib ../sdks/lib/libosgViewer.2.8.2.dylib ../sdks/lib/libosgText.2.8.2.dylib
-lpthread /usr/lib/libm.dylib -framework Cg -framework QtOpenGL -framework
QtGui -framework Carbon -framework AppKit -framework QtCore -lz -lm
-framework ApplicationServices -framework OpenGL -framework AGL
+LIBS = $(SUBLIBS) -F/Library/Frameworks
-L/Library/Frameworks ../sdks/lib/libOpenThreads.2.4.0.dylib ../sdks/lib/libosg.2.8.2.dylib ../sdks/lib/libosgDB.2.8.2.dylib ../sdks/lib/libosgUtil.2.8.2.dylib ../sdks/lib/libosgGA.2.8.2.dylib ../sdks/lib/libosgViewer.2.8.2.dylib ../sdks/lib/libosgText.2.8.2.dylib ../sdks/lib/libosgNVCg.dylib ../sdks/lib/libosgNV.dylib ../sdks/lib/libosgNVExt.dylib
-lpthread /usr/lib/libm.dylib -framework Cg -framework QtOpenGL -framework
QtGui -framework Carbon -framework AppKit -framework QtCore -lz -lm
-framework ApplicationServices -framework OpenGL -framework AGL
AR = ar cq
RANLIB = ranlib -s
QMAKE = /usr/bin/qmake
@@ -51,9 +51,13 @@
src/shmaterialcontainer.cpp \
src/shhud.cpp \
src/qtwidgets/shaderz_qtviewwidget.cpp \
- src/shmaterialeditordialog.cpp moc_shaderzmain.cpp \
+ src/shmaterialeditordialog.cpp \
+ src/shshaderprogram.cpp \
+ src/shshaderinfo.cpp \
+ src/qtwidgets/shcontainerwidget.cpp moc_shaderzmain.cpp \
moc_shmaterialcontainer.cpp \
- moc_shmaterialeditordialog.cpp
+ moc_shmaterialeditordialog.cpp \
+ moc_shcontainerwidget.cpp
OBJECTS = obj/main.o \
obj/shaderzmain.o \
obj/osgadapterwidget.o \
@@ -63,9 +67,13 @@
obj/shhud.o \
obj/shaderz_qtviewwidget.o \
obj/shmaterialeditordialog.o \
+ obj/shshaderprogram.o \
+ obj/shshaderinfo.o \
+ obj/shcontainerwidget.o \
obj/moc_shaderzmain.o \
obj/moc_shmaterialcontainer.o \
- obj/moc_shmaterialeditordialog.o
+ obj/moc_shmaterialeditordialog.o \
+ obj/moc_shcontainerwidget.o
DIST = /usr/local/Qt4.5/mkspecs/common/unix.conf \
/usr/local/Qt4.5/mkspecs/common/mac.conf \
/usr/local/Qt4.5/mkspecs/common/mac-g++.conf \
@@ -214,7 +222,7 @@
@sed -e "s,@ICON@,,g" -e "s,@EXECUTABLE@,shaderz,g"
-e "s,@TYPEINFO@,????,g" /usr/local/Qt4.5/mkspecs/macx-g++/Info.plist.app
>shaderz.app/Contents/Info.plist
dist:
@$(CHK_DIR_EXISTS) obj/shaderz1.0.0 || $(MKDIR) obj/shaderz1.0.0
- $(COPY_FILE) --parents $(SOURCES) $(DIST) obj/shaderz1.0.0/ &&
$(COPY_FILE) --parents include/shaderzmain.h
include/qtwidgets/osgadapterwidget.h include/shlogger.h
include/shmaterialinstance.h include/shmaterialcontainer.h include/shhud.h
include/qtwidgets/shaderz_qtviewwidget.h include/shmaterialeditordialog.h
obj/shaderz1.0.0/ && $(COPY_FILE) --parents src/main.cpp
src/shaderzmain.cpp src/qtwidgets/osgadapterwidget.cpp src/shlogger.cpp
src/shmaterialinstance.cpp src/shmaterialcontainer.cpp src/shhud.cpp
src/qtwidgets/shaderz_qtviewwidget.cpp src/shmaterialeditordialog.cpp
obj/shaderz1.0.0/ && $(COPY_FILE) --parents ui/shaderzmain.ui
ui/shmaterialeditordialog.ui obj/shaderz1.0.0/ && (cd `dirname
obj/shaderz1.0.0` && $(TAR) shaderz1.0.0.tar shaderz1.0.0 && $(COMPRESS)
shaderz1.0.0.tar) && $(MOVE) `dirname
obj/shaderz1.0.0`/shaderz1.0.0.tar.gz . && $(DEL_FILE) -r obj/shaderz1.0.0
+ $(COPY_FILE) --parents $(SOURCES) $(DIST) obj/shaderz1.0.0/ &&
$(COPY_FILE) --parents include/shaderzmain.h
include/qtwidgets/osgadapterwidget.h include/shlogger.h
include/shmaterialinstance.h include/shmaterialcontainer.h include/shhud.h
include/qtwidgets/shaderz_qtviewwidget.h include/shmaterialeditordialog.h
include/shshaderprogram.h include/shshaderinfo.h
include/qtwidgets/shcontainerwidget.h include/shdefs.h obj/shaderz1.0.0/ &&
$(COPY_FILE) --parents src/main.cpp src/shaderzmain.cpp
src/qtwidgets/osgadapterwidget.cpp src/shlogger.cpp
src/shmaterialinstance.cpp src/shmaterialcontainer.cpp src/shhud.cpp
src/qtwidgets/shaderz_qtviewwidget.cpp src/shmaterialeditordialog.cpp
src/shshaderprogram.cpp src/shshaderinfo.cpp
src/qtwidgets/shcontainerwidget.cpp obj/shaderz1.0.0/ && $(COPY_FILE)
--parents ui/shaderzmain.ui ui/shmaterialeditordialog.ui obj/shaderz1.0.0/
&& (cd `dirname obj/shaderz1.0.0` && $(TAR) shaderz1.0.0.tar shaderz1.0.0
&& $(COMPRESS) shaderz1.0.0.tar) && $(MOVE) `dirname
obj/shaderz1.0.0`/shaderz1.0.0.tar.gz . && $(DEL_FILE) -r obj/shaderz1.0.0


clean:compiler_clean
@@ -235,9 +243,9 @@

compiler_objective_c_make_all:
compiler_objective_c_clean:
-compiler_moc_header_make_all: moc_shaderzmain.cpp
moc_shmaterialcontainer.cpp moc_shmaterialeditordialog.cpp
+compiler_moc_header_make_all: moc_shaderzmain.cpp
moc_shmaterialcontainer.cpp moc_shmaterialeditordialog.cpp
moc_shcontainerwidget.cpp
compiler_moc_header_clean:
- -$(DEL_FILE) moc_shaderzmain.cpp moc_shmaterialcontainer.cpp
moc_shmaterialeditordialog.cpp
+ -$(DEL_FILE) moc_shaderzmain.cpp moc_shmaterialcontainer.cpp
moc_shmaterialeditordialog.cpp moc_shcontainerwidget.cpp
moc_shaderzmain.cpp: include/shaderzmain.h
/Developer/Tools/Qt/moc $(DEFINES) $(INCPATH) -D__APPLE__ -D__GNUC__
include/shaderzmain.h -o moc_shaderzmain.cpp

@@ -247,6 +255,9 @@
moc_shmaterialeditordialog.cpp: include/shmaterialeditordialog.h
/Developer/Tools/Qt/moc $(DEFINES) $(INCPATH) -D__APPLE__ -D__GNUC__
include/shmaterialeditordialog.h -o moc_shmaterialeditordialog.cpp

+moc_shcontainerwidget.cpp: include/qtwidgets/shcontainerwidget.h
+ /Developer/Tools/Qt/moc $(DEFINES) $(INCPATH) -D__APPLE__ -D__GNUC__
include/qtwidgets/shcontainerwidget.h -o moc_shcontainerwidget.cpp
+
compiler_rcc_make_all:
compiler_rcc_clean:
compiler_image_collection_make_all: qmake_image_collection.cpp
@@ -262,7 +273,8 @@
ui_shaderzmain.h: ui/shaderzmain.ui
/Developer/Tools/Qt/uic ui/shaderzmain.ui -o ui_shaderzmain.h

-ui_shmaterialeditordialog.h: ui/shmaterialeditordialog.ui
+ui_shmaterialeditordialog.h: ui/shmaterialeditordialog.ui \
+ include/qtwidgets/shcontainerwidget.h
/Developer/Tools/Qt/uic ui/shmaterialeditordialog.ui -o
ui_shmaterialeditordialog.h

compiler_yacc_decl_make_all:
@@ -299,10 +311,19 @@
obj/shaderz_qtviewwidget.o: src/qtwidgets/shaderz_qtviewwidget.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/shaderz_qtviewwidget.o
src/qtwidgets/shaderz_qtviewwidget.cpp

-obj/shmaterialeditordialog.o: src/shmaterialeditordialog.cpp
include/shmaterialeditordialog.h \
- ui_shmaterialeditordialog.h
+obj/shmaterialeditordialog.o: src/shmaterialeditordialog.cpp
ui_shmaterialeditordialog.h \
+ include/qtwidgets/shcontainerwidget.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/shmaterialeditordialog.o
src/shmaterialeditordialog.cpp

+obj/shshaderprogram.o: src/shshaderprogram.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/shshaderprogram.o
src/shshaderprogram.cpp
+
+obj/shshaderinfo.o: src/shshaderinfo.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/shshaderinfo.o
src/shshaderinfo.cpp
+
+obj/shcontainerwidget.o: src/qtwidgets/shcontainerwidget.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/shcontainerwidget.o
src/qtwidgets/shcontainerwidget.cpp
+
obj/moc_shaderzmain.o: moc_shaderzmain.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_shaderzmain.o
moc_shaderzmain.cpp

@@ -312,6 +333,9 @@
obj/moc_shmaterialeditordialog.o: moc_shmaterialeditordialog.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_shmaterialeditordialog.o
moc_shmaterialeditordialog.cpp

+obj/moc_shcontainerwidget.o: moc_shcontainerwidget.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_shcontainerwidget.o
moc_shcontainerwidget.cpp
+
####### Install

install: FORCE
=======================================
--- /trunk/include/shmaterialcontainer.h Thu Jan 7 15:59:43 2010
+++ /trunk/include/shmaterialcontainer.h Thu Mar 11 14:28:24 2010
@@ -19,6 +19,7 @@
virtual ~shMaterialContainer();
virtual void notifyNewSelection(shMaterialInstance* pNewSelection);
int getPreviewWindowSize(){ return m_iPreviewCellSize; }
+ shMaterialInstance* getMaterial(unsigned int index);

public slots:
void onPreviewWindowResize(int);
=======================================
--- /trunk/include/shmaterialeditordialog.h Fri Jan 15 18:17:06 2010
+++ /trunk/include/shmaterialeditordialog.h Thu Mar 11 14:28:24 2010
@@ -15,6 +15,9 @@

private:
Ui::shMaterialEditorDialog *m_ui;
+
+private slots:
+ void on_parameterTest_clicked();
};

#endif // SHMATERIALEDITORDIALOG_H
=======================================
--- /trunk/include/shmaterialinstance.h Fri Jan 15 18:17:06 2010
+++ /trunk/include/shmaterialinstance.h Thu Mar 11 14:28:24 2010
@@ -2,7 +2,7 @@
#define SHMATERIALINSTANCE_H

#include "qtwidgets/shaderz_qtviewwidget.h"
-#include "shHud.h"
+#include "shShaderProgram.h"

class shMaterialContainer;

@@ -22,6 +22,7 @@
virtual void drawSelectionBox(void);
virtual void setSelected(bool bIsSelected = true);
virtual void loadScene(std::string);
+ virtual void setShader(shShaderProgram* shader);

protected: // events
virtual void mousePressEvent ( QMouseEvent * e );
=======================================
--- /trunk/shaderz.pro Fri Jan 15 18:17:06 2010
+++ /trunk/shaderz.pro Thu Mar 11 14:28:24 2010
@@ -19,6 +19,9 @@
../sdks/lib/libosgGA.2.8.2.dylib \
../sdks/lib/libosgViewer.2.8.2.dylib \
../sdks/lib/libosgText.2.8.2.dylib \
+ ../sdks/lib/libosgNVCg.dylib \
+ ../sdks/lib/libosgNV.dylib \
+ ../sdks/lib/libosgNVExt.dylib \
-framework \
QtCore \
-framework \
@@ -61,7 +64,10 @@
src/shmaterialcontainer.cpp \
src/shhud.cpp \
src/qtwidgets/shaderz_qtviewwidget.cpp \
- src/shmaterialeditordialog.cpp
+ src/shmaterialeditordialog.cpp \
+ src/shshaderprogram.cpp \
+ src/shshaderinfo.cpp \
+ src/qtwidgets/shcontainerwidget.cpp
HEADERS += include/shaderzmain.h \
include/qtwidgets/osgadapterwidget.h \
include/shlogger.h \
@@ -69,6 +75,10 @@
include/shmaterialcontainer.h \
include/shhud.h \
include/qtwidgets/shaderz_qtviewwidget.h \
- include/shmaterialeditordialog.h
+ include/shmaterialeditordialog.h \
+ include/shshaderprogram.h \
+ include/shshaderinfo.h \
+ include/qtwidgets/shcontainerwidget.h \
+ include/shdefs.h
FORMS += ui/shaderzmain.ui \
ui/shmaterialeditordialog.ui
=======================================
--- /trunk/src/shmaterialcontainer.cpp Thu Jan 7 15:59:43 2010
+++ /trunk/src/shmaterialcontainer.cpp Thu Mar 11 14:28:24 2010
@@ -158,3 +158,8 @@
m_iPreviewCellSize = newSize;
updateLayout(m_pMaterialInstanceContainer->size());
}
+
+shMaterialInstance* shMaterialContainer::getMaterial(unsigned int index)
+{
+ return ( index < m_PreviewCells.size() ) ? m_PreviewCells[index] : 0;
+}
=======================================
--- /trunk/src/shmaterialeditordialog.cpp Fri Jan 15 18:17:06 2010
+++ /trunk/src/shmaterialeditordialog.cpp Thu Mar 11 14:28:24 2010
@@ -1,5 +1,12 @@
-#include "include/shmaterialeditordialog.h"
+#include "shmaterialeditordialog.h"
#include "ui_shmaterialeditordialog.h"
+#include "shshaderprogram.h"
+#include "shmaterialinstance.h"
+#include "shshaderinfo.h"
+#include "shlogger.h"
+#include "QFileDialog"
+#include "QtGui/QLineEdit"
+#include "qtwidgets/shcontainerwidget.h"

shMaterialEditorDialog::shMaterialEditorDialog(QWidget *parent) :
QDialog(parent),
@@ -15,3 +22,29 @@
{
delete m_ui;
}
+
+void shMaterialEditorDialog::on_parameterTest_clicked()
+{
+/* shShaderProgram* sh = new shShaderProgramCG("osgnvcg1.cg");
+ sh->addVectorParameter("LightVec")->set(osg::Vec4(0, 0, 1, 0));
+
sh->addStateMatrixParameter("ModelViewProj")->set(osgNV::StateMatrixParameterValue::MODELVIEW_PROJECTION);
+
sh->addStateMatrixParameter("ModelViewIT")->set(osgNV::StateMatrixParameterValue::MODELVIEW,
osgNV::StateMatrixParameterValue::INVERSE_TRANSPOSE);
+
+ shMaterialInstance* pMatInst =
m_ui->materialContainerView->getMaterial(0);
+ pMatInst->setShader(sh);
+
+ // test shader info
+ std::string sFile = QFileDialog::getOpenFileName( this, "Open Shader
file" ).toStdString();
+ Shaderz::shShaderInfo* pShaderInfo = new
Shaderz::shShaderInfoCG(sFile);
+ pShaderInfo->parseShader();
+ m_ui->shaderParametersUI->createParameterUI(pShaderInfo);
+ delete pShaderInfo;
+*/
+ static int i = 0;
+ QLineEdit* pNewLineEdit = new
QLineEdit(m_ui->testContainerWidget->getContainer());
+ QRect geo( 0+i*40, 0+i*40, 40, 30);
+ pNewLineEdit->setGeometry(geo);
+ pNewLineEdit->setVisible(true);
+ m_ui->testContainerWidget->addChildWidget(pNewLineEdit);
+ i++;
+}
=======================================
--- /trunk/src/shmaterialinstance.cpp Fri Jan 15 18:17:06 2010
+++ /trunk/src/shmaterialinstance.cpp Thu Mar 11 14:28:24 2010
@@ -86,3 +86,16 @@
drawSelectionBox();
}
}
+
+void shMaterialInstance::setShader(shShaderProgram* shader)
+{
+ if( !m_pRoot )
+ {
+ LOG<<"Root not set.\n";
+ return;
+ }
+
+ LOG<<"Setting shader...\n";
+ osg::StateSet* ss = m_pRoot->getOrCreateStateSet();
+ ss->setAttributeAndModes(shader);
+}
=======================================
--- /trunk/ui/shmaterialeditordialog.ui Fri Jan 15 18:17:06 2010
+++ /trunk/ui/shmaterialeditordialog.ui Thu Mar 11 14:28:24 2010
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>639</width>
- <height>429</height>
+ <height>518</height>
</rect>
</property>
<property name="windowTitle">
@@ -46,6 +46,29 @@
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="parameterTest">
+ <property name="geometry">
+ <rect>
+ <x>60</x>
+ <y>330</y>
+ <width>221</width>
+ <height>32</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Generate paramInfo</string>
+ </property>
+ </widget>
+ <widget class="shContainerWidget" name="testContainerWidget"
native="true">
+ <property name="geometry">
+ <rect>
+ <x>60</x>
+ <y>400</y>
+ <width>121</width>
+ <height>61</height>
+ </rect>
</property>
</widget>
</widget>
@@ -58,6 +81,12 @@
<slots>
<slot>onPreviewWindowResize(int)</slot>
</slots>
+ </customwidget>
+ <customwidget>
+ <class>shContainerWidget</class>
+ <extends>QWidget</extends>
+ <header>include/qtwidgets/shcontainerwidget.h</header>
+ <container>1</container>
</customwidget>
</customwidgets>
<resources/>
Reply all
Reply to author
Forward
0 new messages