textures
This commit is contained in:
@@ -57,7 +57,6 @@ float C_BaseEntity::GetScale( void )
|
||||
void C_BaseEntity::SetThinkImpl( fnThink pfnThink )
|
||||
{
|
||||
m_pfnThink = pfnThink;
|
||||
V_printf("%p\n", pfnThink);
|
||||
}
|
||||
|
||||
void C_BaseEntity::SetNextThink( float fThink )
|
||||
|
||||
@@ -12,7 +12,7 @@ public:
|
||||
virtual void Think( float fDelta );
|
||||
|
||||
IMesh *m_pMesh;
|
||||
IMeshInstance *m_pMeshInstance;
|
||||
IMeshInstance *m_pMeshInstances[10];
|
||||
};
|
||||
|
||||
void C_MOBAPlayer::Precache()
|
||||
@@ -21,7 +21,6 @@ void C_MOBAPlayer::Precache()
|
||||
IBuffer *pDataBuffer;
|
||||
IShader *pShader;
|
||||
IMaterial *pMaterial;
|
||||
g_pWorldRenderer->Init();
|
||||
pShader = g_pRenderContext->CreateShader("game/core/shaders/mesh_raster.shader_c");
|
||||
|
||||
IFileHandle *pHandle = filesystem->Open("game/core/meshes/spot.fmesh_c", FILEMODE_READ);
|
||||
@@ -47,10 +46,13 @@ void C_MOBAPlayer::Precache()
|
||||
|
||||
m_pMesh->SetVertices(pBuffer);
|
||||
m_pMesh->SetMaterial(pMaterial);
|
||||
m_pMeshInstance = g_pWorldRenderer->CreateInstance(m_pMesh);
|
||||
m_pMeshInstance->SetScale({5, 5, 5});
|
||||
m_pMeshInstance->SetPosition({0,0,0});
|
||||
m_pMeshInstance->SetRotation({1,0,0,0});
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
m_pMeshInstances[i] = g_pWorldRenderer->CreateInstance(m_pMesh);
|
||||
m_pMeshInstances[i]->SetScale({1, 1, 1});
|
||||
m_pMeshInstances[i]->SetPosition({(float)i,0,0});
|
||||
m_pMeshInstances[i]->SetRotation({1,0,0,0});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -62,10 +64,13 @@ void C_MOBAPlayer::Spawn()
|
||||
|
||||
void C_MOBAPlayer::Think( float fDelta )
|
||||
{
|
||||
m_pMeshInstance->SetPosition({0,0,-(float)g_pEngineVars->m_fTime});
|
||||
versor v;
|
||||
glm_euler_zxy_quat((vec3){(float)g_pEngineVars->m_fTime,0,0}, v);
|
||||
m_pMeshInstance->SetRotation({v[0], v[1], v[2], v[3]});
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
m_pMeshInstances[i]->SetPosition({(float)i, 0 ,-(float)g_pEngineVars->m_fTime});
|
||||
versor v;
|
||||
glm_euler_zxy_quat((vec3){(float)g_pEngineVars->m_fTime,0,0}, v);
|
||||
m_pMeshInstances[i]->SetRotation({v[0], v[1], v[2], v[3]});
|
||||
}
|
||||
};
|
||||
|
||||
LINK_ENTITY_TO_CLASS(player, C_MOBAPlayer)
|
||||
|
||||
@@ -16,6 +16,7 @@ struct PerMeshData_t
|
||||
{
|
||||
mat4 m_matTranslation;
|
||||
mat4 m_matRotation;
|
||||
uint32_t m_uAlbedo;
|
||||
};
|
||||
|
||||
class CFunnyMeshInstance;
|
||||
@@ -43,6 +44,8 @@ void CFunnyMesh::ConfigureShader( IShader *pShader )
|
||||
pShader->AddAttribute(0, 2, VERTEX_FORMAT_XYZ32_SFLOAT, 20);
|
||||
// albedo
|
||||
pShader->AddOutputImage(0, IMAGE_FORMAT_RGBA8_UNORM);
|
||||
pShader->AddOutputImage(1, IMAGE_FORMAT_RGBA16_SFLOAT);
|
||||
pShader->AddOutputImage(2, IMAGE_FORMAT_RGBA32_SFLOAT);
|
||||
|
||||
pShader->SetMultisampling(MULTISAMPLE_TYPE_1_SAMPLES);
|
||||
|
||||
@@ -117,6 +120,7 @@ void CFunnyMeshInstance::Frame()
|
||||
v[2] = m_vScale.z;
|
||||
glm_scale_make(m, v);
|
||||
glm_mat4_mul(m_data.m_matTranslation, m, m_data.m_matTranslation);
|
||||
m_data.m_uAlbedo = 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -137,10 +141,14 @@ private:
|
||||
CUtlVector<CFunnyMesh*> m_pMeshes;
|
||||
IImage *m_pOutputImage = NULL;
|
||||
IImage *m_pDepthImage = NULL;
|
||||
IImage *m_pNormalImage = NULL;
|
||||
IImage *m_pWorldSpaceImage = NULL;
|
||||
IRenderCommandList *m_pRasterCommandList = NULL;
|
||||
IBuffer *m_pViewBuffer;
|
||||
ViewBuffer_t *m_pViewBufferData;
|
||||
|
||||
ITextureArray *m_pTextures;
|
||||
|
||||
vec3 m_vPos;
|
||||
versor m_vRot;
|
||||
};
|
||||
@@ -156,6 +164,18 @@ void CFunnyWorldRenderer::Init()
|
||||
IMAGE_FORMAT_RGBA8_UNORM,
|
||||
MULTISAMPLE_TYPE_NONE
|
||||
);
|
||||
m_pNormalImage = g_pRenderContext->CreateRenderTarget(
|
||||
100,
|
||||
100,
|
||||
IMAGE_FORMAT_RGBA16_SFLOAT,
|
||||
MULTISAMPLE_TYPE_NONE
|
||||
);
|
||||
m_pWorldSpaceImage = g_pRenderContext->CreateRenderTarget(
|
||||
100,
|
||||
100,
|
||||
IMAGE_FORMAT_RGBA32_SFLOAT,
|
||||
MULTISAMPLE_TYPE_NONE
|
||||
);
|
||||
|
||||
m_pDepthImage = g_pRenderContext->CreateRenderTarget(
|
||||
100,
|
||||
@@ -168,6 +188,7 @@ void CFunnyWorldRenderer::Init()
|
||||
|
||||
m_pRasterCommandList = g_pRenderContext->CreateCommandList();
|
||||
m_pViewBuffer = g_pRenderContext->CreateConstantBuffer(sizeof(ViewBuffer_t));
|
||||
m_pTextures = g_pRenderContext->CreateTextureArray();
|
||||
}
|
||||
|
||||
void CFunnyWorldRenderer::Tick( float fDelta )
|
||||
@@ -197,12 +218,28 @@ void CFunnyWorldRenderer::Frame( float fDelta )
|
||||
if (g_pMainWindow->BRenderSizeUpdated())
|
||||
{
|
||||
g_pRenderContext->DestroyImage(m_pOutputImage);
|
||||
g_pRenderContext->DestroyImage(m_pNormalImage);
|
||||
g_pRenderContext->DestroyImage(m_pWorldSpaceImage);
|
||||
g_pRenderContext->DestroyImage(m_pDepthImage);
|
||||
|
||||
m_pOutputImage = g_pRenderContext->CreateRenderTarget(
|
||||
g_pMainWindow->GetRenderWidth(),
|
||||
g_pMainWindow->GetRenderHeight(),
|
||||
IMAGE_FORMAT_RGBA8_UNORM,
|
||||
MULTISAMPLE_TYPE_NONE);
|
||||
g_pRenderContext->DestroyImage(m_pOutputImage);
|
||||
|
||||
m_pNormalImage = g_pRenderContext->CreateRenderTarget(
|
||||
g_pMainWindow->GetRenderWidth(),
|
||||
g_pMainWindow->GetRenderHeight(),
|
||||
IMAGE_FORMAT_RGBA16_SFLOAT,
|
||||
MULTISAMPLE_TYPE_NONE
|
||||
);
|
||||
m_pWorldSpaceImage = g_pRenderContext->CreateRenderTarget(
|
||||
g_pMainWindow->GetRenderWidth(),
|
||||
g_pMainWindow->GetRenderHeight(),
|
||||
IMAGE_FORMAT_RGBA32_SFLOAT,
|
||||
MULTISAMPLE_TYPE_NONE
|
||||
);
|
||||
m_pDepthImage = g_pRenderContext->CreateRenderTarget(
|
||||
g_pMainWindow->GetRenderWidth(),
|
||||
g_pMainWindow->GetRenderHeight(),
|
||||
@@ -213,6 +250,8 @@ void CFunnyWorldRenderer::Frame( float fDelta )
|
||||
m_pRasterCommandList->StartRecording();
|
||||
m_pRasterCommandList->SetRenderResolution(uWidth, uHeight);
|
||||
m_pRasterCommandList->SetRenderTarget(0, m_pOutputImage);
|
||||
m_pRasterCommandList->SetRenderTarget(1, m_pNormalImage);
|
||||
m_pRasterCommandList->SetRenderTarget(2, m_pWorldSpaceImage);
|
||||
m_pRasterCommandList->SetDepthTarget(m_pDepthImage);
|
||||
m_pRasterCommandList->SetViewport(0, 0, uWidth, uHeight, 0, 1);
|
||||
m_pRasterCommandList->SetScissors(0, 0, uWidth, uHeight);
|
||||
@@ -240,6 +279,7 @@ void CFunnyWorldRenderer::Frame( float fDelta )
|
||||
pDataBuffer->Unlock();
|
||||
mesh->m_pMaterial->VSSetConstantsBuffer(0, m_pViewBuffer);
|
||||
mesh->m_pMaterial->VSSetConstantsBuffer(1, pDataBuffer);
|
||||
mesh->m_pMaterial->PSSetTextureArray(1, m_pTextures);
|
||||
g_pRenderContext->DestroyBuffer(pDataBuffer);
|
||||
}
|
||||
for ( auto mesh: m_pMeshes)
|
||||
|
||||
Reference in New Issue
Block a user