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.h
to 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
include
folder to the extra include dirs of your project- Add
lib/x64/debug
andlib/x64/release
to the extra library dirs of your project- Copy
lib/x64/debug/OptickCore.dll
andlib/x64/release/OptickCore.dll
to 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 |