33#if defined(TARGET_OPENGLES)
50 glm::vec3
up = {0,1,0};
54#if defined(TARGET_OPENGLES)
120 const std::shared_ptr<ofShadow::Data>&
getData()
const {
return data; }
163 std::vector<glm::vec3>
getFrustumCorners(
const glm::vec3& aup,
const glm::vec3& aright,
const glm::vec3& afwd );
177 void _drawFrustum(
const glm::vec3& aup,
const glm::vec3& aright,
const glm::vec3& afwd );
186 std::shared_ptr<ofShadow::Data>
data;
223 mutable std::map<ofGLProgrammableRenderer*,std::shared_ptr<Shaders>> shaders;
226std::vector<std::weak_ptr<ofShadow::Data> > &
ofShadowsData();
Definition ofGLProgrammableRenderer.h:17
int numDepthPasses
Definition ofShadow.h:69
bool isEnabled
Definition ofShadow.h:65
int index
Definition ofShadow.h:71
glm::mat4 shadowMatrix
Definition ofShadow.h:60
glm::vec3 right
Definition ofShadow.h:51
float nearClip
Definition ofShadow.h:72
float bias
Definition ofShadow.h:66
float farClip
Definition ofShadow.h:73
glm::vec3 position
Definition ofShadow.h:47
glm::vec3 direction
Definition ofShadow.h:48
int texIndex
Definition ofShadow.h:63
ofShadowType shadowType
Definition ofShadow.h:57
float normalBias
Definition ofShadow.h:67
float sampleRadius
Definition ofShadow.h:74
float strength
Definition ofShadow.h:61
int lightType
Definition ofShadow.h:53
glm::vec3 up
Definition ofShadow.h:50
float mOrthoScaleX
Definition ofShadow.h:195
static void setDepthMapResolution(int aLightType, int ares)
Definition ofShadow.cpp:124
std::vector< glm::vec3 > getFrustumCorners(const glm::vec3 &aup, const glm::vec3 &aright, const glm::vec3 &afwd)
Definition ofShadow.cpp:798
void setSampleRadius(float aradius)
Definition ofShadow.h:158
static void enableAllShadows()
Definition ofShadow.cpp:208
~ofShadow()
Definition ofShadow.cpp:368
void _allocateFbo()
Definition ofShadow.cpp:965
float mOrthoScaleY
Definition ofShadow.h:196
float mDirectionalBoundsWidth
Definition ofShadow.h:197
void setStrength(float astrength)
Definition ofShadow.h:149
void setBias(float abias)
Definition ofShadow.h:152
static void setAllShadowDepthResolutions(int awidth, int aheight)
Definition ofShadow.cpp:250
bool isGlCullingEnabled()
Definition ofShadow.h:140
static std::string getShaderDefinesAsString()
Definition ofShadow.cpp:307
float mFov
Definition ofShadow.h:203
static void disableAllShadows()
Definition ofShadow.cpp:224
float mAreaLightWidth
Definition ofShadow.h:200
static void _updateTexDataIds()
Definition ofShadow.cpp:338
GLenum getFrontFaceWindingOrder()
Definition ofShadow.h:142
void setNormalBias(float abias)
Definition ofShadow.h:155
static void setAllShadowTypes(ofShadowType atype)
Definition ofShadow.cpp:235
void setDirectionalBounds(float aWorldWidth, float aWorldHeight)
Definition ofShadow.cpp:701
GLenum mGlFrontFaceWindingOrder
Definition ofShadow.h:206
static void setAllShadowSampleRadius(float sampleRadius)
Definition ofShadow.cpp:292
glm::mat4 mShadowProjection
Definition ofShadow.h:190
void setEnabled(bool ab)
Definition ofShadow.cpp:637
std::shared_ptr< ofShadow::Data > data
Definition ofShadow.h:186
GLuint getDepthMapFboId()
Definition ofShadow.cpp:707
const bool isSingleOmniPass() const
Definition ofShadow.cpp:658
std::vector< glm::mat4 > mLookAtMats
Definition ofShadow.h:192
void drawFrustum()
Definition ofShadow.cpp:717
int getDepthMapHeight()
Definition ofShadow.cpp:696
static GLuint getAreaTexId()
Definition ofShadow.cpp:173
bool beginDepth()
Definition ofShadow.cpp:477
void _drawFrustum(const glm::vec3 &aup, const glm::vec3 &aright, const glm::vec3 &afwd)
Definition ofShadow.cpp:729
bool mBEnableCulling
Definition ofShadow.h:205
static GLuint getDirectionalTexId()
Definition ofShadow.cpp:161
void setFrontFaceWindingOrder(GLenum aw)
Definition ofShadow.h:143
static GLenum getTextureTarget(int aLightType)
Definition ofShadow.cpp:92
const float & getStrength()
Definition ofShadow.h:148
float mDirectionalBoundsHeight
Definition ofShadow.h:198
void setNearClip(float anear)
Definition ofShadow.h:126
static bool areShadowsSupported()
Definition ofShadow.cpp:326
const float getBias()
Definition ofShadow.h:151
GLuint getDepthMapTexId()
Definition ofShadow.cpp:712
void clear()
Definition ofShadow.cpp:628
void _checkFbos()
Definition ofShadow.cpp:1098
const bool isMultiCubeFacePass() const
Definition ofShadow.cpp:650
std::string getShadowTypeAsString()
Definition ofShadow.cpp:875
static GLuint getSpotTexId()
Definition ofShadow.cpp:167
static int getNumTotalPossibleShadows(int aLightType)
Definition ofShadow.cpp:78
float getNearClip()
Definition ofShadow.h:124
const float getSampleRadius()
Definition ofShadow.h:157
ofShadow()
Definition ofShadow.cpp:357
const std::shared_ptr< ofShadow::Data > & getData() const
Definition ofShadow.h:120
const ofShader & getDepthShader(ofGLProgrammableRenderer &renderer) const
Definition ofShadow.cpp:880
void _checkSetup()
Definition ofShadow.cpp:935
void update(const ofLight &alight)
Definition ofShadow.cpp:387
bool mBSinglePass
Definition ofShadow.h:188
static void setAllShadowBias(float bias)
Definition ofShadow.cpp:262
static bool hasActiveShadows()
Definition ofShadow.cpp:196
float mAreaLightHeight
Definition ofShadow.h:201
void setShadowType(ofShadowType atype)
Definition ofShadow.h:138
bool getIsEnabled()
Definition ofShadow.h:121
const glm::mat4 biasMatrix
Definition ofShadow.h:208
void _allocate()
Definition ofShadow.cpp:959
const int getNumShadowDepthPasses() const
Definition ofShadow.cpp:663
const float getNormalBias()
Definition ofShadow.h:154
bool setupShadowDepthShader(ofShader &ashader, const std::string aShaderMain)
Definition ofShadow.cpp:1143
void setFarClip(float afar)
Definition ofShadow.h:127
bool endDepth()
Definition ofShadow.cpp:544
float getFarClip()
Definition ofShadow.h:125
int getDepthMapWidth()
Definition ofShadow.cpp:691
void setGlCullingEnabled(bool ab)
Definition ofShadow.h:141
static void setAllShadowNormalBias(float normalBias)
Definition ofShadow.cpp:277
static GLuint getPointTexId()
Definition ofShadow.cpp:155
void setSingleOmniPass(bool ab)
Definition ofShadow.cpp:671
void _updateNumShadows()
Definition ofShadow.cpp:1122
void setAreaLightSize(float awidth, float aheight)
Definition ofShadow.h:160
void updateDepth(const ofShader &shader, ofGLProgrammableRenderer &renderer) const
Definition ofShadow.cpp:900
void setLightType(int atype)
Definition ofShadow.cpp:373
std::vector< glm::mat4 > mViewProjMats
Definition ofShadow.h:193
std::vector< std::weak_ptr< ofShadow::Data > > & ofShadowsData()
Definition ofShadow.cpp:26
ofShadowType
Definition ofShadow.h:13
@ OF_SHADOW_TYPE_TOTAL
Definition ofShadow.h:18
@ OF_SHADOW_TYPE_PCF_MED
Definition ofShadow.h:16
@ OF_SHADOW_TYPE_PCF_LOW
Definition ofShadow.h:15
@ OF_SHADOW_TYPE_HARD
Definition ofShadow.h:14
@ OF_SHADOW_TYPE_PCF_HIGH
Definition ofShadow.h:17
GLuint texId
Definition ofShadow.h:29
int totalShadows
Definition ofShadow.h:41
bool bAllocated
Definition ofShadow.h:30
bool bFboAllocated
Definition ofShadow.h:31
int height
Definition ofShadow.h:38
int width
Definition ofShadow.h:37
GLuint fboId
Definition ofShadow.h:28