Skylicht Engine
Toggle main menu visibility
Loading...
Searching...
No Matches
RenderPipeline
CBaseRP.h
1
/*
2
!@
3
MIT License
4
5
Copyright (c) 2019 Skylicht Technology CO., LTD
6
7
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files
8
(the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify,
9
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
10
subject to the following conditions:
11
12
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
13
14
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
15
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
17
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19
20
This file is part of the "Skylicht Engine".
21
https://github.com/skylicht-lab/skylicht-engine
22
!#
23
*/
24
25
#pragma once
26
27
#include "IRenderPipeline.h"
28
#include "Entity/CEntityManager.h"
29
30
namespace
Skylicht
31
{
32
class
SKYLICHT_API CBaseRP :
public
IRenderPipeline
33
{
34
protected
:
35
IRenderPipeline* m_next;
36
37
CMeshBuffer<video::S3DVertex2TCoords>
* m_drawBuffer;
38
IVertexBuffer
* m_verticesImage;
39
IIndexBuffer
* m_indicesImage;
40
41
float
m_viewport2DW;
42
float
m_viewport2DH;
43
44
SMaterial
m_unbindMaterial;
45
46
int
m_textureColorShaderID;
47
48
static
bool
s_bakeMode;
49
static
bool
s_bakeLMMode;
50
static
u32
s_bakeBounce;
51
static
u32
s_maxLight;
52
static
SColor
s_clearColor;
53
54
public
:
55
CBaseRP();
56
57
virtual
~CBaseRP();
58
59
virtual
bool
canRenderMaterial(
CMaterial
* m);
60
61
virtual
bool
canRenderShader(
CShader
* s);
62
63
virtual
void
render(
ITexture
* target,
CCamera
* camera,
CEntityManager
* entityManager,
const
core::recti
& vp,
int
cubeFaceId = -1, IRenderPipeline* lastRP = NULL) = 0;
64
65
virtual
void
setCamera(
CCamera
* camera);
66
67
virtual
void
setNextPipeLine(IRenderPipeline* next);
68
69
virtual
void
onNext(
ITexture
* target,
CCamera
* camera,
CEntityManager
* entity,
const
core::recti
& vp,
int
cubeFaceId);
70
71
virtual
void
drawMeshBuffer(
CMesh
* mesh,
int
bufferID,
CEntityManager
* entity,
int
entityID,
bool
skinnedMesh);
72
73
virtual
void
drawInstancingMeshBuffer(
CMesh
* mesh,
int
bufferID,
CShader
* instancingShader,
CEntityManager
* entityMgr,
int
entityID,
bool
skinnedMesh);
74
75
public
:
76
77
virtual
void
updateTextureResource(
CMesh
* mesh,
int
bufferID,
CEntityManager
* entity,
int
entityID,
bool
skinnedMesh);
78
79
virtual
void
updateShaderResource(
CShader
* shader,
CEntityManager
* entity,
int
entityID,
video::SMaterial
& irrMaterial);
80
81
void
beginRender2D(
float
w,
float
h);
82
83
void
renderBufferToTarget(
float
sx,
float
sy,
float
sw,
float
sh,
SMaterial
& material,
bool
flipY =
true
,
bool
flipX =
false
);
84
85
void
renderBufferToTarget(
float
dx,
float
dy,
float
dw,
float
dh,
float
sx,
float
sy,
float
sw,
float
sh,
SMaterial
& material,
bool
flipY =
true
,
bool
flipX =
false
);
86
87
void
renderEnvironment(
CCamera
* camera,
CEntityManager
* entityMgr,
const
core::vector3df
& position,
ITexture
* texture[],
int
* face,
int
numFace,
bool
allPipeline);
88
89
void
renderCubeEnvironment(
CCamera
* camera,
CEntityManager
* entityMgr,
const
core::vector3df
& position,
ITexture
* texture,
int
* face,
int
numFace,
bool
allPipeline);
90
91
static
void
saveFBOToFile(
ITexture
* texture,
const
char
* output);
92
93
static
void
setBakeMode(
bool
b);
94
95
static
void
setBakeLightmapMode(
bool
b);
96
97
static
void
setBakeLightingMapBounce(
u32
i);
98
99
static
void
setClearColor(
const
SColor
& c);
100
101
static
void
setMaxLight(
u32
maxLights);
102
103
void
unbindRTT();
104
105
protected
:
106
107
void
disableTextureBilinear(
SMaterial
& m,
int
slot);
108
109
void
enableTextureBilinear(
SMaterial
& m,
int
slot);
110
111
void
setTarget(
ITexture
* target,
int
faceId);
112
113
void
drawSceneToTexture(
ITexture
* target,
CCamera
* camera,
CEntityManager
* entityMgr,
bool
allPipeline);
114
115
void
drawSceneToCubeTexture(
ITexture
* target,
CCamera
* camera, video::E_CUBEMAP_FACE faceID,
CEntityManager
* entityMgr,
bool
allPipeline);
116
};
117
}
Skylicht::CCamera
This is an object class used to set up the camera, including its position, viewing angle,...
Definition
CCamera.h:70
Skylicht::CEntityManager
This object class manages all entities within a scene.
Definition
CEntityManager.h:89
Skylicht::CMaterial
The object class describes material information such as which shader it's associated with,...
Definition
CMaterial.h:84
Skylicht::CMesh
Definition
CMesh.h:75
Skylicht::CShader
Represents a programmable shader, including uniforms, UI, resources, instancing and platform-specific...
Definition
CShader.h:198
irr::scene::CMeshBuffer
Implementation of the IMeshBuffer interface.
Definition
CMeshBuffer.h:18
irr::scene::IIndexBuffer
Definition
IIndexBuffer.h:25
irr::scene::IVertexBuffer
Definition
IVertexBuffer.h:17
irr::video::ITexture
Interface of a Video Driver dependent Texture.
Definition
ITexture.h:119
irr::video::SColor
Class representing a 32 bit ARGB color.
Definition
SColor.h:285
irr::video::SMaterial
Struct for holding parameters for a material renderer.
Definition
SMaterial.h:255
Skylicht
Everything in the Skylicht Engine. You can start by looking at the topics.
Definition
AudioDebugLog.h:29
irr::core::vector3df
vector3d< f32 > vector3df
Typedef for a f32 3d vector.
Definition
vector3d.h:445
irr::core::recti
rect< s32 > recti
Rectangle with int values.
Definition
rect.h:273
irr::u32
unsigned int u32
32 bit unsigned variable.
Definition
irrTypes.h:58
Generated by
1.17.0