10 #include <export/Export.h>
12 #include <sx/SXMath.h>
13 #include <sx/SXParser.h>
15 #include <boost/timer.hpp>
16 #include <boost/unordered_map.hpp>
18 using namespace boost;
45 EX
const string &getID()
const;
50 virtual bool isLoaded()
const = 0;
55 virtual void load() = 0;
74 virtual void execute(vector<string> &input) = 0;
84 TESSELLATION_EVALUATION,
107 unsigned int newTextureSlot;
114 unsigned int freeTextureSlot;
123 vector<unsigned int> lockedSlotsStack;
131 vector<string> newShaders;
137 vector<string> newTransformFeedbackBuffers;
143 bool newFragmentShade;
154 vector<ShaderType> newShaderTypes;
160 vector<bool> newShaderIsFile;
167 unsigned int program;
172 vector<unsigned int> shaders;
179 vector<string> transformFeedbackBuffers;
196 unordered_map<string,int> uniformLocations;
201 unordered_map<string,int> targetLocations;
206 unordered_map<string,int> attribLocations;
212 vector<string> errorLog;
229 EX
Shader(
const string &
id);
248 EX
bool isLoaded()
const;
254 EX vector<string> getErrorLog()
const;
260 EX
void addShader(
const string &code,
ShaderType type);
266 EX
void addShaderFile(
const string &path,
ShaderType type);
274 EX
void addTransformFeedbackBuffer(
const string &identifier);
287 EX
bool isTessellating()
const;
292 EX
bool isTransformFeedback()
const;
297 EX
bool isFragmentShading()
const;
304 EX
int getProgramID()
const;
309 EX
const vector<string> &getTransformFeedbackBuffers()
const;
316 EX
int getTransformFeedbackLocation(
const string &identifyer);
323 EX
int getUniformLocation(
const string &identifyer);
330 EX
int getTargetLocation(
const string &identifyer);
337 EX
int Shader::getAttribLocation(
const std::string &identifyer);
343 EX
void freeTextureSlots();
350 EX
unsigned int createTextureSlot();
358 EX
void lockTextureSlots();
364 EX
void unlockTextureSlots();
404 EX
void setFaceSize(
unsigned int faceSize);
409 EX
unsigned int getFaceSize()
const;
414 EX
unsigned int getVertexCount()
const;
420 virtual void render(
Shader &shader) = 0;
473 EX
const float *unlockRead();
481 EX
float *unlockWrite();
520 vector<vector<float>> newBuffers;
525 vector<string> newAttributeIDs;
530 map<string,string> newOutputIDs;
535 vector<unsigned int> newAttributeSizes;
543 vector<string> newMeshes;
549 unsigned int newMaxVertexCount;
558 vector<bool> newDiscardStandard;
566 map<string,VertexBuffer *> vbos;
573 map<string,VertexBuffer *> outputVBOs;
584 map<string,UniformFloat **> uniformFloatSets;
585 map<string,UniformVector **> uniformVectorSets;
586 map<string,UniformMatrix **> uniformMatrixSets;
594 unsigned int query_primitives_written;
601 unsigned int query_primitives_generated;
607 unsigned int maxVertexCount;
664 EX
bool isLoaded()
const;
672 EX
void save(
const string &filename);
681 EX
void beginCapture(
Shader &shader);
686 EX
void endCapture(
Shader &shader);
695 EX
unsigned int countCreatedVertices()
const;
705 EX
void setMaxVertexCount(
unsigned int count);
710 EX
unsigned int getMaxVertexCount()
const;
721 EX
void setVertexCount(
unsigned int count);
727 EX
void render(
Shader &shader);
738 EX
void renderInstanced(
Shader &shader, vector<BufferedMesh *> &instanceBuffers);
746 EX
void addBuffer(
const string &identifier,
const string &outputIdentifier, vector<float> &buffer,
unsigned int attributeSize);
753 EX
void addBuffer(
const string &identifier, vector<float> &buffer,
unsigned int attributeSize);
802 EX
void addBuffers(
const string &path);
809 EX
void addBuffers(
const string &path,
bool discardStandardBuffers);
816 EX
void setOutputIdentifier(
const string &identifier,
const string &outputIdentifier);
828 EX map<string,VertexBuffer *> &getBuffers();
845 EX
bool setUniforms(
const vector<Uniform *> &uniforms,
const vector<string> &bufferIDs,
unsigned int location);
854 EX
bool removeUniforms(
unsigned int location);
859 EX
void removeUniforms();
866 EX
void resetUniforms();
875 EX
void loadBuffersToUniforms();
885 EX
void loadBuffersToUniforms(
unsigned int firstLocation,
unsigned int lastLocation);
894 EX
void loadBufferToUniforms(
const string &bufferID);
904 EX
void loadBufferToUniforms(
const string &bufferID,
unsigned int firstLocation,
unsigned int lastLocation);
912 EX
void loadUniformsToBuffers();
921 EX
void loadUniformsToBuffers(
unsigned int firstLocation,
unsigned int lastLocation);
929 EX
void loadUniformsToBuffer(
const string &bufferID);
938 EX
void loadUniformsToBuffer(
const string &bufferID,
unsigned int firstLocation,
unsigned int lastLocation);
943 EX vector<Bone> getSkeleton()
const;
949 EX
Matrix getSkeletonMatrix()
const;
955 EX
void setSkeleton(
const vector<Bone> &bones);
960 EX
void setSkeletonMatrix(
const Matrix &skeletonMatrix);
968 EX
void execute(vector<string> &input);
1008 EX
void setUniformName(
const string &name,
const string &
id);
1015 EX
const string &getUniformName(
const string &
id)
const;
1023 virtual void use(
Shader &shader,
const string &
id) = 0;
1078 EX
bool isLoaded()
const;
1083 EX
void use(
Shader &shader,
const string &
id);
1138 EX
bool isLoaded()
const;
1143 EX
void use(
Shader &shader,
const string &
id);
1183 EX
bool isLoaded()
const;
1188 EX
void use(
Shader &shader,
const string &
id);
1228 EX
bool isLoaded()
const;
1233 EX
void use(
Shader &shader,
const string &
id);
1273 EX
bool isLoaded()
const;
1278 EX
void use(
Shader &shader,
const string &
id);
1318 EX
bool isLoaded()
const;
1323 EX
void use(
Shader &shader,
const string &
id);
1384 vector<unsigned char> newByteBuffer;
1394 vector<float> newFloatBuffer;
1401 unsigned int texture;
1462 EX
bool isLoaded()
const;
1478 EX
void save(
const string &filename);
1487 EX
void use(
Shader &shader,
const string &
id);
1494 EX
unsigned int getTextureID()
const;
1508 EX
void setPath(
const string &path);
1514 EX
void setWidth(
int width);
1520 EX
int getWidth()
const;
1526 EX
void setHeight(
int height);
1532 EX
int getHeight()
const;
1552 EX
void setByteBuffer(
const vector<unsigned char> &buffer);
1560 EX
void setFloatBuffer(
const vector<float> &buffer);
1593 vector<string> newPaths;
1627 vector<unsigned char> newByteBuffer;
1637 vector<float> newFloatBuffer;
1644 unsigned int texture;
1685 EX
Volume(
const string &
id);
1716 EX
bool isLoaded()
const;
1736 EX
void save(
const string &filenamepart);
1745 EX
void use(
Shader &shader,
const string &
id);
1752 EX
unsigned int getTextureID()
const;
1768 EX
void addPath(
const string &path);
1778 EX
void setPaths(
const vector<string> &paths);
1784 EX
void setWidth(
int width);
1790 EX
int getWidth()
const;
1796 EX
void setHeight(
int height);
1802 EX
int getHeight()
const;
1808 EX
void setDepth(
int depth);
1834 EX
void setByteBuffer(
const vector<unsigned char> &buffer);
1842 EX
void setFloatBuffer(
const vector<float> &buffer);
1919 vector<string> newPaths;
1927 vector<BufferedMesh *> newMeshes;
1933 vector<Bone> newBones;
1952 unsigned int skeletonDepth;
1960 map<string, Bone *> boneMap;
1967 map<string,unsigned int> boneTransformsIndices;
1981 map<int,vector<BoneTransform *> > boneTransforms;
1992 map<int,map<string,BoneTransform *> > boneTransformMap;
1999 vector<string> unmatchedBones;
2014 void initBoneTransorms();
2022 void initBoneTransformSet(map<
int,map<string,BoneTransform *> >::iterator setIter);
2052 EX
void addBones(
const string &path);
2064 EX
void setSkeletonMatrix(
const Matrix &transform);
2069 EX
const Matrix &getSkeletonMatrix()
const;
2075 EX
void addRootBone(
Bone &bone);
2081 EX
const Bone &getBone(
const string &
id)
const;
2086 EX vector<const Bone> getRootBones()
const;
2109 EX
bool isLoaded()
const;
2121 EX vector<string> getUnmatchedBones()
const;
2141 EX
void addBoneTransform(
int setID,
const BoneTransform &transform);
2148 EX
BoneTransform &getBoneTransform(
int setID,
const string &boneID);
2154 EX
void removeBoneTransform(
int setID,
const string &boneID);
2159 EX
void removeBoneTransforms(
int setID);
2164 EX
void removeBoneTransforms();
2187 EX
void updateBoneTransforms();
2192 EX
void execute(vector<string> &input);
2231 ONE_MINUS_FRAGMENTCOLOR,
2232 ONE_MINUS_FRAMEBUFFERCOLOR,
2233 ONE_MINUS_FRAGMENTALPHA,
2234 ONE_MINUS_FRAMEBUFFERALPHA
2252 ACCEPT_GREATER_EQUAL,
2292 bool newRenderToDisplay;
2311 unsigned int target;
2316 unsigned int renderbuffer;
2322 bool renderToDisplay;
2327 static unordered_map<int,int> depthTest2GL;
2332 static unordered_map<int,int> blendFactor2GL;
2337 static unordered_map<int,int> initDepthTest2GL();
2342 static unordered_map<int,int> initBlendFactor2GL();
2370 EX
static void clearTarget();
2376 EX
static void clearDepthBuffer();
2382 EX
static void clearColorBuffer();
2389 EX
static void applyDepthTest(
DepthTest test);
2396 EX
static void applyWriteDepthBuffer(
bool write);
2409 EX
static void setViewport(
int x,
int y,
int width,
int height);
2414 EX
void setViewport();
2420 EX
void setViewport(
float xFactor,
float yFactor,
float widthFactor,
float heightFactor);
2440 EX
bool isLoaded()
const;
2449 EX
void beginRender(
Shader &shader, vector<Texture *> &textures,
const string &resourceID);
2458 EX
void beginRender(
Shader &shader, vector<Volume *> &textures,
unsigned int layer,
const string &resourceID);
2464 EX
void endRender();
2472 EX
void setRenderToDisplay(
bool renderToDisplay);
2477 EX
bool isRenderingToDisplay()
const;
2484 EX
void setWidth(
int width);
2490 EX
int getWidth()
const;
2497 EX
void setHeight(
int height);
2503 EX
int getHeight()
const;
2532 unordered_map<string,Uniform *> uniforms;
2539 vector<BufferedMesh *> instanceBuffers;
2545 unordered_map<int,unordered_map<string,Uniform *>> uniformSets;
2579 EX
bool isLoaded()
const;
2584 EX
void setVisible(
bool visible);
2589 EX
bool isVisible()
const;
2594 EX
void setMesh(
Mesh &mesh);
2604 EX
void setShader(
Shader *shader);
2617 EX
void addUniform(
Uniform &uniform);
2623 EX
void removeUniform(
const string &name);
2628 EX
void removeUniforms();
2638 EX
void setInstanceBuffers(
const vector<BufferedMesh *> &instanceBuffers);
2643 EX
void removeInstanceBuffers();
2653 EX unordered_map<string, Uniform *> &getUniformSet(
const int id);
2659 EX
void removeUniformSet(
const int id);
2664 EX
void removeUniformSets();
2678 EX
void render(
Shader *passShader);
2700 unordered_map<string,RenderObject *> renderObjects;
2707 vector<vector<RenderObject *>> tempRenderObjects;
2737 unordered_map<string,Uniform *> uniforms;
2742 bool clearColorbuffer;
2747 bool clearDepthbuffer;
2757 bool writeDepthBuffer;
2770 vector<Texture *> targets;
2777 vector<Volume *> volumeTargets;
2832 EX
static void applyWireframe(
bool wireframe);
2837 EX
Pass(
const string &
id);
2854 EX
bool isLoaded()
const;
2859 EX
void setVisible(
bool visible);
2864 EX
bool isVisible()
const;
2869 EX
void setShader(
Shader *shader);
2888 EX
void removeRenderObject(
const string &
id);
2894 EX
void removeRenderObjects();
2924 EX
void useBackgroundQuad(
bool use);
2931 EX
void addTempRenderObjects(
const vector<RenderObject *> &temp);
2939 EX vector<RenderObject *> &getTempRenderObjects();
2949 EX
void addUniform(
Uniform &uniform);
2958 EX
void removeUniform(
const string &name);
2963 EX
void removeUniforms();
2968 EX
void setWireframe(
bool wireframe);
2973 EX
bool isWireframe()
const;
2978 EX
void setClearColorBuffer(
bool clear);
2983 EX
bool isClearingColorBuffer()
const;
2988 EX
void setClearDepthBuffer(
bool clear);
2993 EX
bool isClearingDepthBuffer()
const;
2998 EX
void setFragmentBlendFactor(
BlendFactor factor);
3030 EX
void setWriteDepthBuffer(
bool write);
3037 EX
bool isWritingDepthBuffer();
3045 EX
void setOutput(
RenderTarget &target, vector<Texture *> targets);
3053 EX
void setOutput(
RenderTarget &target, vector<Volume *> targets);
3067 EX
void setLayerCoordinate(
UniformFloat *layerCoordinate);
3096 EX
void execute(vector<string> &input);
3105 vector<string> input;
3125 vector<EffectCommand> objects;
3142 EX
Effect(
const string &
id);
3159 EX
bool isLoaded()
const;
3164 EX
void setVisible(
bool visible);
3169 EX
bool isVisible()
const;
3176 EX vector<EffectCommand> &getObjects();
3262 EX
bool isLoaded()
const;
3269 EX
void setPath(
const string &path);
3275 EX
unsigned int getBufferID()
const;
3295 static bool initialized;
3300 static ALCdevice *device;
3305 static ALCcontext *context;
3445 EX
static void initAudio();
3451 EX
static void closeAudio();
3458 EX
static bool isInitialized();
3485 EX
bool isLoaded()
const;
3500 EX
void setReferenceRadius(
const UniformFloat *radius);
3510 EX
void setDistanceExponent(
const UniformFloat *exponent);
3530 EX
void setLooping(
bool looping);
3547 EX
void start(
double time);
3573 EX
bool isPlaying();
3579 EX
double getLength()
const;
3585 EX
double getPlaybackPosition()
const;
3594 EX
void lock(
double time);
3690 EX ~AudioListener();
3707 EX
bool isLoaded()
const;
3765 unordered_map<string,AudioObject *> objects;
3772 vector<AudioObject *> pausedObjects;
3779 vector<AudioObject *> unpausedObjects;
3816 EX
void setPause(
bool pause);
3822 EX
bool isPaused()
const;
3840 EX
bool isLoaded()
const;
3858 EX
void removeAudioObject(
const string &
id);
3863 EX
void removeAudioObjects();
unsigned int location
Definition: SXCore.h:450
Definition: SXCore.h:2507
Definition: SXCore.h:1903
Definition: SXCore.h:2682
unsigned int faceSize
Definition: SXCore.h:387
Definition: SXCore.h:2260
unsigned int attributeSize
Definition: SXCore.h:455
Definition: SXCore.h:1568
Definition: SXCore.h:3109
unsigned int bufferID
Definition: SXCore.h:443
unsigned int newFaceSize
Definition: SXCore.h:379
DepthTest
Definition: SXCore.h:2246
Definition: SXCore.h:3627
Definition: SXCore.h:1336
Definition: SXParser.h:690
string outputID
Definition: SXCore.h:438
Definition: SXCore.h:3195
string ID
Definition: SXCore.h:432
Definition: SXCore.h:3750
string id
Definition: SXCore.h:31
PixelFormat
Definition: SXCore.h:1330
BlendFactor
Definition: SXCore.h:2224
unsigned int vertexCount
Definition: SXCore.h:392
ShaderType
Definition: SXCore.h:81
Definition: SXCore.h:3104
Definition: SXCore.h:3289
Definition: Exception.h:13