move shaders to .glsl files and stringify to .h file.
add crude screenshot facility (using F1 key), it can also be used for debugging start with shadows using shadowmap, not working yet add experimental 'ignore' body index in raycast, using b3HitInfo.m_m_hitResult2
This commit is contained in:
62
Demos3/GpuDemos/shadows/ShadowMapDemo.cpp
Normal file
62
Demos3/GpuDemos/shadows/ShadowMapDemo.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
#include "ShadowMapDemo.h"
|
||||
#include "ShadowMapDemoInternalData.h"
|
||||
#include "OpenGLWindow/GLInstancingRenderer.h"
|
||||
#include "OpenGLWindow/ShapeData.h"
|
||||
|
||||
ShadowMapDemo::ShadowMapDemo()
|
||||
{
|
||||
m_shadowData = new ShadowMapDemoInternalData;
|
||||
}
|
||||
|
||||
ShadowMapDemo::~ShadowMapDemo()
|
||||
{
|
||||
delete m_shadowData;
|
||||
}
|
||||
|
||||
|
||||
void ShadowMapDemo::initPhysics(const ConstructionInfo& ci)
|
||||
{
|
||||
m_shadowData->m_instancingRenderer = ci.m_instancingRenderer;
|
||||
|
||||
int sphereShape = registerGraphicsSphereShape(ci,0.1,false);
|
||||
float pos[4]={0,3,0,0};
|
||||
float orn[4]={0,0,0,1};
|
||||
float color[4]={1,0,0,1};
|
||||
float scaling[4]={1,1,1,1};
|
||||
|
||||
ci.m_instancingRenderer->registerGraphicsInstance(sphereShape,pos,orn,color,scaling);
|
||||
|
||||
|
||||
int strideInBytes = 9*sizeof(float);
|
||||
int numVertices = sizeof(cube_vertices)/strideInBytes;
|
||||
int numIndices = sizeof(cube_vertices)/sizeof(int);
|
||||
//int shapeId = ci.m_instancingRenderer->registerShape(&cube_vertices[0],numVertices,cube_indices,numIndices);
|
||||
int boxShape = ci.m_instancingRenderer->registerShape(&cube_vertices[0],numVertices,cube_indices,numIndices);
|
||||
pos[1]=0.f;
|
||||
scaling[0]=scaling[2]=10.f;
|
||||
color[0]=1.f;
|
||||
color[1]=1.f;
|
||||
color[2]=1.f;
|
||||
color[3]=1.f;
|
||||
ci.m_instancingRenderer->registerGraphicsInstance(boxShape ,pos,orn,color,scaling);
|
||||
|
||||
|
||||
m_shadowData->m_instancingRenderer->setCameraTargetPosition(pos);
|
||||
m_shadowData->m_instancingRenderer->setCameraDistance(15);
|
||||
ci.m_instancingRenderer->writeTransforms();
|
||||
}
|
||||
|
||||
void ShadowMapDemo::exitPhysics()
|
||||
{
|
||||
}
|
||||
|
||||
void ShadowMapDemo::renderScene()
|
||||
{
|
||||
m_shadowData->m_instancingRenderer->renderScene(B3_CREATE_SHADOWMAP_RENDERMODE);
|
||||
//m_shadowData->m_instancingRenderer->renderScene();
|
||||
m_shadowData->m_instancingRenderer->renderScene(B3_USE_SHADOWMAP_RENDERMODE);
|
||||
}
|
||||
|
||||
void ShadowMapDemo::clientMoveAndDisplay()
|
||||
{
|
||||
}
|
||||
36
Demos3/GpuDemos/shadows/ShadowMapDemo.h
Normal file
36
Demos3/GpuDemos/shadows/ShadowMapDemo.h
Normal file
@@ -0,0 +1,36 @@
|
||||
#ifndef SHADOW_MAP_DEMO_H
|
||||
#define SHADOW_MAP_DEMO_H
|
||||
|
||||
#include "../GpuDemo.h"
|
||||
|
||||
class ShadowMapDemo : public GpuDemo
|
||||
{
|
||||
struct ShadowMapDemoInternalData* m_shadowData;
|
||||
|
||||
public:
|
||||
|
||||
ShadowMapDemo();
|
||||
virtual ~ShadowMapDemo();
|
||||
|
||||
virtual const char* getName()
|
||||
{
|
||||
return "ShadowMapDemo";
|
||||
}
|
||||
|
||||
virtual void initPhysics(const ConstructionInfo& ci);
|
||||
|
||||
virtual void exitPhysics();
|
||||
|
||||
virtual void renderScene();
|
||||
|
||||
virtual void clientMoveAndDisplay();
|
||||
|
||||
static GpuDemo* MyCreateFunc()
|
||||
{
|
||||
GpuDemo* demo = new ShadowMapDemo;
|
||||
return demo;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif //SHADOW_MAP_DEMO_H
|
||||
11
Demos3/GpuDemos/shadows/ShadowMapDemoInternalData.h
Normal file
11
Demos3/GpuDemos/shadows/ShadowMapDemoInternalData.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#ifndef SHADOW_MAP_INTERNAL_DATA_H
|
||||
#define SHADOW_MAP_INTERNAL_DATA_H
|
||||
|
||||
|
||||
struct ShadowMapDemoInternalData
|
||||
{
|
||||
class GLInstancingRenderer* m_instancingRenderer;
|
||||
};
|
||||
|
||||
#endif //SHADOW_MAP_INTERNAL_DATA_H
|
||||
|
||||
Reference in New Issue
Block a user