Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bdbf864934 | |||
| f269caafed | |||
| 18ea938b56 | |||
| 6c14b2a97e | |||
| 54eb3727b0 | |||
| 39e5f7b2dc | |||
| cce43ebc1a | |||
| 2a1f6cd9cf | |||
| 39da2bff27 | |||
| 28de3c716c | |||
| 003f5b14a5 | |||
| a3f215831d | |||
| 16ef09b20b | |||
| b9b5f4bff7 | |||
| 5db1bddd08 | |||
| b366a8c149 | |||
| 659dfed088 | |||
| 8151e9a9a4 | |||
| d6f0528a87 | |||
| 0382708b85 | |||
| d8f9f15d34 | |||
| ffa9d7e607 | |||
| edf481b4d7 |
+1
-1
Submodule assets updated: ed93148764...902cbf2ba6
@@ -0,0 +1,71 @@
|
|||||||
|
#ifndef DDS_h__
|
||||||
|
#define DDS_h__
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
#include "../Common.h"
|
||||||
|
#include "../Core/ResourceManager.h"
|
||||||
|
#include "Image.h"
|
||||||
|
|
||||||
|
// DXT5
|
||||||
|
class DDS : public Image, public Resource
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DDS(std::string path);
|
||||||
|
~DDS();
|
||||||
|
|
||||||
|
void FlipY(unsigned char* data, std::size_t rowBytes, std::size_t totalSize, std::size_t numBlocksWide);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static const uint32_t MagicNumber = 0x20534444; // "DDS "
|
||||||
|
|
||||||
|
struct Header_t
|
||||||
|
{
|
||||||
|
uint32_t Size;
|
||||||
|
uint32_t Flags;
|
||||||
|
uint32_t Height;
|
||||||
|
uint32_t Width;
|
||||||
|
uint32_t PitchOrLinearSize;
|
||||||
|
uint32_t Depth;
|
||||||
|
uint32_t MipMapCount;
|
||||||
|
uint32_t RESERVED1[11];
|
||||||
|
struct PixelFormat_t
|
||||||
|
{
|
||||||
|
uint32_t Size;
|
||||||
|
uint32_t Flags;
|
||||||
|
uint32_t FourCC;
|
||||||
|
uint32_t RGBBitCount;
|
||||||
|
uint32_t RBitMask;
|
||||||
|
uint32_t GBitMask;
|
||||||
|
uint32_t BBitMask;
|
||||||
|
uint32_t ABitMask;
|
||||||
|
} PixelFormat;
|
||||||
|
uint32_t Caps;
|
||||||
|
uint32_t Caps2;
|
||||||
|
uint32_t Caps3;
|
||||||
|
uint32_t Caps4;
|
||||||
|
uint32_t RESERVED2;
|
||||||
|
} m_Header;
|
||||||
|
|
||||||
|
struct Block_t
|
||||||
|
{
|
||||||
|
struct Alpha_t
|
||||||
|
{
|
||||||
|
uint8_t Colors[2];
|
||||||
|
uint8_t Data[6];
|
||||||
|
} Alpha;
|
||||||
|
struct Data_t
|
||||||
|
{
|
||||||
|
uint16_t Colors[2];
|
||||||
|
uint8_t Data[4];
|
||||||
|
} Data;
|
||||||
|
};
|
||||||
|
|
||||||
|
std::size_t m_NumBlocksWide;
|
||||||
|
std::size_t m_NumBlocksHigh;
|
||||||
|
std::size_t m_RowBytes;
|
||||||
|
|
||||||
|
void flipBlock(Block_t* block);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -15,7 +15,10 @@ struct Image
|
|||||||
unsigned int Width = 0;
|
unsigned int Width = 0;
|
||||||
unsigned int Height = 0;
|
unsigned int Height = 0;
|
||||||
ImageFormat Format = ImageFormat::Unknown;
|
ImageFormat Format = ImageFormat::Unknown;
|
||||||
|
unsigned int MipMapLevels = 0;
|
||||||
|
bool Compressed = false;
|
||||||
unsigned char* Data = nullptr;
|
unsigned char* Data = nullptr;
|
||||||
|
std::size_t ByteSize = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#ifndef Texture_h__
|
#ifndef Texture_h__
|
||||||
#define Texture_h__
|
#define Texture_h__
|
||||||
|
|
||||||
|
#include <boost/filesystem.hpp>
|
||||||
#include "../OpenGL.h"
|
#include "../OpenGL.h"
|
||||||
#include "BaseTexture.h"
|
#include "BaseTexture.h"
|
||||||
#include "PNG.h"
|
#include "PNG.h"
|
||||||
|
#include "DDS.h"
|
||||||
|
|
||||||
class Texture : public BaseTexture
|
class Texture : public BaseTexture
|
||||||
{
|
{
|
||||||
@@ -18,8 +20,9 @@ public:
|
|||||||
void Bind(GLenum textureUnit = GL_TEXTURE0);
|
void Bind(GLenum textureUnit = GL_TEXTURE0);
|
||||||
|
|
||||||
GLuint m_Texture = 0;
|
GLuint m_Texture = 0;
|
||||||
unsigned char* Data = nullptr;
|
|
||||||
|
|
||||||
|
enum TextureType : GLint { cInvalid = 0, cDDS = 1, cPNG = 2};
|
||||||
|
TextureType m_Type;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -14,11 +14,6 @@ protected:
|
|||||||
TextureSprite(std::string path);
|
TextureSprite(std::string path);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Bind(GLenum textureUnit = GL_TEXTURE0);
|
|
||||||
|
|
||||||
GLuint m_Texture = 0;
|
|
||||||
unsigned char* Data = nullptr;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ AutoReload=true
|
|||||||
|
|
||||||
[Debug]
|
[Debug]
|
||||||
LogLevel=1
|
LogLevel=1
|
||||||
LoadMap=
|
LoadMap=Schema/Entities/StartMenu.xml
|
||||||
; if true -> Pool allocation is not used when calling Allocate/Free, just use regular dynamic allocation.
|
; if true -> Pool allocation is not used when calling Allocate/Free, just use regular dynamic allocation.
|
||||||
; if false -> Use pool allocation.
|
; if false -> Use pool allocation.
|
||||||
DisableMemoryPool=false
|
DisableMemoryPool=false
|
||||||
RespawnTime = -1.0
|
RespawnTime=-1.0
|
||||||
EditorEnabled=false
|
EditorEnabled=false
|
||||||
OutOfBodyExperience=false
|
OutOfBodyExperience=false
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Height=720
|
|||||||
FOV=45
|
FOV=45
|
||||||
|
|
||||||
[Networking]
|
[Networking]
|
||||||
StartNetwork=false
|
StartNetwork=true
|
||||||
IsServer=false
|
IsServer=false
|
||||||
Name=Bob
|
Name=Bob
|
||||||
Address=127.0.0.1
|
Address=127.0.0.1
|
||||||
@@ -30,7 +30,7 @@ Port=27666
|
|||||||
MaxConnections=8
|
MaxConnections=8
|
||||||
SnapshotInterval=0.05
|
SnapshotInterval=0.05
|
||||||
SendInputIntervalMs=33
|
SendInputIntervalMs=33
|
||||||
PingIntervalMs= 1000
|
PingIntervalMs=1000
|
||||||
TimeoutMs=15000
|
TimeoutMs=15000
|
||||||
|
|
||||||
[Multithreading]
|
[Multithreading]
|
||||||
@@ -43,7 +43,7 @@ AnnouncerVolume=1.0
|
|||||||
Announcer=female
|
Announcer=female
|
||||||
|
|
||||||
[SSAO]
|
[SSAO]
|
||||||
Quality=0
|
Quality=1
|
||||||
|
|
||||||
[SSAO1]
|
[SSAO1]
|
||||||
Radius=1.0
|
Radius=1.0
|
||||||
@@ -88,4 +88,4 @@ NumIterations=4
|
|||||||
NumIterations=6
|
NumIterations=6
|
||||||
|
|
||||||
[MSAA]
|
[MSAA]
|
||||||
Level = 0;
|
Level=2
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[Mouse]
|
[Mouse]
|
||||||
Sensitivity=0.5
|
Sensitivity=0.05
|
||||||
InvertPitch=false
|
InvertPitch=false
|
||||||
|
|
||||||
[Keyboard]
|
[Keyboard]
|
||||||
|
|||||||
Executable
+17
@@ -0,0 +1,17 @@
|
|||||||
|
To start a server
|
||||||
|
|
||||||
|
1. Run "Axyz Server" from the start menu or "Server.bat" in the installation directory (C:\Program Files\Axyz)
|
||||||
|
2. Press F1 to open the editor mode
|
||||||
|
3. Expand the Entities window if it is minimized, by double-clicking it
|
||||||
|
4. Mark StartMenu_Origin and hit Delete twice
|
||||||
|
5. Hit Import and choose CP_Valhalla.xml
|
||||||
|
6. Press F1 again to leave editor mode for an acceptable framerate
|
||||||
|
|
||||||
|
To join a game
|
||||||
|
|
||||||
|
1. Run "Axyz" from the start menu or "Axyz.exe" in the installation directory (C:\Program Files\Axyz)
|
||||||
|
2. Press Play
|
||||||
|
3. Hit the refresh icon if no server is visible
|
||||||
|
4. Click the server you want to join
|
||||||
|
5. Follow on-screen directions
|
||||||
|
6. Enjoy the game :)
|
||||||
+9774
-9774
File diff suppressed because it is too large
Load Diff
+17367
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||||
|
<Entity xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||||
|
|
||||||
|
<Components>
|
||||||
|
<c:SceneLight>
|
||||||
|
<AmbientColor A="1" B="1" G="1" R="1"/>
|
||||||
|
</c:SceneLight>
|
||||||
|
<c:Sprite>
|
||||||
|
<DiffuseTexture>Textures/Core/UnitRaptor.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
|
</c:Sprite>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="0" Y="0" Z="-1.60000002"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
|
||||||
|
<Children/>
|
||||||
|
|
||||||
|
</Entity>
|
||||||
@@ -31,17 +31,8 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Animation>
|
<c:Animation>
|
||||||
<AnimationName>ActivateShieldU</AnimationName>
|
<AnimationName>ActivateShieldU</AnimationName>
|
||||||
<Loop>false</Loop>
|
|
||||||
</c:Animation>
|
|
||||||
<c:Transform/>
|
|
||||||
</Components>
|
|
||||||
<Children/>
|
|
||||||
</Entity>
|
|
||||||
<Entity name="Idle">
|
|
||||||
<Components>
|
|
||||||
<c:Animation>
|
|
||||||
<AnimationName>ShieldFrontU</AnimationName>
|
|
||||||
<Play>true</Play>
|
<Play>true</Play>
|
||||||
|
<Loop>false</Loop>
|
||||||
</c:Animation>
|
</c:Animation>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
@@ -74,16 +65,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Animation>
|
<c:Animation>
|
||||||
<AnimationName>ActivateShieldU</AnimationName>
|
<AnimationName>ActivateShieldU</AnimationName>
|
||||||
<Loop>false</Loop>
|
<Play>true</Play>
|
||||||
</c:Animation>
|
|
||||||
<c:Transform/>
|
|
||||||
</Components>
|
|
||||||
<Children/>
|
|
||||||
</Entity>
|
|
||||||
<Entity name="Idle">
|
|
||||||
<Components>
|
|
||||||
<c:Animation>
|
|
||||||
<AnimationName>ShieldFrontU</AnimationName>
|
|
||||||
<Loop>false</Loop>
|
<Loop>false</Loop>
|
||||||
</c:Animation>
|
</c:Animation>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
|
|||||||
@@ -20,8 +20,8 @@
|
|||||||
</Team>
|
</Team>
|
||||||
</c:Team>
|
</c:Team>
|
||||||
<c:PlayerSpawn>
|
<c:PlayerSpawn>
|
||||||
<AssaultFile>Schema/Entities/PlayerAssaultBlue.xml</AssaultFile>
|
<AssaultFile>Schema/Entities/PlayerAssaultRed.xml</AssaultFile>
|
||||||
<DefenderFile>Schema/Entities/PlayerDefenderBlue.xml</DefenderFile>
|
<DefenderFile>Schema/Entities/PlayerDefenderRed.xml</DefenderFile>
|
||||||
<SniperFile></SniperFile>
|
<SniperFile></SniperFile>
|
||||||
</c:PlayerSpawn>
|
</c:PlayerSpawn>
|
||||||
<c:Spawner>
|
<c:Spawner>
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
<Color A="1" B="1" G="0.254901975" R="0"/>
|
<Color A="1" B="1" G="0.254901975" R="0"/>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="-0.600000024" Y="0" Z="0.549540162"/>
|
<Position X="0.800000012" Y="0" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
<Color A="1" B="1" G="0.254901975" R="0"/>
|
<Color A="1" B="1" G="0.254901975" R="0"/>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.800000012" Y="0" Z="0"/>
|
<Position X="-0.600000024" Y="0" Z="0.549540162"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
|
|||||||
@@ -130,6 +130,66 @@
|
|||||||
</Entity>
|
</Entity>
|
||||||
</Children>
|
</Children>
|
||||||
</Entity>
|
</Entity>
|
||||||
|
<Entity name="Lights">
|
||||||
|
<Components>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children>
|
||||||
|
<Entity name="Light_front">
|
||||||
|
<Components>
|
||||||
|
<c:Model>
|
||||||
|
<Resource>Models/Core/UnitSphere.mesh</Resource>
|
||||||
|
<Visible>false</Visible>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
</c:Model>
|
||||||
|
<c:PointLight>
|
||||||
|
<Color A="1" B="0.588235319" G="0.588235319" R="1"/>
|
||||||
|
</c:PointLight>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="-0.000288648967" Y="0.000489665952" Z="0.0824639797"/>
|
||||||
|
<Scale X="0.0299999993" Y="0.0299999993" Z="0.0299999993"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="Light_Side">
|
||||||
|
<Components>
|
||||||
|
<c:Model>
|
||||||
|
<Resource>Models/Core/UnitSphere.mesh</Resource>
|
||||||
|
<Color A="1" B="1" G="1" R="0"/>
|
||||||
|
<Visible>false</Visible>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
</c:Model>
|
||||||
|
<c:PointLight>
|
||||||
|
<Color A="1" B="0.588235319" G="0.588235319" R="1"/>
|
||||||
|
<Radius>0.40000000596046448</Radius>
|
||||||
|
</c:PointLight>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="-0.0870000049" Y="0.0210000016" Z="0.186000004"/>
|
||||||
|
<Scale X="0.0299999993" Y="0.0299999993" Z="0.0299999993"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="Light_front2">
|
||||||
|
<Components>
|
||||||
|
<c:Model>
|
||||||
|
<Resource>Models/Core/UnitSphere.mesh</Resource>
|
||||||
|
<Visible>false</Visible>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
</c:Model>
|
||||||
|
<c:PointLight>
|
||||||
|
<Color A="1" B="0.588235319" G="0.588235319" R="1"/>
|
||||||
|
</c:PointLight>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="0.000448234321" Y="-0.000760387513" Z="-0.323961914"/>
|
||||||
|
<Scale X="0.0299999993" Y="0.0299999993" Z="0.0299999993"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
</Children>
|
||||||
|
</Entity>
|
||||||
</Children>
|
</Children>
|
||||||
|
|
||||||
</Entity>
|
</Entity>
|
||||||
|
|||||||
@@ -0,0 +1,219 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||||
|
<Entity name="MuzzleFlashBlueSidearm" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||||
|
|
||||||
|
<Components>
|
||||||
|
<c:Lifetime>
|
||||||
|
<Lifetime>0.080000000000000002</Lifetime>
|
||||||
|
</c:Lifetime>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
|
||||||
|
<Children>
|
||||||
|
<Entity name="Level1">
|
||||||
|
<Components>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children>
|
||||||
|
<Entity name="Cone1Outside">
|
||||||
|
<Components>
|
||||||
|
<c:Fade>
|
||||||
|
<FadeTime>0.080000000000000002</FadeTime>
|
||||||
|
</c:Fade>
|
||||||
|
<c:Model>
|
||||||
|
<GlowIntensity>2</GlowIntensity>
|
||||||
|
<Resource>Models/Effects/MuzzleFlash/Red/Cone1Outside.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
<Transparent>true</Transparent>
|
||||||
|
</c:Model>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="Cone1Inside">
|
||||||
|
<Components>
|
||||||
|
<c:Fade>
|
||||||
|
<FadeTime>0.080000000000000002</FadeTime>
|
||||||
|
</c:Fade>
|
||||||
|
<c:Model>
|
||||||
|
<GlowIntensity>2</GlowIntensity>
|
||||||
|
<Resource>Models/Effects/MuzzleFlash/Red/Cone1Inside.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
<Transparent>true</Transparent>
|
||||||
|
</c:Model>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
</Children>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="Level2">
|
||||||
|
<Components>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="0.000134464673" Y="8.11116188e-05" Z="-0.0197895896"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children>
|
||||||
|
<Entity name="Cone2Inside">
|
||||||
|
<Components>
|
||||||
|
<c:Fade>
|
||||||
|
<FadeTime>0.080000000000000002</FadeTime>
|
||||||
|
</c:Fade>
|
||||||
|
<c:Model>
|
||||||
|
<GlowIntensity>2</GlowIntensity>
|
||||||
|
<Resource>Models/Effects/MuzzleFlash/Red/Cone2Inside.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
<Transparent>true</Transparent>
|
||||||
|
</c:Model>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="Cone2Outside">
|
||||||
|
<Components>
|
||||||
|
<c:Fade>
|
||||||
|
<FadeTime>0.080000000000000002</FadeTime>
|
||||||
|
</c:Fade>
|
||||||
|
<c:Model>
|
||||||
|
<GlowIntensity>2</GlowIntensity>
|
||||||
|
<Resource>Models/Effects/MuzzleFlash/Red/Cone2Outside.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
<Transparent>true</Transparent>
|
||||||
|
</c:Model>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
</Children>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="Level3">
|
||||||
|
<Components>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="0.000216802931" Y="0.000130779619" Z="-0.0319075659"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children>
|
||||||
|
<Entity name="PlaneLeft">
|
||||||
|
<Components>
|
||||||
|
<c:Fade>
|
||||||
|
<FadeTime>0.080000000000000002</FadeTime>
|
||||||
|
</c:Fade>
|
||||||
|
<c:Model>
|
||||||
|
<GlowIntensity>2</GlowIntensity>
|
||||||
|
<Resource>Models/Effects/MuzzleFlash/Red/PlaneLeft.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
<Transparent>true</Transparent>
|
||||||
|
</c:Model>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="PlaneRight">
|
||||||
|
<Components>
|
||||||
|
<c:Fade>
|
||||||
|
<FadeTime>0.080000000000000002</FadeTime>
|
||||||
|
</c:Fade>
|
||||||
|
<c:Model>
|
||||||
|
<GlowIntensity>2</GlowIntensity>
|
||||||
|
<Resource>Models/Effects/MuzzleFlash/Red/PlaneRight.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
<Transparent>true</Transparent>
|
||||||
|
</c:Model>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="PlaneUp">
|
||||||
|
<Components>
|
||||||
|
<c:Fade>
|
||||||
|
<FadeTime>0.080000000000000002</FadeTime>
|
||||||
|
</c:Fade>
|
||||||
|
<c:Model>
|
||||||
|
<GlowIntensity>2</GlowIntensity>
|
||||||
|
<Resource>Models/Effects/MuzzleFlash/Red/PlaneUp.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
<Transparent>true</Transparent>
|
||||||
|
</c:Model>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="PlaneDown">
|
||||||
|
<Components>
|
||||||
|
<c:Fade>
|
||||||
|
<FadeTime>0.080000000000000002</FadeTime>
|
||||||
|
</c:Fade>
|
||||||
|
<c:Model>
|
||||||
|
<GlowIntensity>2</GlowIntensity>
|
||||||
|
<Resource>Models/Effects/MuzzleFlash/Red/PlaneDown.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
<Transparent>true</Transparent>
|
||||||
|
</c:Model>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
</Children>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="Lights">
|
||||||
|
<Components>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children>
|
||||||
|
<Entity name="Light_front">
|
||||||
|
<Components>
|
||||||
|
<c:Model>
|
||||||
|
<Resource>Models/Core/UnitSphere.mesh</Resource>
|
||||||
|
<Visible>false</Visible>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
</c:Model>
|
||||||
|
<c:PointLight>
|
||||||
|
<Color A="1" B="0.588235319" G="0.588235319" R="1"/>
|
||||||
|
</c:PointLight>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="-0.000288648967" Y="0.000489665952" Z="0.0824639797"/>
|
||||||
|
<Scale X="0.0299999993" Y="0.0299999993" Z="0.0299999993"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="Light_Side">
|
||||||
|
<Components>
|
||||||
|
<c:Model>
|
||||||
|
<Resource>Models/Core/UnitSphere.mesh</Resource>
|
||||||
|
<Color A="1" B="1" G="1" R="0"/>
|
||||||
|
<Visible>false</Visible>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
</c:Model>
|
||||||
|
<c:PointLight>
|
||||||
|
<Color A="1" B="0.588235319" G="0.588235319" R="1"/>
|
||||||
|
<Radius>0.40000000596046448</Radius>
|
||||||
|
</c:PointLight>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="-0.0870000049" Y="0.0210000016" Z="0.186000004"/>
|
||||||
|
<Scale X="0.0299999993" Y="0.0299999993" Z="0.0299999993"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="Light_front2">
|
||||||
|
<Components>
|
||||||
|
<c:Model>
|
||||||
|
<Resource>Models/Core/UnitSphere.mesh</Resource>
|
||||||
|
<Visible>false</Visible>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
|
</c:Model>
|
||||||
|
<c:PointLight>
|
||||||
|
<Color A="1" B="0.588235319" G="0.588235319" R="1"/>
|
||||||
|
</c:PointLight>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="0.000448234321" Y="-0.000760387513" Z="-0.323961914"/>
|
||||||
|
<Scale X="0.0299999993" Y="0.0299999993" Z="0.0299999993"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
</Children>
|
||||||
|
</Entity>
|
||||||
|
</Children>
|
||||||
|
|
||||||
|
</Entity>
|
||||||
@@ -435,7 +435,7 @@
|
|||||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||||
<GlowMap></GlowMap>
|
<GlowMap></GlowMap>
|
||||||
<DiffuseTexture>Textures/Icons/Boosts/Assault-01.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Icons/Boosts/Assault-01.png</DiffuseTexture>
|
||||||
<Color A="0.392156869" B="0.352941185" G="0.196078435" R="0"/>
|
<Color A="0.392156869" B="0.196078435" G="0.196078435" R="0.352941185"/>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.0250000004" Y="0.0650000051" Z="0"/>
|
<Position X="0.0250000004" Y="0.0650000051" Z="0"/>
|
||||||
@@ -455,7 +455,7 @@
|
|||||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||||
<GlowMap></GlowMap>
|
<GlowMap></GlowMap>
|
||||||
<DiffuseTexture>Textures/Icons/Boosts/Defender-01.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Icons/Boosts/Defender-01.png</DiffuseTexture>
|
||||||
<Color A="0.392156869" B="0.352941185" G="0.196078435" R="0"/>
|
<Color A="0.392156869" B="0.196078435" G="0.196078435" R="0.352941185"/>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.0240000002" Y="0.104000002" Z="0"/>
|
<Position X="0.0240000002" Y="0.104000002" Z="0"/>
|
||||||
@@ -475,7 +475,7 @@
|
|||||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||||
<GlowMap></GlowMap>
|
<GlowMap></GlowMap>
|
||||||
<DiffuseTexture>Textures/Icons/Boosts/Sniper-01.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Icons/Boosts/Sniper-01.png</DiffuseTexture>
|
||||||
<Color A="0.392156869" B="0.352941185" G="0.196078435" R="0"/>
|
<Color A="0.392156869" B="0.196078435" G="0.196078435" R="0.352941185"/>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.0240000002" Y="0.145000011" Z="0"/>
|
<Position X="0.0240000002" Y="0.145000011" Z="0"/>
|
||||||
@@ -909,10 +909,10 @@
|
|||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
<Entity name="DashRight">
|
<Entity name="DashLeft">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Animation>
|
<c:Animation>
|
||||||
<AnimationName>DashRightF</AnimationName>
|
<AnimationName>DashLeftF</AnimationName>
|
||||||
<Time>1</Time>
|
<Time>1</Time>
|
||||||
<Speed>1.7999999523162842</Speed>
|
<Speed>1.7999999523162842</Speed>
|
||||||
<Loop>false</Loop>
|
<Loop>false</Loop>
|
||||||
@@ -921,10 +921,10 @@
|
|||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
</Entity>
|
</Entity>
|
||||||
<Entity name="DashLeft">
|
<Entity name="DashRight">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Animation>
|
<c:Animation>
|
||||||
<AnimationName>DashLeftF</AnimationName>
|
<AnimationName>DashRightF</AnimationName>
|
||||||
<Time>1</Time>
|
<Time>1</Time>
|
||||||
<Speed>1.7999999523162842</Speed>
|
<Speed>1.7999999523162842</Speed>
|
||||||
<Loop>false</Loop>
|
<Loop>false</Loop>
|
||||||
|
|||||||
@@ -472,7 +472,7 @@
|
|||||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||||
<GlowMap></GlowMap>
|
<GlowMap></GlowMap>
|
||||||
<DiffuseTexture>Textures/Icons/Boosts/Assault-01.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Icons/Boosts/Assault-01.png</DiffuseTexture>
|
||||||
<Color A="0.392156869" B="0.352941185" G="0.196078435" R="0"/>
|
<Color A="0.392156869" B="0.196078435" G="0.196078435" R="0.352941185"/>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.0250000004" Y="0.0650000051" Z="0"/>
|
<Position X="0.0250000004" Y="0.0650000051" Z="0"/>
|
||||||
@@ -492,7 +492,7 @@
|
|||||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||||
<GlowMap></GlowMap>
|
<GlowMap></GlowMap>
|
||||||
<DiffuseTexture>Textures/Icons/Boosts/Defender-01.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Icons/Boosts/Defender-01.png</DiffuseTexture>
|
||||||
<Color A="0.392156869" B="0.352941185" G="0.196078435" R="0"/>
|
<Color A="0.392156869" B="0.196078435" G="0.196078435" R="0.352941185"/>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.0240000002" Y="0.104000002" Z="0"/>
|
<Position X="0.0240000002" Y="0.104000002" Z="0"/>
|
||||||
@@ -512,7 +512,7 @@
|
|||||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||||
<GlowMap></GlowMap>
|
<GlowMap></GlowMap>
|
||||||
<DiffuseTexture>Textures/Icons/Boosts/Sniper-01.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Icons/Boosts/Sniper-01.png</DiffuseTexture>
|
||||||
<Color A="0.392156869" B="0.352941185" G="0.196078435" R="0"/>
|
<Color A="0.392156869" B="0.196078435" G="0.196078435" R="0.352941185"/>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.0240000002" Y="0.145000011" Z="0"/>
|
<Position X="0.0240000002" Y="0.145000011" Z="0"/>
|
||||||
@@ -890,40 +890,6 @@
|
|||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
<Entity name="ActionBlend">
|
|
||||||
<Components>
|
|
||||||
<c:Blend>
|
|
||||||
<Pose1>Fire</Pose1>
|
|
||||||
<Pose2>Reload</Pose2>
|
|
||||||
<Weight>0</Weight>
|
|
||||||
</c:Blend>
|
|
||||||
<c:Transform/>
|
|
||||||
</Components>
|
|
||||||
<Children>
|
|
||||||
<Entity name="Reload">
|
|
||||||
<Components>
|
|
||||||
<c:Animation>
|
|
||||||
<AnimationName>ShootgunReloadU</AnimationName>
|
|
||||||
<Time>0.14583822250136791</Time>
|
|
||||||
<Speed>0.5</Speed>
|
|
||||||
</c:Animation>
|
|
||||||
<c:Transform/>
|
|
||||||
</Components>
|
|
||||||
<Children/>
|
|
||||||
</Entity>
|
|
||||||
<Entity name="Fire">
|
|
||||||
<Components>
|
|
||||||
<c:Animation>
|
|
||||||
<AnimationName>ShootRifleU</AnimationName>
|
|
||||||
<Time>1</Time>
|
|
||||||
<Loop>false</Loop>
|
|
||||||
</c:Animation>
|
|
||||||
<c:Transform/>
|
|
||||||
</Components>
|
|
||||||
<Children/>
|
|
||||||
</Entity>
|
|
||||||
</Children>
|
|
||||||
</Entity>
|
|
||||||
<Entity name="ShieldBlend">
|
<Entity name="ShieldBlend">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Blend>
|
<c:Blend>
|
||||||
@@ -959,6 +925,40 @@
|
|||||||
</Entity>
|
</Entity>
|
||||||
</Children>
|
</Children>
|
||||||
</Entity>
|
</Entity>
|
||||||
|
<Entity name="ActionBlend">
|
||||||
|
<Components>
|
||||||
|
<c:Blend>
|
||||||
|
<Pose1>Fire</Pose1>
|
||||||
|
<Pose2>Reload</Pose2>
|
||||||
|
<Weight>0</Weight>
|
||||||
|
</c:Blend>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children>
|
||||||
|
<Entity name="Reload">
|
||||||
|
<Components>
|
||||||
|
<c:Animation>
|
||||||
|
<AnimationName>ShootgunReloadU</AnimationName>
|
||||||
|
<Time>0.14583822250136791</Time>
|
||||||
|
<Speed>0.5</Speed>
|
||||||
|
</c:Animation>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="Fire">
|
||||||
|
<Components>
|
||||||
|
<c:Animation>
|
||||||
|
<AnimationName>ShootRifleU</AnimationName>
|
||||||
|
<Time>1</Time>
|
||||||
|
<Loop>false</Loop>
|
||||||
|
</c:Animation>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
</Children>
|
||||||
|
</Entity>
|
||||||
</Children>
|
</Children>
|
||||||
</Entity>
|
</Entity>
|
||||||
<Entity name="IdleDefender">
|
<Entity name="IdleDefender">
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||||
|
<Entity name="SidearmWeapon" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||||
|
|
||||||
|
<Components>
|
||||||
|
<c:Shielded/>
|
||||||
|
<c:Model>
|
||||||
|
<Resource>Models/Weapons/Red/SecondaryWeaponRed.mesh</Resource>
|
||||||
|
</c:Model>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
|
||||||
|
<Children>
|
||||||
|
<Entity name="Muzzle">
|
||||||
|
<Components>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="-0.0169804785" Y="-0.0188358482" Z="-0.222064406"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children>
|
||||||
|
<Entity name="WeaponMuzzleRay">
|
||||||
|
<Components>
|
||||||
|
<c:Spawner>
|
||||||
|
<EntityFile>Schema/Entities/RaySideArmRed.xml</EntityFile>
|
||||||
|
</c:Spawner>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="0" Y="0.125075191" Z="-0.206788138"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
<Entity name="WeaponMuzzleFlash">
|
||||||
|
<Components>
|
||||||
|
<c:Spawner>
|
||||||
|
<EntityFile>Schema/Entities/MuzzleFlashSideArmRed.xml</EntityFile>
|
||||||
|
</c:Spawner>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="0.0240342002" Y="0.116005458" Z="-0.0419839472"/>
|
||||||
|
<Scale X="0.5" Y="0.5" Z="0.5"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
</Children>
|
||||||
|
</Entity>
|
||||||
|
</Children>
|
||||||
|
|
||||||
|
</Entity>
|
||||||
+14644
-6050
File diff suppressed because it is too large
Load Diff
@@ -50,21 +50,26 @@ Source: "..\..\bin\Schema\*"; DestDir: "{app}\Schema\"; Flags: ignoreversion cre
|
|||||||
Source: "..\..\bin\Shaders\*"; DestDir: "{app}\Shaders\"; Flags: ignoreversion createallsubdirs recursesubdirs
|
Source: "..\..\bin\Shaders\*"; DestDir: "{app}\Shaders\"; Flags: ignoreversion createallsubdirs recursesubdirs
|
||||||
Source: "..\..\bin\Textures\*"; DestDir: "{app}\Textures\"; Flags: ignoreversion createallsubdirs recursesubdirs
|
Source: "..\..\bin\Textures\*"; DestDir: "{app}\Textures\"; Flags: ignoreversion createallsubdirs recursesubdirs
|
||||||
Source: "..\..\bin\assimp.dll"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\assimp.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\DefaultConfig.ini"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\resources\DefaultConfig.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\DefaultInput.ini"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\resources\DefaultInput.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\glew32.dll"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\glew32.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\glfw3.dll"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\glfw3.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
|
Source: "..\..\bin\OpenAL32.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\imgui.ini"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\imgui.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\Input.ini"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\Input.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\libpng16.dll"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\libpng16.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\Axyz.exe"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\Axyz.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
|
Source: "..\..\bin\Server.bat"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\xerces-c_3_1.dll"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\xerces-c_3_1.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\zlib.dll"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\zlib.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
|
Source: "..\..\resources\README.txt"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\deps\redist\VC_redist.x64.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
|
Source: "..\..\deps\redist\VC_redist.x64.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
|
||||||
|
|
||||||
[Icons]
|
[Icons]
|
||||||
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
||||||
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
||||||
|
Name: "{commonprograms}\{#MyAppName} Server"; Filename: "{app}\{#MyAppExeName}"; Parameters: "--server"
|
||||||
|
Name: "{commondesktop}\{#MyAppName} Server"; Filename: "{app}\{#MyAppExeName}"; Parameters: "--server"; Tasks: desktopicon
|
||||||
|
|
||||||
[INI]
|
[INI]
|
||||||
Filename: "{app}\Config.ini"; Section: "Networking"; Key: "Name"; String: "{%USERNAME}"; Flags: createkeyifdoesntexist
|
Filename: "{app}\Config.ini"; Section: "Networking"; Key: "Name"; String: "{%USERNAME}"; Flags: createkeyifdoesntexist
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
#version 430
|
#version 430
|
||||||
|
|
||||||
|
#include "Shaders/Util/CommonNormalFunc.glsl"
|
||||||
|
|
||||||
#define MIN_AMBIENT_LIGHT 0.3
|
#define MIN_AMBIENT_LIGHT 0.3
|
||||||
#define MAX_SPLITS 4
|
#define MAX_SPLITS 4
|
||||||
|
|
||||||
uniform mat4 M;
|
uniform mat4 M;
|
||||||
uniform mat4 V;
|
uniform mat4 V;
|
||||||
uniform mat4 P;
|
uniform mat4 P;
|
||||||
@@ -16,6 +19,7 @@ uniform vec3 CameraPosition;
|
|||||||
uniform int SSAOQuality;
|
uniform int SSAOQuality;
|
||||||
uniform float FarDistance[MAX_SPLITS];
|
uniform float FarDistance[MAX_SPLITS];
|
||||||
|
|
||||||
|
uniform int NormalTextureType;
|
||||||
uniform vec2 DiffuseUVRepeat;
|
uniform vec2 DiffuseUVRepeat;
|
||||||
uniform vec2 NormalUVRepeat;
|
uniform vec2 NormalUVRepeat;
|
||||||
uniform vec2 SpecularUVRepeat;
|
uniform vec2 SpecularUVRepeat;
|
||||||
@@ -139,13 +143,6 @@ LightResult CalcDirectionalLightSource(vec4 direction, vec4 color, float intensi
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 CalcNormalMappedValue(vec3 normal, vec3 tangent, vec3 bitangent, vec2 textureCoordinate, sampler2D normalMap)
|
|
||||||
{
|
|
||||||
mat3 TBN = mat3(tangent, bitangent, normal);
|
|
||||||
vec3 NormalMap = texture(normalMap, textureCoordinate).xyz * 2.0 - vec3(1.0);
|
|
||||||
return vec4(TBN * normalize(NormalMap), 0.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns a "random" value.
|
// Returns a "random" value.
|
||||||
float Random(vec3 seed, int i)
|
float Random(vec3 seed, int i)
|
||||||
{
|
{
|
||||||
@@ -301,7 +298,7 @@ void main()
|
|||||||
vec4 diffuseTexel = texture2D(DiffuseTexture, Input.TextureCoordinate * DiffuseUVRepeat);
|
vec4 diffuseTexel = texture2D(DiffuseTexture, Input.TextureCoordinate * DiffuseUVRepeat);
|
||||||
vec4 glowTexel = texture2D(GlowMapTexture, Input.TextureCoordinate * GlowUVRepeat);
|
vec4 glowTexel = texture2D(GlowMapTexture, Input.TextureCoordinate * GlowUVRepeat);
|
||||||
vec4 specularTexel = texture2D(SpecularMapTexture, Input.TextureCoordinate * SpecularUVRepeat);
|
vec4 specularTexel = texture2D(SpecularMapTexture, Input.TextureCoordinate * SpecularUVRepeat);
|
||||||
vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate * NormalUVRepeat, NormalMapTexture);
|
vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate * NormalUVRepeat, NormalMapTexture, NormalTextureType);
|
||||||
normal = normalize(normal);
|
normal = normalize(normal);
|
||||||
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
||||||
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#version 430
|
#version 430
|
||||||
|
|
||||||
|
#include "Shaders/Util/CommonNormalFunc.glsl"
|
||||||
|
|
||||||
#define MIN_AMBIENT_LIGHT 0.3
|
#define MIN_AMBIENT_LIGHT 0.3
|
||||||
#define MAX_SPLITS 4
|
#define MAX_SPLITS 4
|
||||||
|
|
||||||
@@ -17,6 +19,7 @@ uniform float GlowIntensity;
|
|||||||
uniform vec3 CameraPosition;
|
uniform vec3 CameraPosition;
|
||||||
uniform int SSAOQuality;
|
uniform int SSAOQuality;
|
||||||
|
|
||||||
|
uniform int NormalTextureType;
|
||||||
uniform vec2 DiffuseUVRepeat;
|
uniform vec2 DiffuseUVRepeat;
|
||||||
uniform vec2 NormalUVRepeat;
|
uniform vec2 NormalUVRepeat;
|
||||||
uniform vec2 SpecularUVRepeat;
|
uniform vec2 SpecularUVRepeat;
|
||||||
@@ -122,13 +125,6 @@ LightResult CalcDirectionalLightSource(vec4 direction, vec4 color, float intensi
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 CalcNormalMappedValue(vec3 normal, vec3 tangent, vec3 bitangent, vec2 textureCoordinate, sampler2D normalMap)
|
|
||||||
{
|
|
||||||
mat3 TBN = mat3(tangent, bitangent, normal);
|
|
||||||
vec3 NormalMap = texture(normalMap, textureCoordinate).xyz * 2.0 - vec3(1.0);
|
|
||||||
return vec4(TBN * normalize(NormalMap), 0.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float shieldDepthValue = texelFetch(ShieldBuffer, ivec2(gl_FragCoord.xy), 0).r;
|
float shieldDepthValue = texelFetch(ShieldBuffer, ivec2(gl_FragCoord.xy), 0).r;
|
||||||
@@ -142,7 +138,7 @@ void main()
|
|||||||
vec4 diffuseTexel = texture2D(DiffuseTexture, Input.TextureCoordinate * DiffuseUVRepeat);
|
vec4 diffuseTexel = texture2D(DiffuseTexture, Input.TextureCoordinate * DiffuseUVRepeat);
|
||||||
vec4 glowTexel = texture2D(GlowMapTexture, Input.TextureCoordinate * GlowUVRepeat);
|
vec4 glowTexel = texture2D(GlowMapTexture, Input.TextureCoordinate * GlowUVRepeat);
|
||||||
vec4 specularTexel = texture2D(SpecularMapTexture, Input.TextureCoordinate * SpecularUVRepeat);
|
vec4 specularTexel = texture2D(SpecularMapTexture, Input.TextureCoordinate * SpecularUVRepeat);
|
||||||
vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate * NormalUVRepeat, NormalMapTexture);
|
vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate * NormalUVRepeat, NormalMapTexture, NormalTextureType);
|
||||||
normal = normalize(normal);
|
normal = normalize(normal);
|
||||||
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
||||||
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#version 430
|
#version 430
|
||||||
|
|
||||||
|
#include "Shaders/Util/CommonNormalFunc.glsl"
|
||||||
|
|
||||||
#define MIN_AMBIENT_LIGHT 0.3
|
#define MIN_AMBIENT_LIGHT 0.3
|
||||||
#define MAX_SPLITS 4
|
#define MAX_SPLITS 4
|
||||||
uniform mat4 M;
|
uniform mat4 M;
|
||||||
@@ -18,6 +20,10 @@ layout (binding = 0) uniform sampler2D AOTexture;
|
|||||||
layout (binding = 30) uniform sampler2DArrayShadow DepthMap;
|
layout (binding = 30) uniform sampler2DArrayShadow DepthMap;
|
||||||
|
|
||||||
//Get bineded at the same time as the textures
|
//Get bineded at the same time as the textures
|
||||||
|
uniform int NormalTextureType1;
|
||||||
|
uniform int NormalTextureType2;
|
||||||
|
uniform int NormalTextureType3;
|
||||||
|
|
||||||
uniform vec2 DiffuseUVRepeat1;
|
uniform vec2 DiffuseUVRepeat1;
|
||||||
uniform vec2 DiffuseUVRepeat2;
|
uniform vec2 DiffuseUVRepeat2;
|
||||||
uniform vec2 DiffuseUVRepeat3;
|
uniform vec2 DiffuseUVRepeat3;
|
||||||
@@ -181,11 +187,12 @@ vec4 CalcBlendedTexel(vec4 blendValue, sampler2D R, sampler2D G, sampler2D B,
|
|||||||
}
|
}
|
||||||
|
|
||||||
vec4 CalcBlendedNormal(vec4 blendValue, sampler2D R, sampler2D G, sampler2D B,
|
vec4 CalcBlendedNormal(vec4 blendValue, sampler2D R, sampler2D G, sampler2D B,
|
||||||
vec2 R_TileValues, vec2 G_TileValues, vec2 B_TileValues){
|
vec2 R_TileValues, vec2 G_TileValues, vec2 B_TileValues,
|
||||||
|
int R_TextureType, int G_TextureType, int B_TextureType) {
|
||||||
mat3 TBN = mat3(Input.Tangent, Input.BiTangent, Input.Normal);
|
mat3 TBN = mat3(Input.Tangent, Input.BiTangent, Input.Normal);
|
||||||
vec3 R_Channel = texture(R, Input.TextureCoordinate * R_TileValues).xyz * 2.0 - vec3(1.0);
|
vec3 R_Channel = NormalMapValue(Input.TextureCoordinate * R_TileValues, R, R_TextureType);
|
||||||
vec3 G_Channel = texture(G, Input.TextureCoordinate * G_TileValues).xyz * 2.0 - vec3(1.0);
|
vec3 G_Channel = NormalMapValue(Input.TextureCoordinate * G_TileValues, G, G_TextureType);
|
||||||
vec3 B_Channel = texture(B, Input.TextureCoordinate * B_TileValues).xyz * 2.0 - vec3(1.0);
|
vec3 B_Channel = NormalMapValue(Input.TextureCoordinate * B_TileValues, B, B_TextureType);
|
||||||
|
|
||||||
float total = blendValue.r + blendValue.g + blendValue.b + blendValue.a;
|
float total = blendValue.r + blendValue.g + blendValue.b + blendValue.a;
|
||||||
float totalDiv = 1 / total;
|
float totalDiv = 1 / total;
|
||||||
@@ -363,7 +370,8 @@ void main()
|
|||||||
SpecularUVRepeat1, SpecularUVRepeat2, SpecularUVRepeat3);
|
SpecularUVRepeat1, SpecularUVRepeat2, SpecularUVRepeat3);
|
||||||
//vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate, SplatMapTexture);
|
//vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate, SplatMapTexture);
|
||||||
vec4 normal = V * CalcBlendedNormal(splatTexel, NormalMapTexture1, NormalMapTexture2, NormalMapTexture3,
|
vec4 normal = V * CalcBlendedNormal(splatTexel, NormalMapTexture1, NormalMapTexture2, NormalMapTexture3,
|
||||||
NormalUVRepeat1, NormalUVRepeat2, NormalUVRepeat3);
|
NormalUVRepeat1, NormalUVRepeat2, NormalUVRepeat3,
|
||||||
|
NormalTextureType1, NormalTextureType2, NormalTextureType3);
|
||||||
normal = normalize(normal);
|
normal = normalize(normal);
|
||||||
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
||||||
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#version 430
|
#version 430
|
||||||
|
|
||||||
|
#include "Shaders/Util/CommonNormalFunc.glsl"
|
||||||
|
|
||||||
#define MIN_AMBIENT_LIGHT 0.3
|
#define MIN_AMBIENT_LIGHT 0.3
|
||||||
#define MAX_SPLITS 4
|
#define MAX_SPLITS 4
|
||||||
uniform mat4 M;
|
uniform mat4 M;
|
||||||
@@ -14,6 +16,10 @@ uniform vec4 AmbientColor;
|
|||||||
uniform int SSAOQuality;
|
uniform int SSAOQuality;
|
||||||
|
|
||||||
//Get bineded at the same time as the textures
|
//Get bineded at the same time as the textures
|
||||||
|
uniform int NormalTextureType1;
|
||||||
|
uniform int NormalTextureType2;
|
||||||
|
uniform int NormalTextureType3;
|
||||||
|
|
||||||
uniform vec2 DiffuseUVRepeat1;
|
uniform vec2 DiffuseUVRepeat1;
|
||||||
uniform vec2 DiffuseUVRepeat2;
|
uniform vec2 DiffuseUVRepeat2;
|
||||||
uniform vec2 DiffuseUVRepeat3;
|
uniform vec2 DiffuseUVRepeat3;
|
||||||
@@ -160,11 +166,12 @@ vec4 CalcBlendedTexel(vec4 blendValue, sampler2D R, sampler2D G, sampler2D B,
|
|||||||
}
|
}
|
||||||
|
|
||||||
vec4 CalcBlendedNormal(vec4 blendValue, sampler2D R, sampler2D G, sampler2D B,
|
vec4 CalcBlendedNormal(vec4 blendValue, sampler2D R, sampler2D G, sampler2D B,
|
||||||
vec2 R_TileValues, vec2 G_TileValues, vec2 B_TileValues){
|
vec2 R_TileValues, vec2 G_TileValues, vec2 B_TileValues,
|
||||||
|
int R_TextureType, int G_TextureType, int B_TextureType) {
|
||||||
mat3 TBN = mat3(Input.Tangent, Input.BiTangent, Input.Normal);
|
mat3 TBN = mat3(Input.Tangent, Input.BiTangent, Input.Normal);
|
||||||
vec3 R_Channel = texture(R, Input.TextureCoordinate * R_TileValues).xyz * 2.0 - vec3(1.0);
|
vec3 R_Channel = NormalMapValue(Input.TextureCoordinate * R_TileValues, R, R_TextureType);
|
||||||
vec3 G_Channel = texture(G, Input.TextureCoordinate * G_TileValues).xyz * 2.0 - vec3(1.0);
|
vec3 G_Channel = NormalMapValue(Input.TextureCoordinate * G_TileValues, G, G_TextureType);
|
||||||
vec3 B_Channel = texture(B, Input.TextureCoordinate * B_TileValues).xyz * 2.0 - vec3(1.0);
|
vec3 B_Channel = NormalMapValue(Input.TextureCoordinate * B_TileValues, B, B_TextureType);
|
||||||
|
|
||||||
float total = blendValue.r + blendValue.g + blendValue.b + blendValue.a;
|
float total = blendValue.r + blendValue.g + blendValue.b + blendValue.a;
|
||||||
float totalDiv = 1 / total;
|
float totalDiv = 1 / total;
|
||||||
@@ -194,7 +201,8 @@ void main()
|
|||||||
SpecularUVRepeat1, SpecularUVRepeat2, SpecularUVRepeat3);
|
SpecularUVRepeat1, SpecularUVRepeat2, SpecularUVRepeat3);
|
||||||
//vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate, SplatMapTexture);
|
//vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate, SplatMapTexture);
|
||||||
vec4 normal = V * CalcBlendedNormal(splatTexel, NormalMapTexture1, NormalMapTexture2, NormalMapTexture3,
|
vec4 normal = V * CalcBlendedNormal(splatTexel, NormalMapTexture1, NormalMapTexture2, NormalMapTexture3,
|
||||||
NormalUVRepeat1, NormalUVRepeat2, NormalUVRepeat3);
|
NormalUVRepeat1, NormalUVRepeat2, NormalUVRepeat3,
|
||||||
|
NormalTextureType1, NormalTextureType2, NormalTextureType3);
|
||||||
normal = normalize(normal);
|
normal = normalize(normal);
|
||||||
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
||||||
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
||||||
|
|||||||
Binary file not shown.
@@ -747,7 +747,7 @@ void Server::resetMap()
|
|||||||
reliableBroadcast(removeMap);
|
reliableBroadcast(removeMap);
|
||||||
removeWorld();
|
removeWorld();
|
||||||
// Hardcoded for now.
|
// Hardcoded for now.
|
||||||
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/CP_Rocky2.xml");
|
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/CP_Valhalla.xml");
|
||||||
entityFile->MergeInto(m_World);
|
entityFile->MergeInto(m_World);
|
||||||
Packet newWorld(MessageType::Snapshot);
|
Packet newWorld(MessageType::Snapshot);
|
||||||
createWorldSnapshot(newWorld);
|
createWorldSnapshot(newWorld);
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ void CubeMapPass::LoadTextures(std::string cubemapName)
|
|||||||
if (m_PreviusCubeMapTexture != cubemapName) {
|
if (m_PreviusCubeMapTexture != cubemapName) {
|
||||||
m_CubeMapTextures.clear();
|
m_CubeMapTextures.clear();
|
||||||
for (int i = 0; i < 6; i++) {
|
for (int i = 0; i < 6; i++) {
|
||||||
std::string path = "Textures/Test/CubeMap/" + cubemapName + "/CubeMapTest0" + std::to_string(i) + ".png";
|
std::string path = "Textures/Test/CubeMap/" + cubemapName + "/CubeMapTest0" + std::to_string(i) + ".dds";
|
||||||
m_CubeMapTextures.push_back(path);
|
m_CubeMapTextures.push_back(path);
|
||||||
}
|
}
|
||||||
GenerateCubeMapTexture();
|
GenerateCubeMapTexture();
|
||||||
@@ -21,15 +21,22 @@ void CubeMapPass::LoadTextures(std::string cubemapName)
|
|||||||
|
|
||||||
void CubeMapPass::GenerateCubeMapTexture()
|
void CubeMapPass::GenerateCubeMapTexture()
|
||||||
{
|
{
|
||||||
if (m_CubeMapTexture == -1) {
|
if (m_CubeMapTexture == 0) {
|
||||||
glGenTextures(1, &m_CubeMapTexture);
|
glGenTextures(1, &m_CubeMapTexture);
|
||||||
}
|
}
|
||||||
glBindTexture(GL_TEXTURE_CUBE_MAP, m_CubeMapTexture);
|
glBindTexture(GL_TEXTURE_CUBE_MAP, m_CubeMapTexture);
|
||||||
|
|
||||||
for (int i = 0; i < 6; i++) {
|
for (int i = 0; i < 6; i++) {
|
||||||
PNG* img = ResourceManager::Load<PNG>(m_CubeMapTextures[i]);
|
DDS* img = ResourceManager::Load<DDS>(m_CubeMapTextures[i]);
|
||||||
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGBA32F, img->Width, img->Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, img->Data);
|
std::size_t bpe = 16;
|
||||||
ResourceManager::Release("PNG", m_CubeMapTextures[i]);
|
std::size_t numBlocksWide = std::max<std::size_t>(1, (img->Width + 3) / 4);
|
||||||
|
std::size_t numBlocksHigh = std::max<std::size_t>(1, (img->Height + 3) / 4);
|
||||||
|
std::size_t rowBytes = numBlocksWide * bpe;
|
||||||
|
std::size_t numRows = numBlocksHigh;
|
||||||
|
std::size_t numBytes = rowBytes * numBlocksHigh;
|
||||||
|
glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, img->Width, img->Height, 0, numBytes, img->Data);
|
||||||
|
//glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGBA32F, img->Width, img->Height, 0, GL_COMPRESSED_RGBA, GL_UNSIGNED_BYTE, img->Data);
|
||||||
|
ResourceManager::Release("DDS", m_CubeMapTextures[i]);
|
||||||
}
|
}
|
||||||
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
|||||||
@@ -0,0 +1,121 @@
|
|||||||
|
#include "Rendering/DDS.h"
|
||||||
|
|
||||||
|
DDS::DDS(std::string path)
|
||||||
|
{
|
||||||
|
std::ifstream in(path.c_str(), std::ios_base::binary | std::ios_base::ate);
|
||||||
|
if (!in.is_open()) {
|
||||||
|
throw Resource::FailedLoadingException("Failed to open file.");
|
||||||
|
}
|
||||||
|
unsigned int fileSize = static_cast<unsigned int>(in.tellg());
|
||||||
|
in.seekg(0, std::ios_base::beg);
|
||||||
|
|
||||||
|
if (fileSize < sizeof(MagicNumber) + sizeof(DDS::Header_t)) {
|
||||||
|
throw Resource::FailedLoadingException("Invalid DDS file; not even big enough to contain the DDS header!");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read magic number
|
||||||
|
uint32_t magicNumber;
|
||||||
|
in.read(reinterpret_cast<char*>(&magicNumber), sizeof(MagicNumber));
|
||||||
|
if (magicNumber != DDS::MagicNumber) {
|
||||||
|
throw Resource::FailedLoadingException("Invalid DDS file; magic number doesn't match.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read header
|
||||||
|
in.read(reinterpret_cast<char*>(&m_Header), sizeof(DDS::Header_t));
|
||||||
|
|
||||||
|
// Validate header
|
||||||
|
if (m_Header.Size != sizeof(DDS::Header_t) || m_Header.PixelFormat.Size != sizeof(DDS::Header_t::PixelFormat_t)) {
|
||||||
|
throw Resource::FailedLoadingException("Corrupt DDS file; header size doesn't match!");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure it's DC3 (DXT5)
|
||||||
|
char format[5];
|
||||||
|
memcpy(&format, &m_Header.PixelFormat.FourCC, 4);
|
||||||
|
format[4] = '\0';
|
||||||
|
if (strcmp(format, "DXT5")) {
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << "Invalid DDS file; Unsupported compression format \"" << format << "\"";
|
||||||
|
throw Resource::FailedLoadingException(ss.str().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
this->Width = m_Header.Width;
|
||||||
|
this->Height = m_Header.Height;
|
||||||
|
this->Format = Image::ImageFormat::RGBA;
|
||||||
|
this->Compressed = true;
|
||||||
|
if (m_Header.MipMapCount != 0) {
|
||||||
|
this->MipMapLevels = m_Header.MipMapCount - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read data
|
||||||
|
std::size_t dataSize = fileSize - sizeof(MagicNumber) - sizeof(DDS::Header_t);
|
||||||
|
this->Data = new unsigned char[dataSize];
|
||||||
|
this->ByteSize = dataSize;
|
||||||
|
in.read(reinterpret_cast<char*>(this->Data), dataSize);
|
||||||
|
|
||||||
|
// Flip!
|
||||||
|
unsigned int w = this->Width;
|
||||||
|
unsigned int h = this->Height;
|
||||||
|
unsigned char* mipMapData = this->Data;
|
||||||
|
for (unsigned int i = 0; i < this->MipMapLevels; ++i) {
|
||||||
|
std::size_t bpe = 16;
|
||||||
|
std::size_t numBlocksWide = std::max<std::size_t>(1, (w + 3) / 4);
|
||||||
|
std::size_t numBlocksHigh = std::max<std::size_t>(1, (h + 3) / 4);
|
||||||
|
std::size_t rowBytes = numBlocksWide * bpe;
|
||||||
|
std::size_t numRows = numBlocksHigh;
|
||||||
|
std::size_t numBytes = rowBytes * numBlocksHigh;
|
||||||
|
FlipY(mipMapData, rowBytes, numBytes, numBlocksWide);
|
||||||
|
w = w >> 1;
|
||||||
|
h = h >> 1;
|
||||||
|
mipMapData += numBytes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DDS::~DDS()
|
||||||
|
{
|
||||||
|
if (this->Data != nullptr) {
|
||||||
|
delete[] this->Data;
|
||||||
|
this->Data = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DDS::FlipY(unsigned char* data, std::size_t rowBytes, std::size_t totalSize, std::size_t numBlocksWide)
|
||||||
|
{
|
||||||
|
std::size_t height = totalSize / rowBytes;
|
||||||
|
unsigned char* topLine = data;
|
||||||
|
unsigned char* bottomLine = data + (height - 1) * rowBytes;
|
||||||
|
for (std::size_t line = 0; line < height / 2; ++line) {
|
||||||
|
Block_t* topBlocks = reinterpret_cast<Block_t*>(topLine);
|
||||||
|
Block_t* bottomBlocks = reinterpret_cast<Block_t*>(bottomLine);
|
||||||
|
for (std::size_t block = 0; block < numBlocksWide; ++block) {
|
||||||
|
flipBlock(&topBlocks[block]);
|
||||||
|
flipBlock(&bottomBlocks[block]);
|
||||||
|
std::swap(topBlocks[block], bottomBlocks[block]);
|
||||||
|
}
|
||||||
|
topLine += rowBytes;
|
||||||
|
bottomLine -= rowBytes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DDS::flipBlock(Block_t* block)
|
||||||
|
{
|
||||||
|
// Extract both rows of pixel Data into a 32 bit sized values.
|
||||||
|
uint32_t pixelRow0 = block->Alpha.Data[0] + ((block->Alpha.Data[1] + (block->Alpha.Data[2] << 8)) << 8);
|
||||||
|
uint32_t pixelRow1 = block->Alpha.Data[3] + ((block->Alpha.Data[4] + (block->Alpha.Data[5] << 8)) << 8);
|
||||||
|
|
||||||
|
// Swap the extracted row Data. These values will be read from and shifted into the final block locations.
|
||||||
|
uint32_t pixelRow0Swapped = ((pixelRow0 & 0x000fff) << 12) | ((pixelRow0 & 0xfff000) >> 12);
|
||||||
|
uint32_t pixelRow1Swapped = ((pixelRow1 & 0x000fff) << 12) | ((pixelRow1 & 0xfff000) >> 12);
|
||||||
|
|
||||||
|
// Swapped Data from row 1 is written
|
||||||
|
block->Alpha.Data[0] = static_cast<uint8_t>(pixelRow1Swapped & 0x0000ff);
|
||||||
|
block->Alpha.Data[1] = static_cast<uint8_t>((pixelRow1Swapped & 0x00ff00) >> 8);
|
||||||
|
block->Alpha.Data[2] = static_cast<uint8_t>((pixelRow1Swapped & 0xff0000) >> 16);
|
||||||
|
|
||||||
|
// Swapped Data from row 0 is written
|
||||||
|
block->Alpha.Data[3] = static_cast<uint8_t>(pixelRow0Swapped & 0x0000ff);
|
||||||
|
block->Alpha.Data[4] = static_cast<uint8_t>((pixelRow0Swapped & 0x00ff00) >> 8);
|
||||||
|
block->Alpha.Data[5] = static_cast<uint8_t>((pixelRow0Swapped & 0xff0000) >> 16);
|
||||||
|
|
||||||
|
std::swap(block->Data.Data[0], block->Data.Data[3]);
|
||||||
|
std::swap(block->Data.Data[1], block->Data.Data[2]);
|
||||||
|
}
|
||||||
@@ -1523,10 +1523,12 @@ void DrawFinalPass::BindExplosionTextures(GLuint shaderHandle, std::shared_ptr<E
|
|||||||
if (job->NormalTexture.size() > 0 && job->NormalTexture[0]->Texture != nullptr) {
|
if (job->NormalTexture.size() > 0 && job->NormalTexture[0]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[0]->Texture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[0]->Texture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(job->NormalTexture[0]->UVRepeat));
|
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(job->NormalTexture[0]->UVRepeat));
|
||||||
|
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), job->NormalTexture[0]->Texture->m_Type);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||||
|
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), m_NeutralNormalTexture->m_Type);
|
||||||
}
|
}
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE3);
|
glActiveTexture(GL_TEXTURE3);
|
||||||
@@ -1579,10 +1581,12 @@ void DrawFinalPass::BindExplosionTextures(GLuint shaderHandle, std::shared_ptr<E
|
|||||||
if (job->NormalTexture.size() > i && job->NormalTexture[i]->Texture != nullptr) {
|
if (job->NormalTexture.size() > i && job->NormalTexture[i]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[i]->Texture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[i]->Texture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->NormalTexture[i]->UVRepeat));
|
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->NormalTexture[i]->UVRepeat));
|
||||||
|
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), job->NormalTexture[0]->Texture->m_Type);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||||
|
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), m_NeutralNormalTexture->m_Type);
|
||||||
}
|
}
|
||||||
texturePosition++;
|
texturePosition++;
|
||||||
}
|
}
|
||||||
@@ -1641,10 +1645,12 @@ void DrawFinalPass::BindModelTextures(GLuint shaderHandle, std::shared_ptr<Model
|
|||||||
if (job->NormalTexture.size() > 0 && job->NormalTexture[0]->Texture != nullptr) {
|
if (job->NormalTexture.size() > 0 && job->NormalTexture[0]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[0]->Texture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[0]->Texture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(job->NormalTexture[0]->UVRepeat));
|
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(job->NormalTexture[0]->UVRepeat));
|
||||||
|
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), job->NormalTexture[0]->Texture->m_Type);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
//glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||||
|
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), m_NeutralNormalTexture->m_Type);
|
||||||
}
|
}
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE3);
|
glActiveTexture(GL_TEXTURE3);
|
||||||
@@ -1676,57 +1682,60 @@ void DrawFinalPass::BindModelTextures(GLuint shaderHandle, std::shared_ptr<Model
|
|||||||
int texturePosition = GL_TEXTURE2;
|
int texturePosition = GL_TEXTURE2;
|
||||||
|
|
||||||
//Bind 5 diffuse textures
|
//Bind 5 diffuse textures
|
||||||
std::string UniformName = "DiffuseUVRepeat";
|
std::string UVRepeatName = "DiffuseUVRepeat";
|
||||||
for (unsigned int i = 0; i < 3; i++) {
|
for (unsigned int i = 0; i < 3; i++) {
|
||||||
glActiveTexture(texturePosition);
|
glActiveTexture(texturePosition);
|
||||||
if (job->DiffuseTexture.size() > i && job->DiffuseTexture[i]->Texture != nullptr) {
|
if (job->DiffuseTexture.size() > i && job->DiffuseTexture[i]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->DiffuseTexture[i]->Texture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, job->DiffuseTexture[i]->Texture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->DiffuseTexture[i]->UVRepeat));
|
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->DiffuseTexture[i]->UVRepeat));
|
||||||
} else {
|
} else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_WhiteTexture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, m_WhiteTexture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||||
}
|
}
|
||||||
texturePosition++;
|
texturePosition++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Bind 5 Normal textures
|
//Bind 5 Normal textures
|
||||||
UniformName = "NormalUVRepeat";
|
std::string textureType = "NormalTextureType";
|
||||||
|
UVRepeatName = "NormalUVRepeat";
|
||||||
for (unsigned int i = 0; i < 3; i++) {
|
for (unsigned int i = 0; i < 3; i++) {
|
||||||
glActiveTexture(texturePosition);
|
glActiveTexture(texturePosition);
|
||||||
if (job->NormalTexture.size() > i && job->NormalTexture[i]->Texture != nullptr) {
|
if (job->NormalTexture.size() > i && job->NormalTexture[i]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[i]->Texture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[i]->Texture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->NormalTexture[i]->UVRepeat));
|
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->NormalTexture[i]->UVRepeat));
|
||||||
|
glUniform1i(glGetUniformLocation(shaderHandle, std::string(textureType + ((char)(i + '1'))).c_str()), job->NormalTexture[i]->Texture->m_Type);
|
||||||
} else {
|
} else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||||
|
glUniform1i(glGetUniformLocation(shaderHandle, std::string(textureType + ((char)(i + '1'))).c_str()), m_NeutralNormalTexture->m_Type);
|
||||||
}
|
}
|
||||||
texturePosition++;
|
texturePosition++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Bind 5 Specular textures
|
//Bind 5 Specular textures
|
||||||
UniformName = "SpecularUVRepeat";
|
UVRepeatName = "SpecularUVRepeat";
|
||||||
for (unsigned int i = 0; i < 3; i++) {
|
for (unsigned int i = 0; i < 3; i++) {
|
||||||
glActiveTexture(texturePosition);
|
glActiveTexture(texturePosition);
|
||||||
if (job->SpecularTexture.size() > i && job->SpecularTexture[i]->Texture != nullptr) {
|
if (job->SpecularTexture.size() > i && job->SpecularTexture[i]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->SpecularTexture[i]->Texture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, job->SpecularTexture[i]->Texture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->SpecularTexture[i]->UVRepeat));
|
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->SpecularTexture[i]->UVRepeat));
|
||||||
} else {
|
} else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_GreyTexture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, m_GreyTexture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||||
}
|
}
|
||||||
texturePosition++;
|
texturePosition++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Bind 5 Incandescence textures
|
//Bind 5 Incandescence textures
|
||||||
UniformName = "GlowUVRepeat";
|
UVRepeatName = "GlowUVRepeat";
|
||||||
for (unsigned int i = 0; i < 3; i++) {
|
for (unsigned int i = 0; i < 3; i++) {
|
||||||
glActiveTexture(texturePosition);
|
glActiveTexture(texturePosition);
|
||||||
if (job->IncandescenceTexture.size() > i && job->IncandescenceTexture[i]->Texture != nullptr) {
|
if (job->IncandescenceTexture.size() > i && job->IncandescenceTexture[i]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->IncandescenceTexture[i]->Texture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, job->IncandescenceTexture[i]->Texture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->IncandescenceTexture[i]->UVRepeat));
|
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->IncandescenceTexture[i]->UVRepeat));
|
||||||
} else {
|
} else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_BlackTexture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, m_BlackTexture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||||
}
|
}
|
||||||
texturePosition++;
|
texturePosition++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,10 +96,10 @@ PNG::~PNG()
|
|||||||
|
|
||||||
void PNG::pngErrorFunction(png_structp png_ptr, png_const_charp error_msg)
|
void PNG::pngErrorFunction(png_structp png_ptr, png_const_charp error_msg)
|
||||||
{
|
{
|
||||||
LOG_WARNING("%s", error_msg);
|
LOG_WARNING("libpng error: %s", error_msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PNG::pngWarningFunction(png_structp png_ptr, png_const_charp warning_msg)
|
void PNG::pngWarningFunction(png_structp png_ptr, png_const_charp warning_msg)
|
||||||
{
|
{
|
||||||
LOG_WARNING("%s", warning_msg);
|
LOG_WARNING("libpng warning: %s", warning_msg);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -287,7 +287,7 @@ void RawModelCustom::ReadMaterialTextureProperties(RawModelCustom::TextureProper
|
|||||||
}
|
}
|
||||||
texture.TexturePath = "Textures/";
|
texture.TexturePath = "Textures/";
|
||||||
texture.TexturePath += (fileData + offset);
|
texture.TexturePath += (fileData + offset);
|
||||||
texture.TexturePath += ".png";
|
texture.TexturePath += ".dds";
|
||||||
offset += nameLength;
|
offset += nameLength;
|
||||||
if (offset + sizeof(glm::vec2) > fileByteSize) {
|
if (offset + sizeof(glm::vec2) > fileByteSize) {
|
||||||
throw Resource::FailedLoadingException("Reading Material texture UVTiling failed");
|
throw Resource::FailedLoadingException("Reading Material texture UVTiling failed");
|
||||||
|
|||||||
@@ -2,11 +2,21 @@
|
|||||||
|
|
||||||
Texture::Texture(std::string path)
|
Texture::Texture(std::string path)
|
||||||
{
|
{
|
||||||
PNG* img = ResourceManager::Load<PNG, true>(path); //TODO: Make this threaded. Catch exeptions in all other load places.
|
std::string ext = boost::filesystem::path(path).extension().string();
|
||||||
|
Image* img;
|
||||||
|
if (ext == ".png") {
|
||||||
|
img = ResourceManager::Load<PNG, true>(path);
|
||||||
|
m_Type = TextureType::cPNG;
|
||||||
|
} else if (ext == ".dds") {
|
||||||
|
img = ResourceManager::Load<DDS, true>(path);
|
||||||
|
m_Type = TextureType::cDDS;
|
||||||
|
} else {
|
||||||
|
m_Type = TextureType::cInvalid;
|
||||||
|
throw Resource::FailedLoadingException("Texture extension is not .png nor .dds");
|
||||||
|
}
|
||||||
|
|
||||||
this->Width = img->Width;
|
this->Width = img->Width;
|
||||||
this->Height = img->Height;
|
this->Height = img->Height;
|
||||||
this->Data = img->Data;
|
|
||||||
|
|
||||||
GLint format;
|
GLint format;
|
||||||
switch (img->Format) {
|
switch (img->Format) {
|
||||||
@@ -18,19 +28,58 @@ Texture::Texture(std::string path)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Master hade PNG release here...
|
||||||
|
|
||||||
// Construct the OpenGL texture
|
// Construct the OpenGL texture
|
||||||
glGenTextures(1, &m_Texture);
|
glGenTextures(1, &m_Texture);
|
||||||
glBindTexture(GL_TEXTURE_2D, m_Texture);
|
glBindTexture(GL_TEXTURE_2D, m_Texture);
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, format, img->Width, img->Height, 0, format, GL_UNSIGNED_BYTE, img->Data);
|
|
||||||
glGenerateMipmap(GL_TEXTURE_2D);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
GLERROR("Texture load");
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||||
|
if (!img->Compressed) {
|
||||||
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||||
|
}
|
||||||
|
unsigned int w = img->Width;
|
||||||
|
unsigned int h = img->Width;
|
||||||
|
unsigned char* data = img->Data;
|
||||||
|
for (int mipLevel = 0; mipLevel < 1 + img->MipMapLevels; mipLevel++) {
|
||||||
|
if (img->Compressed) {
|
||||||
|
//LOG_DEBUG("mipLevel: %i", mipLevel);
|
||||||
|
//LOG_DEBUG("w: %i", w);
|
||||||
|
//LOG_DEBUG("h: %i", h);
|
||||||
|
|
||||||
ResourceManager::Release("PNG", path);
|
std::size_t bpe = 16;
|
||||||
|
std::size_t numBlocksWide = std::max<std::size_t>(1, (w + 3) / 4);
|
||||||
|
std::size_t numBlocksHigh = std::max<std::size_t>(1, (h + 3) / 4);
|
||||||
|
std::size_t rowBytes = numBlocksWide * bpe;
|
||||||
|
std::size_t numRows = numBlocksHigh;
|
||||||
|
std::size_t numBytes = rowBytes * numBlocksHigh;
|
||||||
|
//LOG_DEBUG("numBytes: %i", numBytes);
|
||||||
|
glCompressedTexImage2D(GL_TEXTURE_2D, mipLevel, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, w, h, 0, numBytes, data);
|
||||||
|
data += numBytes;
|
||||||
|
} else {
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, mipLevel, format, img->Width, img->Height, 0, format, GL_UNSIGNED_BYTE, img->Data);
|
||||||
|
}
|
||||||
|
|
||||||
|
w = w >> 1;
|
||||||
|
h = h >> 1;
|
||||||
|
}
|
||||||
|
//LOG_DEBUG("REMAINDER: %i", img->ByteSize - (data - img->Data));
|
||||||
|
// Generate mipmaps if the image file doesn't contain them
|
||||||
|
if (img->MipMapLevels == 0) {
|
||||||
|
glGenerateMipmap(GL_TEXTURE_2D);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ext == ".png") {
|
||||||
|
ResourceManager::Release("PNG", path);
|
||||||
|
} else if (ext == ".dds") {
|
||||||
|
ResourceManager::Release("DDS", path);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GLERROR("Texture load")) {
|
||||||
|
throw Resource::FailedLoadingException("GL texture generation failed");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Texture::~Texture()
|
Texture::~Texture()
|
||||||
|
|||||||
+2
-1
@@ -54,8 +54,9 @@ Game::Game(int argc, char* argv[])
|
|||||||
ResourceManager::RegisterType<Model>("Model");
|
ResourceManager::RegisterType<Model>("Model");
|
||||||
ResourceManager::RegisterType<RawModel>("RawModel");
|
ResourceManager::RegisterType<RawModel>("RawModel");
|
||||||
ResourceManager::RegisterType<Texture>("Texture");
|
ResourceManager::RegisterType<Texture>("Texture");
|
||||||
ResourceManager::RegisterType<TextureSprite>("TextureSprite");
|
|
||||||
ResourceManager::RegisterType<PNG>("PNG");
|
ResourceManager::RegisterType<PNG>("PNG");
|
||||||
|
ResourceManager::RegisterType<TextureSprite>("TextureSprite");
|
||||||
|
ResourceManager::RegisterType<DDS>("DDS");
|
||||||
ResourceManager::RegisterType<ShaderProgram>("ShaderProgram");
|
ResourceManager::RegisterType<ShaderProgram>("ShaderProgram");
|
||||||
ResourceManager::RegisterType<EntityFile>("EntityFile");
|
ResourceManager::RegisterType<EntityFile>("EntityFile");
|
||||||
ResourceManager::RegisterType<EntityXMLFile>("EntityXMLFile");
|
ResourceManager::RegisterType<EntityXMLFile>("EntityXMLFile");
|
||||||
|
|||||||
@@ -25,9 +25,9 @@ bool HealthSystem::OnPlayerDamaged(Events::PlayerDamage& e)
|
|||||||
//if player has the boost from a defender, subtract the damage taken by StrengthOfEffect amount
|
//if player has the boost from a defender, subtract the damage taken by StrengthOfEffect amount
|
||||||
auto playerBoostDefenderEntity = e.Victim.FirstChildByName("BoostDefender");
|
auto playerBoostDefenderEntity = e.Victim.FirstChildByName("BoostDefender");
|
||||||
if (playerBoostDefenderEntity.Valid()) {
|
if (playerBoostDefenderEntity.Valid()) {
|
||||||
e.Damage -= (double)playerBoostDefenderEntity["BoostDefender"]["StrengthOfEffect"];
|
e.Damage -= (const double&)playerBoostDefenderEntity["BoostDefender"]["StrengthOfEffect"];
|
||||||
}
|
}
|
||||||
if (health > 0) {
|
if (health > 0 && e.Damage > 0) {
|
||||||
health -= e.Damage;
|
health -= e.Damage;
|
||||||
if (health <= 0.0) {
|
if (health <= 0.0) {
|
||||||
Events::PlayerDeath ePlayerDeath;
|
Events::PlayerDeath ePlayerDeath;
|
||||||
|
|||||||
@@ -160,9 +160,9 @@ bool DefenderWeaponBehaviour::OnInputCommand(ComponentWrapper cWeapon, WeaponInf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsServer) {
|
SpawnerSystem::Spawn(attachment, attachment);
|
||||||
SpawnerSystem::Spawn(attachment, attachment);
|
|
||||||
}
|
/*
|
||||||
|
|
||||||
EntityWrapper backAttachment = attachment.FirstChildByName("Back");
|
EntityWrapper backAttachment = attachment.FirstChildByName("Back");
|
||||||
if (backAttachment.Valid()) {
|
if (backAttachment.Valid()) {
|
||||||
@@ -172,7 +172,11 @@ bool DefenderWeaponBehaviour::OnInputCommand(ComponentWrapper cWeapon, WeaponInf
|
|||||||
eDeployShieldAttachement.Restart = true;
|
eDeployShieldAttachement.Restart = true;
|
||||||
eDeployShieldAttachement.Start = true;
|
eDeployShieldAttachement.Start = true;
|
||||||
m_EventBroker->Publish(eDeployShieldAttachement);
|
m_EventBroker->Publish(eDeployShieldAttachement);
|
||||||
|
} else {
|
||||||
|
LOG_ERROR("back shield invalid");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
EntityWrapper frontAttachment = attachment.FirstChildByName("Front");
|
EntityWrapper frontAttachment = attachment.FirstChildByName("Front");
|
||||||
if (frontAttachment.Valid()) {
|
if (frontAttachment.Valid()) {
|
||||||
Events::AutoAnimationBlend eDeployShieldAttachement;
|
Events::AutoAnimationBlend eDeployShieldAttachement;
|
||||||
@@ -182,7 +186,10 @@ bool DefenderWeaponBehaviour::OnInputCommand(ComponentWrapper cWeapon, WeaponInf
|
|||||||
eDeployShieldAttachement.Start = true;
|
eDeployShieldAttachement.Start = true;
|
||||||
m_EventBroker->Publish(eDeployShieldAttachement);
|
m_EventBroker->Publish(eDeployShieldAttachement);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
LOG_ERROR("front shield invalid");
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if (IsClient) {
|
if (IsClient) {
|
||||||
EntityWrapper root = wi.FirstPersonEntity;
|
EntityWrapper root = wi.FirstPersonEntity;
|
||||||
|
|||||||
Reference in New Issue
Block a user