updated font, lua bindings, render pipeline

This commit is contained in:
turanszkij
2015-09-12 15:28:26 +02:00
parent 859b8ef1ef
commit d27fb149f7
11 changed files with 100 additions and 80 deletions
@@ -34,6 +34,8 @@ void DeferredRenderableComponent::Initialize()
, 1, false, 1, 0
, DXGI_FORMAT_R11G11B10_FLOAT
);
Renderable2DComponent::Initialize();
}
void DeferredRenderableComponent::Load()
{
@@ -71,6 +73,7 @@ void DeferredRenderableComponent::Render(){
RenderComposition2();
}
Renderable2DComponent::Render();
}
@@ -21,6 +21,8 @@ void ForwardRenderableComponent::Initialize()
Renderable3DComponent::Initialize();
rtMain.Initialize(wiRenderer::GetScreenWidth(), wiRenderer::GetScreenHeight(), 1, true);
Renderable2DComponent::Initialize();
}
void ForwardRenderableComponent::Load()
{
@@ -59,6 +61,7 @@ void ForwardRenderableComponent::Render(){
RenderComposition2();
}
Renderable2DComponent::Render();
}
+2
View File
@@ -100,6 +100,8 @@ void MainComponent::Render()
void MainComponent::Compose()
{
getActiveComponent()->Compose();
wiBackLog::Draw();
}
#ifndef WINSTORE_SUPPORT
+12 -2
View File
@@ -2,6 +2,7 @@
#include "wiResourceManager.h"
#include "wiSprite.h"
#include "wiFont.h"
#include "wiRenderer.h"
Renderable2DComponent::Renderable2DComponent()
{
@@ -18,7 +19,9 @@ Renderable2DComponent::~Renderable2DComponent()
void Renderable2DComponent::Initialize()
{
rtFinal.Initialize(
wiRenderer::GetScreenWidth(), wiRenderer::GetScreenHeight()
, 1, false);
}
void Renderable2DComponent::Load()
@@ -44,8 +47,10 @@ void Renderable2DComponent::Update()
x->Update(getSpriteSpeed());
}
}
void Renderable2DComponent::Compose()
void Renderable2DComponent::Render()
{
rtFinal.Activate(wiRenderer::getImmediateContext(), 0, 0, 0, 0);
wiImage::BatchBegin();
for (wiSprite* x : m_sprites)
@@ -58,6 +63,11 @@ void Renderable2DComponent::Compose()
x->Draw();
}
}
void Renderable2DComponent::Compose()
{
wiImage::BatchBegin();
wiImage::Draw(rtFinal.shaderResource.back(), wiImageEffects((float)wiRenderer::GetScreenWidth(),(float)wiRenderer::GetScreenHeight()));
}
void Renderable2DComponent::addSprite(wiSprite* sprite)
+2
View File
@@ -9,6 +9,7 @@ class Renderable2DComponent :
{
private:
float m_spriteSpeed;
wiRenderTarget rtFinal;
protected:
vector<wiSprite*> m_sprites;
vector<wiFont*> m_fonts;
@@ -21,6 +22,7 @@ public:
virtual void Unload();
virtual void Start();
virtual void Update();
virtual void Render();
virtual void Compose();
void addSprite(wiSprite* sprite);
@@ -46,9 +46,9 @@ int Renderable2DComponent_BindLua::AddSprite(lua_State *L)
return 0;
}
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
wiSprite_BindLua* sprite = Luna<wiSprite_BindLua>::lightcheck(L, 2);
wiSprite_BindLua* sprite = Luna<wiSprite_BindLua>::lightcheck(L, 1);
if (sprite != nullptr)
{
Renderable2DComponent* ccomp = dynamic_cast<Renderable2DComponent*>(component);
@@ -78,9 +78,9 @@ int Renderable2DComponent_BindLua::AddFont(lua_State* L)
return 0;
}
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
wiFont_BindLua* font = Luna<wiFont_BindLua>::lightcheck(L, 2);
wiFont_BindLua* font = Luna<wiFont_BindLua>::lightcheck(L, 1);
if (font != nullptr)
{
Renderable2DComponent* ccomp = dynamic_cast<Renderable2DComponent*>(component);
+2 -2
View File
@@ -27,9 +27,9 @@ SpriteAnim_BindLua::~SpriteAnim_BindLua()
int SpriteAnim_BindLua::SetRot(lua_State *L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
anim.rot = wiLua::SGetFloat(L, 2);
anim.rot = wiLua::SGetFloat(L, 1);
}
else
{
+3 -3
View File
@@ -121,12 +121,12 @@ void wiFont::SetUpStates()
D3D11_BLEND_DESC bd;
ZeroMemory(&bd, sizeof(bd));
bd.RenderTarget[0].BlendEnable=TRUE;
bd.RenderTarget[0].BlendEnable = TRUE;
bd.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
bd.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
bd.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
bd.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE;
bd.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO;
bd.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_INV_SRC_ALPHA;
bd.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
bd.RenderTarget[0].RenderTargetWriteMask = 0x0f;
wiRenderer::graphicsDevice->CreateBlendState(&bd,&blendState);
@@ -343,7 +343,7 @@ void wiFont::Draw(wiRenderer::DeviceContext context){
ConstantBuffer cb = ConstantBuffer();
cb.mProjection = XMMatrixTranspose( wiRenderer::getCamera()->GetOProjection() );
cb.mProjection = XMMatrixTranspose( XMMatrixOrthographicLH((float)wiRenderer::GetScreenWidth(),(float)wiRenderer::GetScreenHeight(),0,100) );
cb.mTrans = XMMatrixTranspose(XMMatrixTranslation(newProps.posX, newProps.posY, 0));
cb.mDimensions = XMFLOAT4((float)wiRenderer::RENDERWIDTH, (float)wiRenderer::RENDERHEIGHT, 0, 0);
+17 -17
View File
@@ -61,13 +61,13 @@ int wiImageEffects_BindLua::GetMipLevel(lua_State* L)
int wiImageEffects_BindLua::SetPos(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
effects.pos.x = wiLua::SGetFloat(L, 2);
effects.pos.x = wiLua::SGetFloat(L, 1);
if (argc > 1)
effects.pos.y = wiLua::SGetFloat(L, 2);
if (argc > 2)
effects.pos.y = wiLua::SGetFloat(L, 3);
if (argc > 3)
effects.pos.z = wiLua::SGetFloat(L, 4);
effects.pos.z = wiLua::SGetFloat(L, 3);
}
else
{
@@ -78,11 +78,11 @@ int wiImageEffects_BindLua::SetPos(lua_State* L)
int wiImageEffects_BindLua::SetSize(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
effects.siz.x = wiLua::SGetFloat(L, 2);
if (argc > 2)
effects.siz.y = wiLua::SGetFloat(L, 3);
effects.siz.x = wiLua::SGetFloat(L, 1);
if (argc > 1)
effects.siz.y = wiLua::SGetFloat(L, 2);
}
else
{
@@ -93,9 +93,9 @@ int wiImageEffects_BindLua::SetSize(lua_State* L)
int wiImageEffects_BindLua::SetOpacity(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
effects.opacity = wiLua::SGetFloat(L, 2);
effects.opacity = wiLua::SGetFloat(L, 1);
}
else
{
@@ -106,9 +106,9 @@ int wiImageEffects_BindLua::SetOpacity(lua_State* L)
int wiImageEffects_BindLua::SetFade(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
effects.fade = wiLua::SGetFloat(L, 2);
effects.fade = wiLua::SGetFloat(L, 1);
}
else
{
@@ -119,9 +119,9 @@ int wiImageEffects_BindLua::SetFade(lua_State* L)
int wiImageEffects_BindLua::SetRotation(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
effects.rotation = wiLua::SGetFloat(L, 2);
effects.rotation = wiLua::SGetFloat(L, 1);
}
else
{
@@ -132,9 +132,9 @@ int wiImageEffects_BindLua::SetRotation(lua_State* L)
int wiImageEffects_BindLua::SetMipLevel(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
effects.mipLevel = wiLua::SGetFloat(L, 2);
effects.mipLevel = wiLua::SGetFloat(L, 1);
}
else
{
+48 -48
View File
@@ -60,9 +60,9 @@ int Node_BindLua::SetName(lua_State* L)
return 0;
}
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
node->name = wiLua::SGetString(L, 2);
node->name = wiLua::SGetString(L, 1);
}
else
{
@@ -126,25 +126,25 @@ Transform_BindLua::~Transform_BindLua()
int Transform_BindLua::AttachTo(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
Transform_BindLua* parent = Luna<Transform_BindLua>::lightcheck(L, 2);
Transform_BindLua* parent = Luna<Transform_BindLua>::lightcheck(L, 1);
if (parent == nullptr)
parent = Luna<Object_BindLua>::lightcheck(L, 2);
parent = Luna<Object_BindLua>::lightcheck(L, 1);
if (parent == nullptr)
parent = Luna<Armature_BindLua>::lightcheck(L, 2);
parent = Luna<Armature_BindLua>::lightcheck(L, 1);
if (parent != nullptr)
{
int s = 1, r = 1, t = 1;
if (argc > 2)
if (argc > 1)
{
t = wiLua::SGetInt(L, 3);
if (argc > 3)
t = wiLua::SGetInt(L, 2);
if (argc > 2)
{
r = wiLua::SGetInt(L, 4);
if (argc > 4)
r = wiLua::SGetInt(L, 3);
if (argc > 3)
{
s = wiLua::SGetInt(L, 5);
s = wiLua::SGetInt(L, 4);
}
}
}
@@ -165,9 +165,9 @@ int Transform_BindLua::Detach(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
int eraseFromParent = 1;
if (argc > 1)
if (argc > 0)
{
eraseFromParent = wiLua::SGetInt(L, 2);
eraseFromParent = wiLua::SGetInt(L, 1);
}
transform->detach(eraseFromParent);
return 0;
@@ -175,13 +175,13 @@ int Transform_BindLua::Detach(lua_State* L)
int Transform_BindLua::DetachChild(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
Transform_BindLua* child = Luna<Transform_BindLua>::lightcheck(L, 2);
Transform_BindLua* child = Luna<Transform_BindLua>::lightcheck(L, 1);
if (child == nullptr)
child = Luna<Object_BindLua>::lightcheck(L, 2);
child = Luna<Object_BindLua>::lightcheck(L, 1);
if (child == nullptr)
child = Luna<Armature_BindLua>::lightcheck(L, 2);
child = Luna<Armature_BindLua>::lightcheck(L, 1);
if (child != nullptr)
{
transform->detachChild(child->transform);
@@ -195,15 +195,15 @@ int Transform_BindLua::ApplyTransform(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
int s = 1, r = 1, t = 1;
if (argc > 1)
if (argc > 0)
{
t = wiLua::SGetInt(L, 2);
if (argc > 2)
t = wiLua::SGetInt(L, 1);
if (argc > 1)
{
r = wiLua::SGetInt(L, 3);
if (argc > 3)
r = wiLua::SGetInt(L, 2);
if (argc > 2)
{
s = wiLua::SGetInt(L, 4);
s = wiLua::SGetInt(L, 3);
}
}
}
@@ -213,9 +213,9 @@ int Transform_BindLua::ApplyTransform(lua_State* L)
int Transform_BindLua::Scale(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
Vector_BindLua* v = Luna<Vector_BindLua>::lightcheck(L, 2);
Vector_BindLua* v = Luna<Vector_BindLua>::lightcheck(L, 1);
if (v != nullptr)
{
XMFLOAT3 scale;
@@ -236,9 +236,9 @@ int Transform_BindLua::Scale(lua_State* L)
int Transform_BindLua::Rotate(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
Vector_BindLua* v = Luna<Vector_BindLua>::lightcheck(L, 2);
Vector_BindLua* v = Luna<Vector_BindLua>::lightcheck(L, 1);
if (v != nullptr)
{
XMFLOAT3 rollPitchYaw;
@@ -259,9 +259,9 @@ int Transform_BindLua::Rotate(lua_State* L)
int Transform_BindLua::Translate(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
Vector_BindLua* v = Luna<Vector_BindLua>::lightcheck(L, 2);
Vector_BindLua* v = Luna<Vector_BindLua>::lightcheck(L, 1);
if (v != nullptr)
{
XMFLOAT3 translate;
@@ -282,9 +282,9 @@ int Transform_BindLua::Translate(lua_State* L)
int Transform_BindLua::MatrixTransform(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
Matrix_BindLua* m = Luna<Matrix_BindLua>::lightcheck(L, 2);
Matrix_BindLua* m = Luna<Matrix_BindLua>::lightcheck(L, 1);
if (m != nullptr)
{
transform->transform(m->matrix);
@@ -313,13 +313,13 @@ int Transform_BindLua::ClearTransform(lua_State* L)
int Transform_BindLua::SetTransform(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
Transform_BindLua* t = Luna<Transform_BindLua>::lightcheck(L, 2);
Transform_BindLua* t = Luna<Transform_BindLua>::lightcheck(L, 1);
if (t == nullptr)
t = Luna<Object_BindLua>::lightcheck(L, 2);
t = Luna<Object_BindLua>::lightcheck(L, 1);
if (t == nullptr)
t = Luna<Armature_BindLua>::lightcheck(L, 2);
t = Luna<Armature_BindLua>::lightcheck(L, 1);
if (t != nullptr)
{
*transform = *t->transform;
@@ -393,11 +393,11 @@ Cullable_BindLua::~Cullable_BindLua()
int Cullable_BindLua::Intersects(lua_State* L)
{
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
Cullable_BindLua* target = Luna<Cullable_BindLua>::lightcheck(L, 2);
Cullable_BindLua* target = Luna<Cullable_BindLua>::lightcheck(L, 1);
if (target == nullptr)
target = Luna<Object_BindLua>::lightcheck(L, 2);
target = Luna<Object_BindLua>::lightcheck(L, 1);
if (target != nullptr)
{
AABB::INTERSECTION_TYPE intersection = cullable->bounds.intersects(target->cullable->bounds);
@@ -406,7 +406,7 @@ int Cullable_BindLua::Intersects(lua_State* L)
}
else
{
Ray_BindLua* ray = Luna<Ray_BindLua>::lightcheck(L, 2);
Ray_BindLua* ray = Luna<Ray_BindLua>::lightcheck(L, 1);
if (ray != nullptr)
{
wiLua::SSetBool(L, cullable->bounds.intersects(ray->ray));
@@ -414,7 +414,7 @@ int Cullable_BindLua::Intersects(lua_State* L)
}
else
{
Vector_BindLua* vec = Luna<Vector_BindLua>::lightcheck(L, 2);
Vector_BindLua* vec = Luna<Vector_BindLua>::lightcheck(L, 1);
if (vec != nullptr)
{
XMFLOAT3 point;
@@ -504,9 +504,9 @@ int Object_BindLua::SetTransparency(lua_State *L)
return 0;
}
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
object->transparency = wiLua::SGetFloat(L, 2);
object->transparency = wiLua::SGetFloat(L, 1);
}
else
{
@@ -532,9 +532,9 @@ int Object_BindLua::SetColor(lua_State *L)
return 0;
}
int argc = wiLua::SGetArgCount(L);
if (argc > 3)
if (argc > 2)
{
object->color = wiLua::SGetFloat3(L, 2);
object->color = wiLua::SGetFloat3(L, 1);
}
else
{
@@ -672,7 +672,7 @@ int Armature_BindLua::GetBone(lua_State *L)
wiLua::SError(L, "GetBone() armature is null!");
return 0;
}
string name = wiLua::SGetString(L, 2);
string name = wiLua::SGetString(L, 1);
for (auto& x : armature->boneCollection)
{
if (!x->name.compare(name))
@@ -718,9 +718,9 @@ int Armature_BindLua::ChangeAction(lua_State* L)
return 0;
}
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
string armatureName = wiLua::SGetString(L, 2);
string armatureName = wiLua::SGetString(L, 1);
if (!armature->ChangeAction(armatureName))
{
wiLua::SError(L, "SetAction(String name) action not found!");
+4 -4
View File
@@ -51,9 +51,9 @@ int wiSprite_BindLua::SetEffects(lua_State *L)
return 0;
}
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
wiImageEffects_BindLua* effects = Luna<wiImageEffects_BindLua>::check(L, 2);
wiImageEffects_BindLua* effects = Luna<wiImageEffects_BindLua>::check(L, 1);
if (effects != nullptr)
{
sprite->effects = effects->effects;
@@ -83,9 +83,9 @@ int wiSprite_BindLua::SetAnim(lua_State *L)
return 0;
}
int argc = wiLua::SGetArgCount(L);
if (argc > 1)
if (argc > 0)
{
SpriteAnim_BindLua* anim = Luna<SpriteAnim_BindLua>::check(L, 2);
SpriteAnim_BindLua* anim = Luna<SpriteAnim_BindLua>::check(L, 1);
if (anim != nullptr)
{
sprite->anim = anim->anim;