66#include " nbl/examples/examples.hpp"
77
88// ! Temporary
9- #include " nbl/asset/material_compiler3/IR .h"
9+ #include " nbl/asset/material_compiler3/CFrontendIR .h"
1010
1111
1212using namespace nbl ;
1313using namespace nbl ::core;
1414using namespace nbl ::hlsl;
1515using namespace nbl ::system;
1616using namespace nbl ::asset;
17+ using namespace nbl ::asset::material_compiler3;
1718using namespace nbl ::ui;
1819using namespace nbl ::video;
1920using namespace nbl ::examples;
@@ -39,7 +40,39 @@ class MaterialCompilerTest final : public application_templates::MonoDeviceAppli
3940 if (!asset_base_t::onAppInitialized (std::move (system)))
4041 return false ;
4142
42- //
43+ auto forest = CFrontendIR::create ();
44+
45+ auto logger = m_logger.get ();
46+ // TODO: use std::source_info
47+ #define ASSERT_VALUE (WHAT,VALUE,MSG ) if (WHAT!=VALUE) return logFail(" %s:%d test doesn't match expected value. %s" ,__FILE__,__LINE__,MSG)
48+
49+ // simple white furnace testing materials
50+ {
51+ {
52+ auto layerH = forest->_new <CFrontendIR::CLayer>();
53+ auto * layer = forest->deref (layerH);
54+ // layer->btdf = forest->_new<CFrontendIR::CDeltaTransmission>();
55+ ASSERT_VALUE (forest->addMaterial (layerH,logger),true ," Add Material" );
56+ }
57+ }
58+
59+ smart_refctd_ptr<IFile> file;
60+ {
61+ m_system->deleteFile (localOutputCWD/" frontend.dot" );
62+ ISystem::future_t <smart_refctd_ptr<IFile>> future;
63+ m_system->createFile (future,localOutputCWD/" frontend.dot" ,IFileBase::E_CREATE_FLAGS::ECF_WRITE);
64+ if (!future.wait ())
65+ return logFail (" Failed to Open file for writing" );
66+ future.acquire ().move_into (file);
67+ }
68+ if (file)
69+ {
70+ auto visualization = forest->printDotGraph ();
71+ // file write does not take an internal copy of pointer given, need to keep source alive till end
72+ IFile::success_t succ;
73+ file->write (succ,visualization.c_str (),0 ,visualization.size ());
74+ succ.getBytesProcessed ();
75+ }
4376
4477 return true ;
4578 }
0 commit comments