11 #include "swCommonLib/Common/ObjectDeleter.h"
12 #include "swCommonLib/System/Path.h"
18 #include "swGraphicAPI/Resources/IShaderInputLayout.h"
20 #include "swGraphicAPI/Resources/ResourcePtr.h"
21 #include "swGraphicAPI/Resources/BufferInitData.h"
23 #include <DirectXMath.h>
53 struct MeshPartObject;
71 static const std::wstring RENDER_TARGET_COLOR_BUFFER_NAME = L
"::color";
72 static const std::wstring RENDER_TARGET_DEPTH_BUFFER_NAME = L
"::depth";
73 static const std::wstring RENDER_TARGET_STENCIL_BUFFER_NAME = L
"::stencil";
76 typedef uint16 Index16;
77 typedef uint32 Index32;
133 QuadraticInterpolation,
134 QuadraticAproximation,
175 MipMapFilter = MipMapFilter::Unknown;
178 TextureType = TextureType::TEXTURE_TYPE_TEXTURE2D;
183 RTTR_REGISTRATION_FRIEND;
187 int GetArraySize () {
return ArraySize; }
188 bool IsCPUReadable () {
return CPURead; }
189 bool IsCPUWriteable () {
return CPUWrite; }
191 bool IsCubeMapTex () {
return IsCubeMap; }
195 std::string GetPath () {
return FilePath.String(); }
209 friend ObjectDeleter<TextureObject>;
217 virtual const filesystem::Path&
GetFilePath ()
const = 0;
219 virtual MemoryChunk
CopyData ()
const = 0;
225 inline bool operator==(
const std::wstring& file_name );
304 RTTR_REGISTRATION_FRIEND;
337 friend ObjectDeleter< ShaderInputLayout >;
355 std::wstring m_inputLayoutName;
361 virtual void AddRow (
const char* semanticName,
ResourceFormat format,
unsigned int inputSlot,
unsigned int byteOffset,
bool perInstance,
unsigned int instanceDataStep ) = 0;
363 std::wstring& GetName () {
return m_inputLayoutName; }
374 TesselationControlShader = 0x08,
375 TesselationEvaluationShader = 0x10,
390 friend ObjectDeleter< VertexShader >;
411 friend ObjectDeleter< PixelShader >;
432 friend ObjectDeleter<GeometryShader>;
453 friend ObjectDeleter< ControlShader >;
474 friend ObjectDeleter< EvaluationShader >;
495 friend ObjectDeleter<ComputeShader>;
519 friend ObjectDeleter<BufferObject>;
526 BufferObject(
unsigned int elementSize,
unsigned int elementCount );
564 friend ObjectDeleter<MaterialObject>;
566 DirectX::XMFLOAT4 Diffuse;
567 DirectX::XMFLOAT4 Ambient;
568 DirectX::XMFLOAT4 Specular;
569 DirectX::XMFLOAT4 Emissive;
virtual std::string GetResourceName() const override
Zwraca nazwę zasobu. To może być nazwa pliku, na podstawie którego stworzono zasób, ale zasadniczo interpretacja jest dowolna.
Definition: MeshResources.h:481
unsigned int GetStride()
Zwraca rozmiar pojedynczego elementu w buforze.
Definition: MeshResources.h:528
bool AllowShareResource
Pozwala na dostęp do zasoby z wielu API graficznych i pomiędzy kontekstami.
Definition: MeshResources.h:152
Klasa przechowująca pixel shader.
Definition: MeshResources.h:429
DepthStencilFormat
Typy dostępne dla bufora głębokości.
Definition: GraphicAPIConstants.h:141
bool AllowShareResource
Pozwala na dostęp do zasoby z wielu API graficznych i pomiędzy kontekstami.
Definition: MeshResources.h:245
ResourceFormat Format
Format tekstury (liczba kanałów, liczba bitów na kanał itp)
Definition: MeshResources.h:157
Deskryptor tekstury.
Definition: MeshResources.h:145
virtual const filesystem::Path & GetFilePath() const =0
Zwraca nazwę pliku, który posłużył do stworzenia obiektu.
Base class for buffers.
Definition: IBuffer.h:71
Bump mapa.
Definition: MeshResources.h:92
unsigned int GetElementSize()
Zwraca rozmiar pojedynczego elementu w buforze.
Definition: MeshResources.h:529
Obiekt opakowujący bufor.Bufor może być zarówno buforem wierzchołków, indeksów jak i stałych...
Definition: MeshResources.h:516
ResourcePtr< TextureObject > m_depthBuffer
Pozwala na dostęp do bufora głębokości. Może być nullptrem.
Definition: MeshResources.h:308
ResourceFormat
Specyfikuje format tekstury bądź innego zasobu.
Definition: GraphicAPIConstants.h:153
ResourceObject(int id)
Definition: ResourceObject.h:44
TextureObject * GetColorBuffer()
Zwraca obiekt bufora kolorów.
Definition: MeshResources.h:314
TextureType TextureType
Typ tekstury (liczba wymiarów, multsampling). Tekstura nie może być inna niż dwuwymiarowa (może być t...
Definition: MeshResources.h:249
bool operator==(TextureObject &object)
Porównuje ze soba dwa obiekty tekstur.
Definition: MeshResources.cpp:398
TextureType
Definiuje typ tekstury.
Definition: GraphicAPIConstants.h:123
Tekstura dla kanału diffuse.
Definition: MeshResources.h:89
uint32 MemorySize
Pamięć zajmowana przez teksturę.
Definition: MeshResources.h:163
Tekstura dla kanału specular.
Definition: MeshResources.h:90
unsigned int m_elementCount
Liczba elementów.
Definition: MeshResources.h:522
DepthStencilFormat DepthStencilFormat
Format bufora głębokości i stencilu.
Definition: MeshResources.h:251
ResourcePtr< TextureObject > m_colorBuffer
Pozwala na dostęp do bufora kolorów dla innych obiektów. Może być nullptrem.
Definition: MeshResources.h:307
virtual std::string GetResourceName() const override
Zwraca nazwę zasobu. To może być nazwa pliku, na podstawie którego stworzono zasób, ale zasadniczo interpretacja jest dowolna.
Definition: MeshResources.h:460
virtual const BufferInfo & GetDescriptor() const =0
Returns buffer descriptor.
uint16 TextureHeight
Wysokość tekstury w pikselach.
Definition: MeshResources.h:148
Pozawala GPU na zapis i odczyt.
bool IsCubeMap
Należy ustawić jeżeli tekstura jest cubemapą.
Definition: MeshResources.h:246
#define WRONG_ID
Definition: MeshResources.h:29
Klasa przechowująca pixel shader.
Definition: MeshResources.h:450
virtual std::string GetResourceName() const override
Zwraca nazwę zasobu. To może być nazwa pliku, na podstawie którego stworzono zasób, ale zasadniczo interpretacja jest dowolna.
Definition: MeshResources.h:502
filesystem::Path FilePath
Ścieżka do pliku z teksturą lub jej nazwa.
Definition: MeshResources.h:164
TextureType TextureType
Typ tekstury (liczba wymiarów, multsampling). Na razie tekstura nie może być inna niż dwuwymiarowa (m...
Definition: MeshResources.h:155
ResourceUsage Usage
Sposób użycia render targetu. Wpływa na optymalizacje ułożenia w pamięci.
Definition: MeshResources.h:156
TextureUse
Meaning of texture indicies.
Definition: MeshResources.h:87
TextureObject * GetStencilBuffer()
Zwraca obiekt bufora stencilu.
Definition: MeshResources.h:316
virtual std::string GetResourceName() const override
Zwraca nazwę zasobu. To może być nazwa pliku, na podstawie którego stworzono zasób, ale zasadniczo interpretacja jest dowolna.
Definition: MeshResources.h:577
uint16 ArraySize
Liczba elementów tablicy.
Definition: MeshResources.h:149
virtual std::string GetResourceName() const override
Zwraca nazwę zasobu. To może być nazwa pliku, na podstawie którego stworzono zasób, ale zasadniczo interpretacja jest dowolna.
Definition: MeshResources.h:439
Klasa przechowująca pixel shader.
Definition: MeshResources.h:408
uint8 NumSamples
Liczba próbek w przypadku stosowania multisamplingu.
Definition: MeshResources.h:247
Tekstura o dowolnym znaczeniu.
Definition: MeshResources.h:94
MipMapFilter MipMapFilter
Tryb filtrowania tekstury. Używany tylko jeżeli ustawiono GenerateMipMaps na true.
Definition: MeshResources.h:158
Struktura używana do tworzenia render targetu.
Definition: MeshResources.h:238
TextureInfo CreateTextureInfo() const
Tworzy strukture TextureInfo wypełnioną danymi zgodnymi z deskryptorem RenderTargetu.
Definition: MeshResources.h:275
uint16 CutOffMipMaps
Definition: MeshResources.h:160
Definition: IRenderTarget.h:10
ResourceFormat ColorBuffFormat
Format bufora kolorów.
Definition: MeshResources.h:250
Klasa przechowująca pixel shader.
Definition: MeshResources.h:471
ResourceUsage
Specyfikuje typ dostępu do pamięci danego zasobu.
Definition: GraphicAPIConstants.h:72
Texture for emmisive channel.
Definition: MeshResources.h:91
Klasa przechowująca tekstury.Klasa bazowa, która będzie używana przez obiekty silnika. Powinny po niej odziedziczyć obiekty konkretnego API graficznego, żeby zaimplementować najważniejsze funkcjonalności.
Definition: MeshResources.h:206
TextureObject * GetDepthBuffer()
Zwraca obiekt bufora głębokości.
Definition: MeshResources.h:315
bool CPURead
Pozwala na odczyt tekstury przez CPU.
Definition: MeshResources.h:243
virtual std::string GetResourceName() const override
Zwraca nazwę zasobu. To może być nazwa pliku, na podstawie którego stworzono zasób, ale zasadniczo interpretacja jest dowolna.
Definition: MeshResources.h:532
Klasa przechowująca compute shader.
Definition: MeshResources.h:492
ResourceUsage Usage
Sposób użycia render targetu. Wpływa na optymalizacje ułożenia w pamięci.
Definition: MeshResources.h:252
uint16 TextureWidth
Szerokość tekstury w pikselach.
Definition: MeshResources.h:147
uint16 SamplesQuality
Jakość próbek przy multisamplingu.
Definition: MeshResources.h:248
bool CPUWrite
Pozwala na zapis tekstury przez CPU.
Definition: MeshResources.h:244
Tekstura przemieszczeń wierzchołków, w przypadku używania teselacji wierzchołków. ...
Definition: MeshResources.h:93
MipMapFilter
Tryby filtrowania tekstur.
Definition: MeshResources.h:118
uint16 TextureHeight
Wysokość tekstury w pikselach.
Definition: MeshResources.h:241
virtual ~RenderTargetObject()
Destruktor kasuje obiekty tekstury głębokości i bufora koloru, jeżeli nie są używane. Jeżeli istnieją odwołania do tych obiektów, to nie są one kasowane, a jedynie usuwa się odwołania pochodzące od RenderTargetObject.
Definition: MeshResources.cpp:441
Struktura przechowująca materiał.
Definition: MeshResources.h:560
bool CPUWrite
Pozwala na zapis tekstury przez CPU.
Definition: MeshResources.h:151
void SetNullMaterial()
Ustawia materiał na wartości domyślne dla silnika.
Definition: MeshResources.cpp:499
uint16 ArraySize
Liczba elementów tablicy.
Definition: MeshResources.h:242
ShaderType
Typ shadera.
Definition: MeshResources.h:369
Tekstura o dowolnym znaczeniu.
Definition: MeshResources.h:95
Klasa dla render targetów.Klasa umożliwia pobranie jednej z tekstur składowych i udostępnienie dla sh...
Definition: MeshResources.h:301
uint16 MipMapLevels
Liczba poziomów mipmap. 1 oznacza tylko teksturę oryginalną.
Definition: MeshResources.h:159
uint16 TextureWidth
Szerokość tekstury w pikselach.
Definition: MeshResources.h:240
unsigned int GetElementCount()
Zwraca liczbę elementów w buforze.
Definition: MeshResources.h:530
unsigned int m_elementSize
Rozmiar elementu.
Definition: MeshResources.h:521
virtual std::string GetResourceName() const override
Zwraca nazwę zasobu. To może być nazwa pliku, na podstawie którego stworzono zasób, ale zasadniczo interpretacja jest dowolna.
Definition: MeshResources.h:222
virtual std::string GetResourceName() const override
Zwraca nazwę zasobu. To może być nazwa pliku, na podstawie którego stworzono zasób, ale zasadniczo interpretacja jest dowolna.
Definition: MeshResources.h:418
Klasa przechowująca vertex shader.
Definition: MeshResources.h:387
Plik zawiera deklarację i definicję klasy ResourceObject służącą do zliczania odwołań do obiektu...
RenderTargetDescriptor()
Ustawia domyślne wartości deskryptora.
Definition: MeshResources.h:262
Klasa ułatwiająca zarządzanie odwołaniami do assetów.Obiekty assetów (np. MaterialObject, TextureObject, VertexShader, PixelShader itp.) wymagają jakiegoś systemu zapewniającego współdzielenie między innymi obiektami.
Definition: ResourceObject.h:30
virtual ~TextureObject()=default
Żeby uniknąć pomyłki, obiekt może byś kasowany tylko przez AssetsManager. Zapewnia to ObjectDeleter...
virtual std::string GetResourceName() const override
Definition: MeshResources.cpp:463
virtual const TextureInfo & GetDescriptor() const =0
Pozwala pobrać deskrytpro tekstury.
bool CPURead
Pozwala na odczyt tekstury przez CPU.
Definition: MeshResources.h:150
ResourcePtr< TextureObject > m_stencilBuffer
Pozwala na dostęp do bufora stencil. Może być nulltrem.
Definition: MeshResources.h:309
virtual MemoryChunk CopyData() const =0
Kopiuje dane z bufora i umieszcza je w zwracanym MemoryChunku.
bool IsCubeMap
Należy ustawić jeżeli tekstura jest cubemapą.
Definition: MeshResources.h:153
Lightmapa.
Definition: MeshResources.h:96
virtual std::string GetResourceName() const override
Zwraca nazwę zasobu. To może być nazwa pliku, na podstawie którego stworzono zasób, ale zasadniczo interpretacja jest dowolna.
Definition: MeshResources.h:397
bool GenerateMipMaps
Automatyczne generowanie mipmap.
Definition: MeshResources.h:154