Nvidia 예제 https://developer.nvidia.com/rtx/raytracing/dxr/DX12-Raytracing-tutorial-Part-1 BLAS/TLAS, SBT 가 먼지 파악해야함; Goal of the tutorial 이라는데 우선, 다른 블로그에서 Nvidia sample이 작동안한다고해서 다른 예제 찾았는데 패치해서 그런지, https://github.com/microsoft/DirectX-Graphics-Samples/tree/master/Samples/Desktop/D3D12Raytracing 잘 작동한다 오버모드 동작시 부팅이 안되는 RTX 2060의 마지막 작업이될듯 http://waycos.co.kr/colorful/bbs/board.php?bo_table=as&..
void VulkanDriver::destroyVertexBuffer(Handle vbh) { if (vbh) { auto vertexBuffer = handle_cast(mHandleMap, vbh); mDisposer.removeReference(vertexBuffer); } } 단순 void VulkanDisposer::removeReference(Key resource) noexcept { assert(mDisposables[resource].refcount > 0); if (--mDisposables[resource].refcount == 0) { mGraveyard.emplace_back(std::move(mDisposables[resource])); mDisposables.erase(reso..
Template argument deduction이 된다는건 대충 알고있었는데, c++17 이나 필요할줄은 몰랐다 xcode 그냥은 14라 빌드가 안되더라 https://stackoverflow.com/questions/53483124/reference-wrapper-make-pair-vs-class-template-argument-deduction-ctad #include template struct CommandType { using SavedParameters = std::tuple; SavedParameters mArgs; CommandType(ARGS ... args) : mArgs(std::move(args)...) { } }; int main() { int i = 0; float f = 0...
우선 링크 모음 https://wendys.tistory.com/category/%E2%8C%A8%20DEVELOPMENT/WIndows%20Hooking https://add2paper.github.io/2015/06/15/Complex-API-Hooking-Model/ https://nobilitycat.tistory.com/entry/Win32-API-Hooking-DLL-Injection-Trampoline-Code-Hooking?category=773288 https://wendys.tistory.com/161?category=757973 https://github.com/khycan/API-Hooking https://secmem.tistory.com/480
https://github.com/LunarG/VulkanTools/blob/master/vktrace/vktrace_layer/vktrace_lib_pageguardmappedmemory.cpp // OPT: Optimization by using page-guard for speed up capture // The speed is extremely slow when use vktrace to capture DOOM4. It took over half a day and 900G of trace for a capture from // beginning to the game menu. 로 시작하는 부분을 보면 대략 알 수 있다. https://github.com/LunarG/VulkanTools/blob/..
ostream 에 1이 출력되는 이유는, pointer가 bool 로 바껴서 그렇다 bool check 로 생각하면됨 전역 lambda capture로 1로 변환됨; https://lunapiece.net/Article/14007902 https://stackoverflow.com/questions/21958261/outputstream-prints-1-for-some-reason https://stackoverflow.com/questions/2064692/how-to-print-function-pointers-with-cout // 27.7.2.6 Formatted output: inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_ostream& operator
https://manu343726.github.io/2017-03-13-lock-free-job-stealing-task-system-with-modern-c/ https://blog.molecular-matters.com/2015/08/24/job-system-2-0-lock-free-work-stealing-part-1-basics/ https://codereview.stackexchange.com/questions/169377/work-stealing-queue
thread에서 exception 난거 처리안하면 SIGABORT 걸린당 https://www.acodersjourney.com/top-20-cplusplus-multithreading-mistakes/ ``` #include #include #include #include static std::exception_ptr teptr = nullptr; void LaunchRocket() { throw std::runtime_error("Catch me in MAIN"); } int main() { try { std::thread t1(LaunchRocket); t1.join(); } catch (const std::exception &ex) { std::cout
Filament의 소스의 command buffer는 circularBuffer를 이용하여 구현되어있다. 그 중 CircularBuffer (ring buffer) 구현이 독특해서 알아봤다 magic ringbuffer 라는 트릭은, mmap으로 공간을 2배로 할당받은 뒤, 그 할당받은 영역의 주소를 반으로 나눠 다시 mmap으로 매핑하는데, 이때 같은 대상을 가르키게 한다 (여기선 fd) 그럼 첫번째 버퍼를 size 보다 크게 기록하는 오버플로우 시, 붙어있던 2번째 버퍼의 영역에 기록을 하게 되는데 메모리 유닛이 이때, 같은 대상을 가르키므로, 자동으로 원래 버퍼의 처음 영역에 기록하여준다 아래 링크의 이미지를 보는게 이해하기 쉽다 https://github.com/willemt/cbuffer/blo..
- Total
- Today
- Yesterday