Skip to content

Commit

Permalink
Added groups
Browse files Browse the repository at this point in the history
  • Loading branch information
denis-beqiraj committed Feb 6, 2025
1 parent a4efc82 commit 76db498
Show file tree
Hide file tree
Showing 10 changed files with 110 additions and 76 deletions.
39 changes: 21 additions & 18 deletions Engine/Shaders/DeferredForwardPipeline/fragment.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,26 @@ void main()
{
currentMaterial = materialData[drawId];

vec4 diffuseTexture = texture(currentMaterial.diffuse, TexCoords)+currentMaterial.materialColor;

vec3 albedo = diffuseTexture.rgb;
if (diffuseTexture.a < 0.1) {
discard;
if(statusCopy[drawId].plainColor>1){
FragColor=currentMaterial.materialColor;
}else{

vec4 diffuseTexture = texture(currentMaterial.diffuse, TexCoords)+currentMaterial.materialColor;

vec3 albedo = diffuseTexture.rgb;
if (diffuseTexture.a < 0.1) {
discard;
}
vec4 roughnessMetalnessTexture = texture(currentMaterial.roughness_metalness, TexCoords);
float metallic = roughnessMetalnessTexture.b;
float roughness = roughnessMetalnessTexture.g;
float specularMap = texture(currentMaterial.specularMap, TexCoords).r;
float ao = texture(currentMaterial.ambient_occlusion, TexCoords).r;

vec4 aoSpecular = vec4(specularMap, ao, 0, 0);

vec3 N = getNormalFromMap();
vec3 pbrColor = pbrCalculation(FragPos, N, albedo, aoSpecular, roughness, metallic);
FragColor = vec4(pbrColor, diffuseTexture.a);
}
vec4 roughnessMetalnessTexture = texture(currentMaterial.roughness_metalness, TexCoords);
float metallic = roughnessMetalnessTexture.b;
float roughness = roughnessMetalnessTexture.g;
float specularMap = texture(currentMaterial.specularMap, TexCoords).r;
float ao = texture(currentMaterial.ambient_occlusion, TexCoords).r;

vec4 aoSpecular = vec4(specularMap, ao, 0, 0);

vec3 N = getNormalFromMap();

vec3 pbrColor = pbrCalculation(FragPos, N, albedo, aoSpecular, roughness, metallic);

FragColor = vec4(pbrColor, diffuseTexture.a);
}
51 changes: 33 additions & 18 deletions Engine/Shaders/DeferredPipeline/fragment.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,17 @@ vec3 getNormalFromMap()
return normalize(TBN * tangentNormal);
}

struct StatusData{
uint status;
int plainColor;
vec2 padding;
};

layout(std430, binding = 25) buffer StatusCopy {
StatusData statusCopy[];
};


void main()
{
#if defined(ANIMATE)
Expand All @@ -67,22 +78,26 @@ void main()
if (albedoTexture.a < 0.1) {
discard;
}

// and the diffuse per-fragment color
gAlbedoSpec.rgb = albedoTexture.rgb;

// store the fragment position vector in the first gbuffer texture
gPosition.rgb = FragPos;
// also store the per-fragment normals into the gbuffer
gNormal.rgb = getNormalFromMap();

vec4 roughnessMetalnessTexture = texture(currentMaterial.roughness_metalness, TexCoords);

gAlbedoSpec.a= roughnessMetalnessTexture.b;
gNormal.a = roughnessMetalnessTexture.g;
gPosition.a=gl_FragCoord.z;

gAmbient.r = texture(currentMaterial.specularMap, TexCoords).r;
gAmbient.g = texture(currentMaterial.ambient_occlusion, TexCoords).r;

if(statusCopy[drawId].plainColor>1){
gAmbient.b= float(statusCopy[drawId].plainColor);
gAlbedoSpec.rgb = vec3(currentMaterial.materialColor);
}else{
// and the diffuse per-fragment color
gAlbedoSpec.rgb = albedoTexture.rgb;

// store the fragment position vector in the first gbuffer texture
gPosition.rgb = FragPos;
// also store the per-fragment normals into the gbuffer
gNormal.rgb = getNormalFromMap();

vec4 roughnessMetalnessTexture = texture(currentMaterial.roughness_metalness, TexCoords);

gAlbedoSpec.a= roughnessMetalnessTexture.b;
gNormal.a = roughnessMetalnessTexture.g;
gPosition.a=gl_FragCoord.z;

gAmbient.r = texture(currentMaterial.specularMap, TexCoords).r;
gAmbient.g = texture(currentMaterial.ambient_occlusion, TexCoords).r;
gAmbient.b = 0;
}
}
20 changes: 11 additions & 9 deletions Engine/Shaders/DeferredPipeline/fragment_d.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,16 @@ layout(std140, binding = 1) uniform MeshData
void main()
{
// retrieve data from gbuffer
vec3 FragPos = texture(gPosition, TexCoords).rgb;
vec3 N = texture(gNormal, TexCoords).rgb;
vec3 albedo = texture(gAlbedo, TexCoords).rgb;
vec4 aoSpecular = texture(gAmbient, TexCoords);
float roughness = texture(gNormal, TexCoords).a;
float metallic = texture(gAlbedo, TexCoords).a;

vec3 pbrColor = pbrCalculation(FragPos, N, albedo, aoSpecular,roughness,metallic);

FragColor = vec4(pbrColor, 1.0);
vec3 albedo = texture(gAlbedo, TexCoords).rgb;
if(int(aoSpecular.b)>0){
FragColor = vec4(albedo, 1.0);
}else{
vec3 FragPos = texture(gPosition, TexCoords).rgb;
vec3 N = texture(gNormal, TexCoords).rgb;
float roughness = texture(gNormal, TexCoords).a;
float metallic = texture(gAlbedo, TexCoords).a;
vec3 pbrColor = pbrCalculation(FragPos, N, albedo, aoSpecular,roughness,metallic);
FragColor = vec4(pbrColor, 1.0);
}
}
40 changes: 22 additions & 18 deletions Engine/Shaders/ForwardPipeline/fragment.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -25,24 +25,28 @@ void main()
#else
currentMaterial = materialData[drawId];
#endif

vec4 diffuseTexture = texture(currentMaterial.diffuse, TexCoords)+currentMaterial.materialColor;

vec3 albedo = diffuseTexture.rgb;
if (diffuseTexture.a < 0.1) {
discard;
if(statusCopy[drawId].plainColor>1){
FragColor=currentMaterial.materialColor;
}else{

vec4 diffuseTexture = texture(currentMaterial.diffuse, TexCoords)+currentMaterial.materialColor;

vec3 albedo = diffuseTexture.rgb;
if (diffuseTexture.a < 0.1) {
discard;
}
vec4 roughnessMetalnessTexture = texture(currentMaterial.roughness_metalness, TexCoords);
float metallic = roughnessMetalnessTexture.b;
float roughness = roughnessMetalnessTexture.g;
float specularMap = texture(currentMaterial.specularMap, TexCoords).r;
float ao = texture(currentMaterial.ambient_occlusion, TexCoords).r;

vec4 aoSpecular=vec4(specularMap, ao, 0, 0);

vec3 N = getNormalFromMap();

vec3 pbrColor = pbrCalculation(FragPos, N, albedo, aoSpecular,roughness,metallic);
FragColor = vec4(pbrColor, diffuseTexture.a);
}
vec4 roughnessMetalnessTexture = texture(currentMaterial.roughness_metalness, TexCoords);
float metallic = roughnessMetalnessTexture.b;
float roughness = roughnessMetalnessTexture.g;
float specularMap = texture(currentMaterial.specularMap, TexCoords).r;
float ao = texture(currentMaterial.ambient_occlusion, TexCoords).r;

vec4 aoSpecular=vec4(specularMap, ao, 0, 0);

vec3 N = getNormalFromMap();

vec3 pbrColor = pbrCalculation(FragPos, N, albedo, aoSpecular,roughness,metallic);

FragColor = vec4(pbrColor, diffuseTexture.a);
}
10 changes: 10 additions & 0 deletions Engine/Shaders/PbrHeaderPipeline/pbr_func.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,16 @@ layout(std140, binding = 3) uniform FragmentData
sampler2D textureM;
};

struct StatusData{
uint status;
int plainColor;
vec2 padding;
};

layout(std430, binding = 25) buffer StatusCopy {
StatusData statusCopy[];
};


const float LUT_SIZE = 64.0; // ltc_texture size
const float LUT_SCALE = (LUT_SIZE - 1.0)/LUT_SIZE;
Expand Down
2 changes: 1 addition & 1 deletion Engine/Shaders/StatusPipeline/compute.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ layout(std430, binding = 22) buffer DrawElementsIndirectMeshCopy

struct StatusData{
uint status;
bool plainColor;
int plainColor;
vec2 padding;
};

Expand Down
2 changes: 1 addition & 1 deletion Engine/Shaders/TransparentPipeline/computeCopy.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ layout(std430, binding = 0) buffer Material {

struct StatusData{
uint status;
bool plainColor;
int plainColor;
vec2 padding;
};

Expand Down
2 changes: 1 addition & 1 deletion Engine/Shaders/TransparentPipeline/computeHideShow.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ layout(std430, binding = 0) buffer Material

struct StatusData{
uint status;
bool plainColor;
int plainColor;
vec2 padding;
};

Expand Down
2 changes: 1 addition & 1 deletion Engine/include/SceneData/MeshIndirect.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ namespace Prisma

struct StatusData {
unsigned int status;
bool plainMaterial;
int plainMaterial;
glm::vec2 padding;
};

Expand Down
18 changes: 9 additions & 9 deletions Engine/src/SceneData/MeshIndirect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -239,14 +239,14 @@ void Prisma::MeshIndirect::updateSize()

m_ssboIndices->resize(sizeof(glm::ivec4) * meshes.size());

std::vector<unsigned int> status;
std::vector<StatusData> status;
for (const auto& mesh : meshes)
{
status.push_back(mesh->visible());
status.push_back({ mesh->visible(),mesh->material()->plain(),glm::vec2(0) });
}
m_ssboStatusCopy->resize(sizeof(unsigned int) * status.size());
m_ssboStatusCopy->modifyData(0, sizeof(unsigned int) * status.size(), status.data());
m_ssboStatus->resize(sizeof(unsigned int) * status.size());
m_ssboStatusCopy->resize(sizeof(StatusData) * status.size());
m_ssboStatusCopy->modifyData(0, sizeof(StatusData) * status.size(), status.data());
m_ssboStatus->resize(sizeof(StatusData) * status.size());

//GENERATE DATA TO SEND INDIRECT
m_vao->bind();
Expand Down Expand Up @@ -478,13 +478,13 @@ void Prisma::MeshIndirect::updateAnimation()
m_ssboMaterialAnimation->modifyData(0, sizeof(MaterialData) * m_materialDataAnimation.size(),
m_materialDataAnimation.data());

std::vector<unsigned int> status;
std::vector<StatusData> status;
for (const auto& mesh : meshes)
{
status.push_back(mesh->visible());
status.push_back({ mesh->visible(),mesh->material()->plain(),glm::vec2(0) });
}
m_ssboStatusAnimation->resize(sizeof(unsigned int) * status.size());
m_ssboStatusAnimation->modifyData(0, sizeof(unsigned int) * status.size(), status.data());
m_ssboStatusAnimation->resize(sizeof(StatusData) * status.size());
m_ssboStatusAnimation->modifyData(0, sizeof(StatusData) * status.size(), status.data());

//GENERATE DATA TO SEND INDIRECT
m_vaoAnimation->bind();
Expand Down

0 comments on commit 76db498

Please sign in to comment.