Skip to content

Commit

Permalink
feat: pbr for forward pass
Browse files Browse the repository at this point in the history
  • Loading branch information
hoffstadt committed Apr 29, 2024
1 parent 1dde671 commit 2a67612
Show file tree
Hide file tree
Showing 13 changed files with 939 additions and 140 deletions.
8 changes: 3 additions & 5 deletions apps/app.c
Original file line number Diff line number Diff line change
Expand Up @@ -220,10 +220,6 @@ pl_app_load(plApiRegistryI* ptApiRegistry, plAppData* ptAppData)
for(uint32_t i = 0; i < PL_FRAMES_IN_FLIGHT; i++)
ptAppData->atSempahore[i] = gptDevice->create_semaphore(&gptRenderer->get_graphics()->tDevice, false);

// create offscreen view (temporary API)



ptAppData->uSceneHandle0 = gptRenderer->create_scene();
ptAppData->uSceneHandle1 = gptRenderer->create_scene();

Expand Down Expand Up @@ -263,7 +259,9 @@ pl_app_load(plApiRegistryI* ptApiRegistry, plAppData* ptAppData)
plModelLoaderData tLoaderData0 = {0};

pl_begin_profile_sample("load models 0");
gptModelLoader->load_gltf(ptMainComponentLibrary, "../data/glTF-Sample-Assets-main/Models/DamagedHelmet/glTF/DamagedHelmet.gltf", NULL, &tLoaderData0);
gptModelLoader->load_gltf(ptMainComponentLibrary, "../data/glTF-Sample-Assets-main/Models/FlightHelmet/glTF/FlightHelmet.gltf", NULL, &tLoaderData0);
// gptModelLoader->load_gltf(ptMainComponentLibrary, "../data/glTF-Sample-Assets-main/Models/DamagedHelmet/glTF/DamagedHelmet.gltf", NULL, &tLoaderData0);
// gptModelLoader->load_gltf(ptMainComponentLibrary, "../data/glTF-Sample-Assets-main/Models/Sponza/glTF/Sponza.gltf", NULL, &tLoaderData0);
gptModelLoader->load_stl(ptMainComponentLibrary, "../data/pilotlight-assets-master/meshes/monkey.stl", (plVec4){1.0f, 1.0f, 0.0f, 0.80f}, &tTransform0, &tLoaderData0);
gptRenderer->add_drawable_objects_to_scene(ptAppData->uSceneHandle0, tLoaderData0.uOpaqueCount, tLoaderData0.atOpaqueObjects, tLoaderData0.uTransparentCount, tLoaderData0.atTransparentObjects);
gptModelLoader->free_data(&tLoaderData0);
Expand Down
18 changes: 11 additions & 7 deletions extensions/pl_model_loader_ext.c
Original file line number Diff line number Diff line change
Expand Up @@ -822,16 +822,16 @@ pl__refr_load_gltf_object(plModelLoaderData* ptData, plGltfLoadingData* ptSceneD
if(ptPrimitive->material)
{
bool bOpaque = true;

plMaterialComponent* ptMaterial = NULL;

// check if the material already exists
if(pl_hm_has_key(&ptSceneData->tMaterialHashMap, (uint64_t)ptPrimitive->material))
{
const uint64_t ulMaterialIndex = pl_hm_lookup(&ptSceneData->tMaterialHashMap, (uint64_t)ptPrimitive->material);
ptMesh->tMaterial = ptSceneData->sbtMaterialEntities[ulMaterialIndex];

plMaterialComponent* ptMaterial = gptECS->get_component(ptLibrary, PL_COMPONENT_TYPE_MATERIAL, ptMesh->tMaterial);
if(ptMaterial->tBlendMode != PL_BLEND_MODE_OPAQUE)
bOpaque = false;
ptMaterial = gptECS->get_component(ptLibrary, PL_COMPONENT_TYPE_MATERIAL, ptMesh->tMaterial);
}
else // create new material
{
Expand All @@ -840,12 +840,16 @@ pl__refr_load_gltf_object(plModelLoaderData* ptData, plGltfLoadingData* ptSceneD
ptMesh->tMaterial = gptECS->create_material(ptLibrary, ptPrimitive->material->name);
pl_sb_push(ptSceneData->sbtMaterialEntities, ptMesh->tMaterial);

plMaterialComponent* ptMaterial = gptECS->get_component(ptLibrary, PL_COMPONENT_TYPE_MATERIAL, ptMesh->tMaterial);
ptMaterial = gptECS->get_component(ptLibrary, PL_COMPONENT_TYPE_MATERIAL, ptMesh->tMaterial);
pl__refr_load_material(pcDirectory, ptMaterial, ptPrimitive->material);

if(ptMaterial->tBlendMode != PL_BLEND_MODE_OPAQUE)
bOpaque = false;
}

if(ptPrimitive->material->has_transmission)
ptMaterial->tBlendMode = PL_BLEND_MODE_ALPHA;

if(ptMaterial->tBlendMode != PL_BLEND_MODE_OPAQUE)
bOpaque = false;

if(bOpaque)
pl_sb_push(ptData->atOpaqueObjects, tNewObject);
else
Expand Down
194 changes: 114 additions & 80 deletions extensions/pl_ref_renderer_ext.c

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions shaders/glsl/gbuffer_common.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,10 @@ layout(set = 0, binding = 2) readonly buffer plMaterialInfo
} tMaterialInfo;

layout(set = 0, binding = 3) uniform sampler tDefaultSampler;
layout(set = 0, binding = 4) uniform sampler tEnvSampler;
layout (set = 0, binding = 5) uniform textureCube u_LambertianEnvSampler;
layout (set = 0, binding = 6) uniform textureCube u_GGXEnvSampler;
layout (set = 0, binding = 7) uniform texture2D u_GGXLUT;

//-----------------------------------------------------------------------------
// [SECTION] bind group 1
Expand Down Expand Up @@ -134,6 +138,7 @@ layout(constant_id = 1) const int iDataStride = 0;
layout(constant_id = 2) const int iTextureMappingFlags = 0;
layout(constant_id = 3) const int iMaterialFlags = 0;
layout(constant_id = 4) const int iUseSkinning = 0;
layout(constant_id = 5) const int iRenderingFlags = 0;

//-----------------------------------------------------------------------------
// [SECTION] defines
Expand Down
16 changes: 8 additions & 8 deletions shaders/glsl/lighting.frag
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,10 @@ layout(set = 0, binding = 2) readonly buffer plMaterialInfo
tMaterial atMaterials[];
} tMaterialInfo;
layout(set = 0, binding = 3) uniform sampler tDefaultSampler;
layout(set = 0, binding = 4) uniform sampler tEnvSampler;
layout (set = 0, binding = 5) uniform textureCube u_LambertianEnvSampler;
layout (set = 0, binding = 6) uniform textureCube u_GGXEnvSampler;
layout (set = 0, binding = 7) uniform texture2D u_GGXLUT;

layout(input_attachment_index = 1, set = 1, binding = 0) uniform subpassInput tAlbedoSampler;
layout(input_attachment_index = 2, set = 1, binding = 1) uniform subpassInput tNormalTexture;
Expand All @@ -107,10 +111,6 @@ layout(input_attachment_index = 4, set = 1, binding = 3) uniform subpassInput t
layout(input_attachment_index = 5, set = 1, binding = 4) uniform subpassInput tAOMetalRoughnessTexture;
layout(input_attachment_index = 0, set = 1, binding = 5) uniform subpassInput tDepthSampler;

layout (set = 1, binding = 6) uniform textureCube u_LambertianEnvSampler;
layout (set = 1, binding = 7) uniform textureCube u_GGXEnvSampler;
layout (set = 1, binding = 8) uniform texture2D u_GGXLUT;

layout(set = 2, binding = 0) uniform texture2D tSkinningSampler;

layout(set = 3, binding = 0) uniform _plObjectInfo
Expand Down Expand Up @@ -282,15 +282,15 @@ vec3 BRDF_specularGGX(vec3 f0, vec3 f90, float alphaRoughness, float specularWei
vec3 getDiffuseLight(vec3 n)
{
n.z = -n.z;
return texture(samplerCube(u_LambertianEnvSampler, tDefaultSampler), n).rgb;
return texture(samplerCube(u_LambertianEnvSampler, tEnvSampler), n).rgb;
}


vec4 getSpecularSample(vec3 reflection, float lod)
{
reflection.z = -reflection.z;
// return textureLod(u_GGXEnvSampler, u_EnvRotation * reflection, lod) * u_EnvIntensity;
return textureLod(samplerCube(u_GGXEnvSampler, tDefaultSampler), reflection, lod);
return textureLod(samplerCube(u_GGXEnvSampler, tEnvSampler), reflection, lod);
}

vec3 getIBLRadianceGGX(vec3 n, vec3 v, float roughness, vec3 F0, float specularWeight, int u_MipCount)
Expand All @@ -300,7 +300,7 @@ vec3 getIBLRadianceGGX(vec3 n, vec3 v, float roughness, vec3 F0, float specularW
vec3 reflection = normalize(reflect(-v, n));

vec2 brdfSamplePoint = clamp(vec2(NdotV, roughness), vec2(0.0, 0.0), vec2(1.0, 1.0));
vec2 f_ab = texture(sampler2D(u_GGXLUT, tDefaultSampler), brdfSamplePoint).rg;
vec2 f_ab = texture(sampler2D(u_GGXLUT, tEnvSampler), brdfSamplePoint).rg;
vec4 specularSample = getSpecularSample(reflection, lod);

vec3 specularLight = specularSample.rgb;
Expand All @@ -320,7 +320,7 @@ vec3 getIBLRadianceLambertian(vec3 n, vec3 v, float roughness, vec3 diffuseColor
{
float NdotV = clampedDot(n, v);
vec2 brdfSamplePoint = clamp(vec2(NdotV, roughness), vec2(0.0, 0.0), vec2(1.0, 1.0));
vec2 f_ab = texture(sampler2D(u_GGXLUT, tDefaultSampler), brdfSamplePoint).rg;
vec2 f_ab = texture(sampler2D(u_GGXLUT, tEnvSampler), brdfSamplePoint).rg;

vec3 irradiance = getDiffuseLight(n);

Expand Down
4 changes: 4 additions & 0 deletions shaders/glsl/lighting.vert
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,10 @@ layout(set = 0, binding = 2) readonly buffer plMaterialInfo
} tMaterialInfo;

layout(set = 0, binding = 3) uniform sampler tDefaultSampler;
layout(set = 0, binding = 4) uniform sampler tEnvSampler;
layout (set = 0, binding = 5) uniform textureCube u_LambertianEnvSampler;
layout (set = 0, binding = 6) uniform textureCube u_GGXEnvSampler;
layout (set = 0, binding = 7) uniform texture2D u_GGXLUT;

layout(set = 2, binding = 0) uniform texture2D tSkinningSampler;

Expand Down
4 changes: 4 additions & 0 deletions shaders/glsl/skybox.frag
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ layout(set = 0, binding = 0) uniform _plGlobalInfo
layout(std140, set = 0, binding = 1) readonly buffer _tVertexBuffer{ vec4 atVertexData[]; } tVertexBuffer;

layout(set = 0, binding = 3) uniform sampler tDefaultSampler;
layout(set = 0, binding = 4) uniform sampler tEnvSampler;
layout (set = 0, binding = 5) uniform textureCube u_LambertianEnvSampler;
layout (set = 0, binding = 6) uniform textureCube u_GGXEnvSampler;
layout (set = 0, binding = 7) uniform texture2D u_GGXLUT;

//-----------------------------------------------------------------------------
// [SECTION] bind group 1
Expand Down
4 changes: 4 additions & 0 deletions shaders/glsl/skybox.vert
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ layout(set = 0, binding = 0) uniform _plGlobalInfo
layout(std140, set = 0, binding = 1) readonly buffer _tVertexBuffer{ vec4 atVertexData[]; } tVertexBuffer;

layout(set = 0, binding = 3) uniform sampler tDefaultSampler;
layout(set = 0, binding = 4) uniform sampler tEnvSampler;
layout (set = 0, binding = 5) uniform textureCube u_LambertianEnvSampler;
layout (set = 0, binding = 6) uniform textureCube u_GGXEnvSampler;
layout (set = 0, binding = 7) uniform texture2D u_GGXLUT;

//-----------------------------------------------------------------------------
// [SECTION] bind group 1
Expand Down
Loading

0 comments on commit 2a67612

Please sign in to comment.