Skip to content

Commit 7e44321

Browse files
committed
WIP
1 parent 89d8f05 commit 7e44321

24 files changed

+2053
-870
lines changed

editor/app.c

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ pl_app_load(plApiRegistryI* ptApiRegistry, plAppData* ptAppData)
334334
plRendererSettings tRenderSettings = {
335335
.ptDevice = ptAppData->ptDevice,
336336
.ptSwap = gptStarter->get_swapchain(),
337-
.uMaxTextureResolution = 1024,
337+
.uMaxTextureResolution = 1024 * 2,
338338
};
339339
gptRenderer->initialize(tRenderSettings);
340340

@@ -463,25 +463,26 @@ pl_app_load(plApiRegistryI* ptApiRegistry, plAppData* ptAppData)
463463
{
464464
gptRenderer->create_environment_probe(ptAppData->ptComponentLibrary, "Probe", atProbeLocations[i], &ptProbe);
465465
ptProbe->fRange = 30.0f;
466-
// ptProbe->uResolution = 128 * 8;
467-
// ptProbe->uSamples = 1024 * 4;
468-
ptProbe->uInterval = 6;
469466
ptProbe->uResolution = 128;
470467
ptProbe->uSamples = 1024;
468+
ptProbe->uInterval = 6;
471469
ptProbe->tFlags |= PL_ENVIRONMENT_PROBE_FLAGS_INCLUDE_SKY;
472470
}
473471

474472
gptRenderer->load_skybox_from_panorama(ptAppData->ptScene, "/environments/helipad.hdr", 1024);
475-
// gptRenderer->load_skybox_from_panorama(ptAppData->ptScene, "/environments/footprint_court.hdr", 1024);
476473

477474
plModelLoaderData tLoaderData0 = {0};
478475
gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/models/gltf/humanoid/model.gltf", NULL, &tLoaderData0);
479476
// gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/models/gltf/humanoid/floor.gltf", NULL, &tLoaderData0);
480477
gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/gltf/Sponza/glTF/Sponza.gltf", NULL, &tLoaderData0);
481-
// gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/gltf/SheenTestGrid/glTF/SheenTestGrid.gltf", NULL, &tLoaderData0);
478+
// plMat4 tRotation = pl_mat4_rotate_xyz(-PL_PI_2, 0.0f, 1.0f, 0.0f);
479+
// gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/gltf/CarConcept/glTF/CarConcept.gltf", &tRotation, &tLoaderData0);
482480
// gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/gltf/EnvironmentTest/glTF/EnvironmentTest.gltf", NULL, &tLoaderData0);
483481
// gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/gltf/ClearCoatCarPaint/glTF/ClearCoatCarPaint.gltf", NULL, &tLoaderData0);
484-
// gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/gltf/SheenCloth/glTF/SheenCloth.gltf", NULL, &tLoaderData0);
482+
// gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/gltf/SheenChair/glTF/SheenChair.gltf", NULL, &tLoaderData0);
483+
// gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/gltf/TextureTransformTest/glTF/TextureTransformTest.gltf", NULL, &tLoaderData0);
484+
// gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/gltf/TextureTransformMultiTest/glTF/TextureTransformMultiTest.gltf", NULL, &tLoaderData0);
485+
// gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/gltf/TransmissionTest/glTF/TransmissionTest.gltf", NULL, &tLoaderData0);
485486
// gptModelLoader->load_gltf(ptAppData->ptComponentLibrary, "/gltf/DamagedHelmet/glTF/DamagedHelmet.gltf", NULL, &tLoaderData0);
486487
gptRenderer->add_drawable_objects_to_scene(ptAppData->ptScene, tLoaderData0.uObjectCount, tLoaderData0.atObjects);
487488
gptModelLoader->free_data(&tLoaderData0);
@@ -949,6 +950,14 @@ pl__show_editor_window(plAppData* ptAppData)
949950
"Clearcoat Normal",
950951
"Sheen Color",
951952
"Sheen Roughness",
953+
"Iridescence Factor",
954+
"Iridescence Thickness",
955+
"Anisotropy Strength",
956+
"Anisotropy Direction",
957+
"Transmission Strength",
958+
"Volume Thickness",
959+
"Diffuse Transmission Strength",
960+
"Diffuse Transmission Color",
952961
};
953962
bool abShaderDebugMode[PL_ARRAYSIZE(apcShaderDebugModeText)] = {0};
954963
abShaderDebugMode[ptRuntimeOptions->tShaderDebugMode] = true;

editor/editor.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,6 +1114,16 @@ pl__show_editor_window(plAppData* ptAppData)
11141114
"Clearcoat",
11151115
"Clearcoat Roughness",
11161116
"Clearcoat Normal",
1117+
"Sheen Color",
1118+
"Sheen Roughness",
1119+
"Iridescence Factor",
1120+
"Iridescence Thickness",
1121+
"Anisotropy Strength",
1122+
"Anisotropy Direction",
1123+
"Transmission Strength",
1124+
"Volume Thickness",
1125+
"Diffuse Transmission Strength",
1126+
"Diffuse Transmission Color",
11171127
};
11181128
bool bReloadShaders = false;
11191129
if(ImGui::Combo("Shader Debug Mode", &ptRuntimeOptions->tShaderDebugMode, apcShaderDebugModeText, PL_ARRAYSIZE(apcShaderDebugModeText))) bReloadShaders = true;

editor/editor_entities.cpp

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -465,32 +465,46 @@ pl__show_entity_components(plAppData* ptAppData, plScene* ptScene, plEntity tEnt
465465
bool bMaterialModified = false;
466466
if(ImGui::InputFloat("Roughness", &ptMaterialComp->fRoughness)) bMaterialModified = true;
467467
if(ImGui::InputFloat("Metalness", &ptMaterialComp->fMetalness)) bMaterialModified = true;
468-
if(ImGui::InputFloat("Clearcoat", &ptMaterialComp->fClearcoat)) bMaterialModified = true;
469-
if(ImGui::InputFloat("Clearcoat Roughness", &ptMaterialComp->fClearcoatRoughness)) bMaterialModified = true;
470468
if(ImGui::InputFloat("Alpha Cutoff", &ptMaterialComp->fAlphaCutoff)) bMaterialModified = true;
471469
if(ImGui::InputFloat4("Base Factor", ptMaterialComp->tBaseColor.d)) bMaterialModified = true;
472-
if(ImGui::InputFloat4("Emmissive Factor", ptMaterialComp->tEmissiveColor.d)) bMaterialModified = true;
470+
if(ImGui::InputFloat4("Emmissive Color", ptMaterialComp->tEmissiveColor.d)) bMaterialModified = true;
471+
if(ImGui::InputFloat("Anisotropy Strength", &ptMaterialComp->fAnisotropyStrength)) bMaterialModified = true;
472+
if(ImGui::InputFloat("Anisotropy Rotation", &ptMaterialComp->fAnisotropyRotation)) bMaterialModified = true;
473+
if(ImGui::InputFloat3("Sheen Color", ptMaterialComp->tSheenColor.d)) bMaterialModified = true;
474+
if(ImGui::InputFloat("Sheen Roughness", &ptMaterialComp->fSheenRoughness)) bMaterialModified = true;
475+
if(ImGui::InputFloat("Clearcoat", &ptMaterialComp->fClearcoat)) bMaterialModified = true;
476+
if(ImGui::InputFloat("Clearcoat Roughness", &ptMaterialComp->fClearcoatRoughness)) bMaterialModified = true;
477+
if(ImGui::InputFloat("Iridescence Factor", &ptMaterialComp->fIridescenceFactor)) bMaterialModified = true;
478+
if(ImGui::InputFloat("Iridescence IOR", &ptMaterialComp->fIridescenceIor)) bMaterialModified = true;
479+
if(ImGui::InputFloat("Iridescence Thickness Max", &ptMaterialComp->fIridescenceThicknessMax)) bMaterialModified = true;
480+
if(ImGui::InputFloat("Iridescence Thickness Min", &ptMaterialComp->fIridescenceThicknessMin)) bMaterialModified = true;
481+
if(ImGui::InputFloat("Normal Strength", &ptMaterialComp->fNormalMapStrength)) bMaterialModified = true;
482+
if(ImGui::InputFloat("Emissive Strength", &ptMaterialComp->fEmissiveStrength)) bMaterialModified = true;
483+
if(ImGui::InputFloat("IOR", &ptMaterialComp->fIor)) bMaterialModified = true;
484+
if(ImGui::InputFloat("Dispersion", &ptMaterialComp->fDispersion)) bMaterialModified = true;
485+
if(ImGui::InputFloat("Thickness", &ptMaterialComp->fThicknessFactor)) bMaterialModified = true;
486+
if(ImGui::InputFloat("Attenuation Distance", &ptMaterialComp->fAttenuationDistance)) bMaterialModified = true;
487+
if(ImGui::InputFloat3("Attenuation Color", ptMaterialComp->tAttenuationColor.d)) bMaterialModified = true;
488+
473489

474490
if(bMaterialModified)
475491
gptRenderer->update_scene_materials(ptScene, 1, &tEntity);
476492

477493
static const char* apcBlendModeNames[] =
478494
{
479-
"PL_MATERIAL_BLEND_MODE_OPAQUE",
480-
"PL_MATERIAL_BLEND_MODE_ALPHA",
481-
"PL_MATERIAL_BLEND_MODE_PREMULTIPLIED",
495+
"PL_MATERIAL_ALPHA_MODE_OPAQUE",
496+
"PL_MATERIAL_ALPHA_MODE_MASK",
497+
"PL_MATERIAL_ALPHA_MODE_BLEND",
482498
"PL_MATERIAL_BLEND_MODE_ADDITIVE",
483499
"PL_MATERIAL_BLEND_MODE_MULTIPLY",
484500
"PL_MATERIAL_BLEND_MODE_CLIP_MASK"
485501
};
486-
ImGui::LabelText("Blend Mode", "%s", apcBlendModeNames[ptMaterialComp->tBlendMode]);
502+
ImGui::LabelText("Alpha Mode", "%s", apcBlendModeNames[ptMaterialComp->tAlphaMode]);
487503

488504
static const char* apcShaderNames[] =
489505
{
490506
"PL_SHADER_TYPE_PBR",
491-
"PL_SHADER_TYPE_PBR_CLEARCOAT",
492-
"PL_SHADER_TYPE_PBR_SHEEN",
493-
"PL_SHADER_TYPE_CUSTOM"
507+
"PL_SHADER_TYPE_PBR_ADVANCED"
494508
};
495509
ImGui::LabelText("Shader Type", "%s", apcShaderNames[ptMaterialComp->tShaderType]);
496510
ImGui::LabelText("Double Sided", "%s", ptMaterialComp->tFlags & PL_MATERIAL_FLAG_DOUBLE_SIDED ? "true" : "false");
@@ -511,18 +525,17 @@ pl__show_entity_components(plAppData* ptAppData, plScene* ptScene, plEntity tEnt
511525
"PL_TEXTURE_SLOT_CLEARCOAT_NORMAL_MAP",
512526
"PL_TEXTURE_SLOT_SHEEN_COLOR_MAP",
513527
"PL_TEXTURE_SLOT_SHEEN_ROUGHNESS_MAP",
514-
"PL_TEXTURE_SLOT_TRANSMISSION_MAP",
515-
"PL_TEXTURE_SLOT_SPECULAR_MAP",
516-
"PL_TEXTURE_SLOT_SPECULAR_COLOR_MAP",
517-
"PL_TEXTURE_SLOT_ANISOTROPY_MAP",
518-
"PL_TEXTURE_SLOT_SURFACE_MAP",
519528
"PL_TEXTURE_SLOT_IRIDESCENCE_MAP",
520529
"PL_TEXTURE_SLOT_IRIDESCENCE_THICKNESS_MAP"
530+
"PL_TEXTURE_SLOT_ANISOTROPY_MAP",
531+
"PL_TEXTURE_SLOT_TRANSMISSION_MAP",
532+
"PL_TEXTURE_SLOT_THICKNESS_MAP",
521533
};
522534

523535
for(uint32_t i = 0; i < PL_TEXTURE_SLOT_COUNT; i++)
524536
{
525-
ImGui::Text("%s: %s", apcTextureSlotNames[i], ptMaterialComp->atTextureMaps[i].acName[0] == 0 ? " " : "present");
537+
if(ptMaterialComp->atTextureMaps[i].acName[0] != 0)
538+
ImGui::Text("%s", apcTextureSlotNames[i]);
526539
}
527540
ImGui::Unindent();
528541
}

extensions/pl_draw_ext.c

Lines changed: 42 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -455,45 +455,68 @@ pl_request_3d_drawlist(void)
455455
}
456456

457457
static void
458-
pl_return_3d_drawlist(plDrawList3D* ptDrawlist)
458+
pl_return_2d_drawlist(plDrawList2D* ptDrawlist)
459459
{
460+
pl_sb_free(ptDrawlist->sbtVertexBuffer);
461+
pl_sb_free(ptDrawlist->_sbtLayerCache);
462+
pl_sb_free(ptDrawlist->_sbtSubmittedLayers)
460463

461-
pl_sb_free(ptDrawlist->sbtLineIndexBuffer);
462-
pl_sb_free(ptDrawlist->sbtLineVertexBuffer);
463-
pl_sb_free(ptDrawlist->sbtSolidIndexBuffer);
464-
pl_sb_free(ptDrawlist->sbtSolidVertexBuffer);
464+
for(uint32_t j = 0; j < pl_sb_size(ptDrawlist->_sbtLayersCreated); j++)
465+
{
466+
pl_sb_free(ptDrawlist->_sbtLayersCreated[j]->sbtCommandBuffer);
467+
pl_sb_free(ptDrawlist->_sbtLayersCreated[j]->sbtPath);
468+
pl_sb_free(ptDrawlist->_sbtLayersCreated[j]->sbuIndexBuffer);
469+
PL_FREE(ptDrawlist->_sbtLayersCreated[j]);
470+
}
471+
pl_sb_free(ptDrawlist->_sbtLayersCreated);
465472

466473
uint32_t uCurrentIndex = 0;
467-
for(uint32_t i = 0; i < gptDrawCtx->uDrawlistCount3D; i++)
474+
for(uint32_t i = 0; i < gptDrawCtx->uDrawlistCount2D; i++)
468475
{
469-
if(gptDrawCtx->aptDrawlists3D[i] != ptDrawlist) // skip returning drawlist
476+
if(gptDrawCtx->aptDrawlists2D[i] != ptDrawlist) // skip returning drawlist
470477
{
471-
plDrawList3D* ptCurrentDrawlist = gptDrawCtx->aptDrawlists3D[i];
472-
gptDrawCtx->aptDrawlists3D[uCurrentIndex] = ptCurrentDrawlist;
478+
plDrawList2D* ptCurrentDrawlist = gptDrawCtx->aptDrawlists2D[i];
479+
gptDrawCtx->aptDrawlists2D[uCurrentIndex] = ptCurrentDrawlist;
473480
uCurrentIndex++;
474481
}
475482
}
476-
pl_pool_allocator_free(&gptDrawCtx->tDrawlistPool3D, ptDrawlist);
477-
gptDrawCtx->uDrawlistCount3D--;
483+
pl_pool_allocator_free(&gptDrawCtx->tDrawlistPool2D, ptDrawlist);
484+
gptDrawCtx->uDrawlistCount2D--;
478485
}
479486

480487
static void
481-
pl_return_2d_drawlist(plDrawList2D* ptDrawlist)
488+
pl_return_2d_layer(plDrawLayer2D* ptLayer)
482489
{
483-
pl_sb_free(ptDrawlist->sbtVertexBuffer);
490+
ptLayer->ptLastCommand = NULL;
491+
ptLayer->uVertexCount = 0;
492+
pl_sb_reset(ptLayer->sbtCommandBuffer);
493+
pl_sb_reset(ptLayer->sbuIndexBuffer);
494+
pl_sb_reset(ptLayer->sbtPath);
495+
pl_sb_push(ptLayer->ptDrawlist->_sbtLayerCache, ptLayer);
496+
}
497+
498+
static void
499+
pl_return_3d_drawlist(plDrawList3D* ptDrawlist)
500+
{
501+
pl_return_2d_layer(ptDrawlist->ptLayer);
502+
pl_return_2d_drawlist(ptDrawlist->pt2dDrawlist);
503+
pl_sb_free(ptDrawlist->sbtLineIndexBuffer);
504+
pl_sb_free(ptDrawlist->sbtLineVertexBuffer);
505+
pl_sb_free(ptDrawlist->sbtSolidIndexBuffer);
506+
pl_sb_free(ptDrawlist->sbtSolidVertexBuffer);
484507

485508
uint32_t uCurrentIndex = 0;
486-
for(uint32_t i = 0; i < gptDrawCtx->uDrawlistCount2D; i++)
509+
for(uint32_t i = 0; i < gptDrawCtx->uDrawlistCount3D; i++)
487510
{
488-
if(gptDrawCtx->aptDrawlists2D[i] != ptDrawlist) // skip returning drawlist
511+
if(gptDrawCtx->aptDrawlists3D[i] != ptDrawlist) // skip returning drawlist
489512
{
490-
plDrawList2D* ptCurrentDrawlist = gptDrawCtx->aptDrawlists2D[i];
491-
gptDrawCtx->aptDrawlists2D[uCurrentIndex] = ptCurrentDrawlist;
513+
plDrawList3D* ptCurrentDrawlist = gptDrawCtx->aptDrawlists3D[i];
514+
gptDrawCtx->aptDrawlists3D[uCurrentIndex] = ptCurrentDrawlist;
492515
uCurrentIndex++;
493516
}
494517
}
495-
pl_pool_allocator_free(&gptDrawCtx->tDrawlistPool2D, ptDrawlist);
496-
gptDrawCtx->uDrawlistCount2D--;
518+
pl_pool_allocator_free(&gptDrawCtx->tDrawlistPool3D, ptDrawlist);
519+
gptDrawCtx->uDrawlistCount3D--;
497520
}
498521

499522
static void
@@ -545,17 +568,6 @@ pl_prepare_2d_drawlist(plDrawList2D* ptDrawlist)
545568
}
546569
}
547570

548-
static void
549-
pl_return_2d_layer(plDrawLayer2D* ptLayer)
550-
{
551-
ptLayer->ptLastCommand = NULL;
552-
ptLayer->uVertexCount = 0;
553-
pl_sb_reset(ptLayer->sbtCommandBuffer);
554-
pl_sb_reset(ptLayer->sbuIndexBuffer);
555-
pl_sb_reset(ptLayer->sbtPath);
556-
pl_sb_push(ptLayer->ptDrawlist->_sbtLayerCache, ptLayer);
557-
}
558-
559571
static void
560572
pl_submit_2d_layer(plDrawLayer2D* ptLayer)
561573
{

0 commit comments

Comments
 (0)