Loic.bombomby.optick
1.0.0
dotnet add package Loic.bombomby.optick --version 1.0.0
NuGet\Install-Package Loic.bombomby.optick -Version 1.0.0
<PackageReference Include="Loic.bombomby.optick" Version="1.0.0" />
<PackageVersion Include="Loic.bombomby.optick" Version="1.0.0" />
<PackageReference Include="Loic.bombomby.optick" />
paket add Loic.bombomby.optick --version 1.0.0
#r "nuget: Loic.bombomby.optick, 1.0.0"
#:package Loic.bombomby.optick@1.0.0
#addin nuget:?package=Loic.bombomby.optick&version=1.0.0
#tool nuget:?package=Loic.bombomby.optick&version=1.0.0
Optick: C++ Profiler For Games
<br/>
Optick is a super-lightweight C++ profiler for Games.<br/>
It provides access for all the necessary tools required for efficient performance analysis and optimization:<br/>
instrumentation, switch-contexts, sampling, GPU counters.<br/>
Looking for 'Brofiler'? It has been renamed to 'Optick', so you are in the right place.
Build Status
| Windows (x64: msvc) | Linux (x64: clang, gcc) | MacOS (x64: clang, gcc) | Static Code Analysis |
|---|---|---|---|
| Features | Windows | Linux | MacOS | XBox | PS4 | UE4 |
|---|---|---|---|---|---|---|
| Instrumentation | ✔️ | ✔️ | ✔️ | ✔️ | ❔ | ✔️ |
| Switch Contexts | ✔️ ETW | ✔️ FTrace | ✔️ DTrace | ✔️ | ❔ | ✔️ Win |
| Sampling | ✔️ ETW | ❔ | ❔ | ✔️ Win | ||
| GPU | ✔️ D3D12, Vulkan | ✔️ Vulkan | ✔️ Vulkan | ⏳ |
✔️ - works out of the box, ⏳ - in progress, ❔ - coming soon for the certified developers
List of Games and Studios using Optick(Brofiler)
![]()
Video Tutorial
Basic Integration (one line of code)
- Copy 'src' folder from the repository or latest release to your game project
- Add
OPTICK_FRAME("MainThread");macro to the main loop of your game and#include "optick.h"header
#include "optick.h"
...
while( true )
{
OPTICK_FRAME("MainThread");
engine.Update();
}
- Use
OPTICK_EVENT();macro to instrument a function
void SlowFunction()
{
OPTICK_EVENT();
...
}
- Add
OPTICK_THREAD("Name");macro to declare a new thread with Optick
void WorkerThread(...)
{
OPTICK_THREAD("Worker");
while (isRunning)
{
...
}
}
- Edit
optick.config.hto enable/disable some of the features in specific configs or platforms.<br/>(e.g. disabling Optick in final builds)
⚠️ If your Game uses dynamic linking and you are planning to use Optick from multiple dlls within the same executable - please make sure that Optick's code is added to the common Dynamic Library and this library is compiled with OPTICK_EXPORT define (Static Library won't work).<br/> You could also use precompiled OptickCore.dll which is packaged with every release:
- Add
includefolder to the extra include dirs of your project- Add
lib/x64/debugandlib/x64/releaseto the extra library dirs of your project- Copy
lib/x64/debug/OptickCore.dllandlib/x64/release/OptickCore.dllto the debug and release output folders of your project respectively
API
All the available API calls are documented here:<br/> https://github.com/bombomby/optick/wiki/Optick-API
Unreal Engine
Optick provides a special plugin for UE4. Check more detailed documentation here:
https://github.com/bombomby/optick/wiki/UE4-Optick-Plugin <br/>

Samples
Run GenerateProjects_gpu.bat to generate project files. To compile the samples you'll need to install VulkanSDK. Alternatively you could use GenerateProjects.bat to generate only minimal solution with ConsoleApp sample.<br/>
Open solution build\vs2017\Optick.sln with generated samples.
| WindowsD3D12 | WindowsVulkan | ConsoleApp |
|---|---|---|
![]() |
![]() |
![]() |
| DirectX12 multithreading sample with Optick integration | SaschaWillems's vulkan multithreading sample with Optick integration | Basic ConsoleApp with Optick integration (Windows, Linux, MacOS) |
Brofiler
Brofiler has been renamed into Optick starting from v1.2.0.<br/> All the future development is going under the new name.<br/> Cheatsheet for upgrading to the new version:
BROFILER_FRAME("MainThread");⇒OPTICK_FRAME("MainThread");BROFILER_THREAD("WorkerThread");⇒OPTICK_THREAD("WorkerThread");BROFILER_CATEGORY("Physics", Brofiler::Color::Green);⇒OPTICK_CATEGORY("Physics", Optick::Category::Physics);BROFILER_EVENT(NAME);⇒OPTICK_EVENT(NAME);PROFILE;⇒OPTICK_EVENT();
How To Start?
You can find a short instruction here:<br/> https://github.com/bombomby/optick/wiki/How-to-start%3F-(Programmers-Setup)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net5.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 0 | 7/31/2021 |


