Merge branch 'master' of github.com:bkaradzic/bgfx
This commit is contained in:
commit
e36890f6d8
226
3rdparty/dear-imgui/imgui.cpp
vendored
226
3rdparty/dear-imgui/imgui.cpp
vendored
@ -7,9 +7,12 @@
|
|||||||
// Releases change-log at https://github.com/ocornut/imgui/releases
|
// Releases change-log at https://github.com/ocornut/imgui/releases
|
||||||
// Technical Support for Getting Started https://discourse.dearimgui.org/c/getting-started
|
// Technical Support for Getting Started https://discourse.dearimgui.org/c/getting-started
|
||||||
// Gallery (please post your screenshots/video there!): https://github.com/ocornut/imgui/issues/1269
|
// Gallery (please post your screenshots/video there!): https://github.com/ocornut/imgui/issues/1269
|
||||||
|
|
||||||
// Developed by Omar Cornut and every direct or indirect contributors to the GitHub.
|
// Developed by Omar Cornut and every direct or indirect contributors to the GitHub.
|
||||||
|
// See LICENSE.txt for copyright and licensing details (standard MIT License).
|
||||||
// This library is free but I need your support to sustain development and maintenance.
|
// This library is free but I need your support to sustain development and maintenance.
|
||||||
// If you work for a company, please consider financial support, see README. For individuals: https://www.patreon.com/imgui
|
// Businesses: you can support continued maintenance and development via support contracts or sponsoring, see docs/README.
|
||||||
|
// Individuals: you can support continued maintenance and development via donations or Patreon https://www.patreon.com/imgui.
|
||||||
|
|
||||||
// It is recommended that you don't modify imgui.cpp! It will become difficult for you to update the library.
|
// It is recommended that you don't modify imgui.cpp! It will become difficult for you to update the library.
|
||||||
// Note that 'ImGui::' being a namespace, you can add functions into the namespace from your own source files, without
|
// Note that 'ImGui::' being a namespace, you can add functions into the namespace from your own source files, without
|
||||||
@ -26,17 +29,17 @@ DOCUMENTATION
|
|||||||
- MISSION STATEMENT
|
- MISSION STATEMENT
|
||||||
- END-USER GUIDE
|
- END-USER GUIDE
|
||||||
- PROGRAMMER GUIDE (read me!)
|
- PROGRAMMER GUIDE (read me!)
|
||||||
- Read first
|
- Read first.
|
||||||
- How to update to a newer version of Dear ImGui
|
- How to update to a newer version of Dear ImGui.
|
||||||
- Getting started with integrating Dear ImGui in your code/engine
|
- Getting started with integrating Dear ImGui in your code/engine.
|
||||||
- This is how a simple application may look like (2 variations)
|
- This is how a simple application may look like (2 variations).
|
||||||
- This is how a simple rendering function may look like
|
- This is how a simple rendering function may look like.
|
||||||
- Using gamepad/keyboard navigation controls
|
- Using gamepad/keyboard navigation controls.
|
||||||
- API BREAKING CHANGES (read me when you update!)
|
- API BREAKING CHANGES (read me when you update!)
|
||||||
- FREQUENTLY ASKED QUESTIONS (FAQ), TIPS
|
- FREQUENTLY ASKED QUESTIONS (FAQ), TIPS
|
||||||
- How can I tell whether to dispatch mouse/keyboard to imgui or to my application?
|
- How can I tell whether to dispatch mouse/keyboard to imgui or to my application?
|
||||||
- How can I display an image? What is ImTextureID, how does it works?
|
- How can I display an image? What is ImTextureID, how does it works?
|
||||||
- How can I have multiple widgets with the same label or without a label? A primer on labels and the ID Stack.
|
- How can I have multiple widgets with the same label or with an empty label? A primer on labels and the ID Stack.
|
||||||
- How can I use my own math types instead of ImVec2/ImVec4?
|
- How can I use my own math types instead of ImVec2/ImVec4?
|
||||||
- How can I load a different font than the default?
|
- How can I load a different font than the default?
|
||||||
- How can I easily use icons in my application?
|
- How can I easily use icons in my application?
|
||||||
@ -84,19 +87,19 @@ CODE
|
|||||||
MISSION STATEMENT
|
MISSION STATEMENT
|
||||||
=================
|
=================
|
||||||
|
|
||||||
- Easy to use to create code-driven and data-driven tools
|
- Easy to use to create code-driven and data-driven tools.
|
||||||
- Easy to use to create ad hoc short-lived tools and long-lived, more elaborate tools
|
- Easy to use to create ad hoc short-lived tools and long-lived, more elaborate tools.
|
||||||
- Easy to hack and improve
|
- Easy to hack and improve.
|
||||||
- Minimize screen real-estate usage
|
- Minimize screen real-estate usage.
|
||||||
- Minimize setup and maintenance
|
- Minimize setup and maintenance.
|
||||||
- Minimize state storage on user side
|
- Minimize state storage on user side.
|
||||||
- Portable, minimize dependencies, run on target (consoles, phones, etc.)
|
- Portable, minimize dependencies, run on target (consoles, phones, etc.).
|
||||||
- Efficient runtime and memory consumption (NB- we do allocate when "growing" content e.g. creating a window,
|
- Efficient runtime and memory consumption (NB- we do allocate when "growing" content e.g. creating a window,.
|
||||||
opening a tree node for the first time, etc. but a typical frame should not allocate anything)
|
opening a tree node for the first time, etc. but a typical frame should not allocate anything).
|
||||||
|
|
||||||
Designed for developers and content-creators, not the typical end-user! Some of the weaknesses includes:
|
Designed for developers and content-creators, not the typical end-user! Some of the weaknesses includes:
|
||||||
- Doesn't look fancy, doesn't animate
|
- Doesn't look fancy, doesn't animate.
|
||||||
- Limited layout features, intricate layouts are typically crafted in code
|
- Limited layout features, intricate layouts are typically crafted in code.
|
||||||
|
|
||||||
|
|
||||||
END-USER GUIDE
|
END-USER GUIDE
|
||||||
@ -126,16 +129,29 @@ CODE
|
|||||||
PROGRAMMER GUIDE
|
PROGRAMMER GUIDE
|
||||||
================
|
================
|
||||||
|
|
||||||
READ FIRST
|
READ FIRST:
|
||||||
|
|
||||||
- Read the FAQ below this section!
|
- Read the FAQ below this section!
|
||||||
- Your code creates the UI, if your code doesn't run the UI is gone! The UI can be highly dynamic, there are no construction
|
- Your code creates the UI, if your code doesn't run the UI is gone! The UI can be highly dynamic, there are no construction
|
||||||
or destruction steps, less superfluous data retention on your side, less state duplication, less state synchronization, less bugs.
|
or destruction steps, less superfluous data retention on your side, less state duplication, less state synchronization, less bugs.
|
||||||
- Call and read ImGui::ShowDemoWindow() for demo code demonstrating most features.
|
- Call and read ImGui::ShowDemoWindow() for demo code demonstrating most features.
|
||||||
- You can learn about immediate-mode GUI principles at http://www.johno.se/book/imgui.html or watch http://mollyrocket.com/861
|
- The library is designed to be built from sources. Avoid pre-compiled binaries and packaged versions. See imconfig.h to configure your build.
|
||||||
See README.md for more links describing the IMGUI paradigm. Dear ImGui is an implementation of the IMGUI paradigm.
|
- Dear ImGui is an implementation of the IMGUI paradigm (immediate-mode graphical user interface, a term coined by Casey Muratori).
|
||||||
|
You can learn about IMGUI principles at http://www.johno.se/book/imgui.html, http://mollyrocket.com/861 & more links docs/README.md.
|
||||||
|
- Dear ImGui is a "single pass" rasterizing implementation of the IMGUI paradigm, aimed at ease of use and high-performances.
|
||||||
|
For every application frame your UI code will be called only once. This is in contrast to e.g. Unity's own implementation of an IMGUI,
|
||||||
|
where the UI code is called multiple times ("multiple passes") from a single entry point. There are pros and cons to both approaches.
|
||||||
|
- Our origin are on the top-left. In axis aligned bounding boxes, Min = top-left, Max = bottom-right.
|
||||||
|
- This codebase is also optimized to yield decent performances with typical "Debug" builds settings.
|
||||||
|
- Please make sure you have asserts enabled (IM_ASSERT redirects to assert() by default, but can be redirected).
|
||||||
|
If you get an assert, read the messages and comments around the assert.
|
||||||
|
- C++: this is a very C-ish codebase: we don't rely on C++11, we don't include any C++ headers, and ImGui:: is a namespace.
|
||||||
|
- C++: ImVec2/ImVec4 do not expose math operators by default, because it is expected that you use your own math types.
|
||||||
|
See FAQ "How can I use my own math types instead of ImVec2/ImVec4?" for details about setting up imconfig.h for that.
|
||||||
|
However, imgui_internal.h can optionally export math operators for ImVec2/ImVec4, which we use in this codebase.
|
||||||
|
- C++: pay attention that ImVector<> manipulates plain-old-data and does not honor construction/destruction (avoid using it in your code!).
|
||||||
|
|
||||||
HOW TO UPDATE TO A NEWER VERSION OF DEAR IMGUI
|
HOW TO UPDATE TO A NEWER VERSION OF DEAR IMGUI:
|
||||||
|
|
||||||
- Overwrite all the sources files except for imconfig.h (if you have made modification to your copy of imconfig.h)
|
- Overwrite all the sources files except for imconfig.h (if you have made modification to your copy of imconfig.h)
|
||||||
- Or maintain your own branch where you have imconfig.h modified.
|
- Or maintain your own branch where you have imconfig.h modified.
|
||||||
@ -145,7 +161,7 @@ CODE
|
|||||||
likely be a comment about it. Please report any issue to the GitHub page!
|
likely be a comment about it. Please report any issue to the GitHub page!
|
||||||
- Try to keep your copy of dear imgui reasonably up to date.
|
- Try to keep your copy of dear imgui reasonably up to date.
|
||||||
|
|
||||||
GETTING STARTED WITH INTEGRATING DEAR IMGUI IN YOUR CODE/ENGINE
|
GETTING STARTED WITH INTEGRATING DEAR IMGUI IN YOUR CODE/ENGINE:
|
||||||
|
|
||||||
- Run and study the examples and demo in imgui_demo.cpp to get acquainted with the library.
|
- Run and study the examples and demo in imgui_demo.cpp to get acquainted with the library.
|
||||||
- Add the Dear ImGui source files to your projects or using your preferred build system.
|
- Add the Dear ImGui source files to your projects or using your preferred build system.
|
||||||
@ -158,8 +174,8 @@ CODE
|
|||||||
- Refer to the bindings and demo applications in the examples/ folder for instruction on how to setup your code.
|
- Refer to the bindings and demo applications in the examples/ folder for instruction on how to setup your code.
|
||||||
- If you are running over a standard OS with a common graphics API, you should be able to use unmodified imgui_impl_*** files from the examples/ folder.
|
- If you are running over a standard OS with a common graphics API, you should be able to use unmodified imgui_impl_*** files from the examples/ folder.
|
||||||
|
|
||||||
HOW A SIMPLE APPLICATION MAY LOOK LIKE
|
HOW A SIMPLE APPLICATION MAY LOOK LIKE:
|
||||||
EXHIBIT 1: USING THE EXAMPLE BINDINGS (imgui_impl_XXX.cpp files from the examples/ folder)
|
EXHIBIT 1: USING THE EXAMPLE BINDINGS (imgui_impl_XXX.cpp files from the examples/ folder).
|
||||||
|
|
||||||
// Application init: create a dear imgui context, setup some options, load fonts
|
// Application init: create a dear imgui context, setup some options, load fonts
|
||||||
ImGui::CreateContext();
|
ImGui::CreateContext();
|
||||||
@ -194,8 +210,8 @@ CODE
|
|||||||
ImGui_ImplWin32_Shutdown();
|
ImGui_ImplWin32_Shutdown();
|
||||||
ImGui::DestroyContext();
|
ImGui::DestroyContext();
|
||||||
|
|
||||||
HOW A SIMPLE APPLICATION MAY LOOK LIKE
|
HOW A SIMPLE APPLICATION MAY LOOK LIKE:
|
||||||
EXHIBIT 2: IMPLEMENTING CUSTOM BINDING / CUSTOM ENGINE
|
EXHIBIT 2: IMPLEMENTING CUSTOM BINDING / CUSTOM ENGINE.
|
||||||
|
|
||||||
// Application init: create a dear imgui context, setup some options, load fonts
|
// Application init: create a dear imgui context, setup some options, load fonts
|
||||||
ImGui::CreateContext();
|
ImGui::CreateContext();
|
||||||
@ -249,16 +265,17 @@ CODE
|
|||||||
// Shutdown
|
// Shutdown
|
||||||
ImGui::DestroyContext();
|
ImGui::DestroyContext();
|
||||||
|
|
||||||
HOW A SIMPLE RENDERING FUNCTION MAY LOOK LIKE
|
HOW A SIMPLE RENDERING FUNCTION MAY LOOK LIKE:
|
||||||
|
|
||||||
void void MyImGuiRenderFunction(ImDrawData* draw_data)
|
void void MyImGuiRenderFunction(ImDrawData* draw_data)
|
||||||
{
|
{
|
||||||
// TODO: Setup render state: alpha-blending enabled, no face culling, no depth testing, scissor enabled
|
// TODO: Setup render state: alpha-blending enabled, no face culling, no depth testing, scissor enabled
|
||||||
// TODO: Setup viewport using draw_data->DisplaySize
|
// TODO: Setup viewport covering draw_data->DisplayPos to draw_data->DisplayPos + draw_data->DisplaySize
|
||||||
// TODO: Setup orthographic projection matrix cover draw_data->DisplayPos to draw_data->DisplayPos + draw_data->DisplaySize
|
// TODO: Setup orthographic projection matrix cover draw_data->DisplayPos to draw_data->DisplayPos + draw_data->DisplaySize
|
||||||
// TODO: Setup shader: vertex { float2 pos, float2 uv, u32 color }, fragment shader sample color from 1 texture, multiply by vertex color.
|
// TODO: Setup shader: vertex { float2 pos, float2 uv, u32 color }, fragment shader sample color from 1 texture, multiply by vertex color.
|
||||||
for (int n = 0; n < draw_data->CmdListsCount; n++)
|
for (int n = 0; n < draw_data->CmdListsCount; n++)
|
||||||
{
|
{
|
||||||
|
const ImDrawList* cmd_list = draw_data->CmdLists[n];
|
||||||
const ImDrawVert* vtx_buffer = cmd_list->VtxBuffer.Data; // vertex buffer generated by ImGui
|
const ImDrawVert* vtx_buffer = cmd_list->VtxBuffer.Data; // vertex buffer generated by ImGui
|
||||||
const ImDrawIdx* idx_buffer = cmd_list->IdxBuffer.Data; // index buffer generated by ImGui
|
const ImDrawIdx* idx_buffer = cmd_list->IdxBuffer.Data; // index buffer generated by ImGui
|
||||||
for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++)
|
for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++)
|
||||||
@ -467,7 +484,7 @@ CODE
|
|||||||
- the signature of the io.RenderDrawListsFn handler has changed!
|
- the signature of the io.RenderDrawListsFn handler has changed!
|
||||||
old: ImGui_XXXX_RenderDrawLists(ImDrawList** const cmd_lists, int cmd_lists_count)
|
old: ImGui_XXXX_RenderDrawLists(ImDrawList** const cmd_lists, int cmd_lists_count)
|
||||||
new: ImGui_XXXX_RenderDrawLists(ImDrawData* draw_data).
|
new: ImGui_XXXX_RenderDrawLists(ImDrawData* draw_data).
|
||||||
argument: 'cmd_lists' becomes 'draw_data->CmdLists', 'cmd_lists_count' becomes 'draw_data->CmdListsCount'
|
parameters: 'cmd_lists' becomes 'draw_data->CmdLists', 'cmd_lists_count' becomes 'draw_data->CmdListsCount'
|
||||||
ImDrawList: 'commands' becomes 'CmdBuffer', 'vtx_buffer' becomes 'VtxBuffer', 'IdxBuffer' is new.
|
ImDrawList: 'commands' becomes 'CmdBuffer', 'vtx_buffer' becomes 'VtxBuffer', 'IdxBuffer' is new.
|
||||||
ImDrawCmd: 'vtx_count' becomes 'ElemCount', 'clip_rect' becomes 'ClipRect', 'user_callback' becomes 'UserCallback', 'texture_id' becomes 'TextureId'.
|
ImDrawCmd: 'vtx_count' becomes 'ElemCount', 'clip_rect' becomes 'ClipRect', 'user_callback' becomes 'UserCallback', 'texture_id' becomes 'TextureId'.
|
||||||
- each ImDrawList now contains both a vertex buffer and an index buffer. For each command, render ElemCount/3 triangles using indices from the index buffer.
|
- each ImDrawList now contains both a vertex buffer and an index buffer. For each command, render ElemCount/3 triangles using indices from the index buffer.
|
||||||
@ -500,9 +517,9 @@ CODE
|
|||||||
- 2015/01/19 (1.30) - renamed ImGuiStorage::GetIntPtr()/GetFloatPtr() to GetIntRef()/GetIntRef() because Ptr was conflicting with actual pointer storage functions.
|
- 2015/01/19 (1.30) - renamed ImGuiStorage::GetIntPtr()/GetFloatPtr() to GetIntRef()/GetIntRef() because Ptr was conflicting with actual pointer storage functions.
|
||||||
- 2015/01/11 (1.30) - big font/image API change! now loads TTF file. allow for multiple fonts. no need for a PNG loader.
|
- 2015/01/11 (1.30) - big font/image API change! now loads TTF file. allow for multiple fonts. no need for a PNG loader.
|
||||||
(1.30) - removed GetDefaultFontData(). uses io.Fonts->GetTextureData*() API to retrieve uncompressed pixels.
|
(1.30) - removed GetDefaultFontData(). uses io.Fonts->GetTextureData*() API to retrieve uncompressed pixels.
|
||||||
font init: const void* png_data; unsigned int png_size; ImGui::GetDefaultFontData(NULL, NULL, &png_data, &png_size); <..Upload texture to GPU..>
|
font init: { const void* png_data; unsigned int png_size; ImGui::GetDefaultFontData(NULL, NULL, &png_data, &png_size); <..Upload texture to GPU..>; }
|
||||||
became: unsigned char* pixels; int width, height; io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height); <..Upload texture to GPU>; io.Fonts->TexId = YourTextureIdentifier;
|
became: { unsigned char* pixels; int width, height; io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height); <..Upload texture to GPU>; io.Fonts->TexId = YourTextureIdentifier; }
|
||||||
you now more flexibility to load multiple TTF fonts and manage the texture buffer for internal needs.
|
you now have more flexibility to load multiple TTF fonts and manage the texture buffer for internal needs.
|
||||||
it is now recommended that you sample the font texture with bilinear interpolation.
|
it is now recommended that you sample the font texture with bilinear interpolation.
|
||||||
(1.30) - added texture identifier in ImDrawCmd passed to your render function (we can now render images). make sure to set io.Fonts->TexID.
|
(1.30) - added texture identifier in ImDrawCmd passed to your render function (we can now render images). make sure to set io.Fonts->TexID.
|
||||||
(1.30) - removed IO.PixelCenterOffset (unnecessary, can be handled in user projection matrix)
|
(1.30) - removed IO.PixelCenterOffset (unnecessary, can be handled in user projection matrix)
|
||||||
@ -624,7 +641,7 @@ CODE
|
|||||||
|
|
||||||
Finally, you may call ImGui::ShowMetricsWindow() to explore/visualize/understand how the ImDrawList are generated.
|
Finally, you may call ImGui::ShowMetricsWindow() to explore/visualize/understand how the ImDrawList are generated.
|
||||||
|
|
||||||
Q: How can I have multiple widgets with the same label or without a label?
|
Q: How can I have multiple widgets with the same label or with an empty label?
|
||||||
Q: I have multiple widgets with the same label, and only the first one works. Why is that?
|
Q: I have multiple widgets with the same label, and only the first one works. Why is that?
|
||||||
A: A primer on labels and the ID Stack...
|
A: A primer on labels and the ID Stack...
|
||||||
|
|
||||||
@ -646,6 +663,9 @@ CODE
|
|||||||
Begin("MyWindow");
|
Begin("MyWindow");
|
||||||
Button("OK"); // Label = "OK", ID = hash of ("MyWindow", "OK")
|
Button("OK"); // Label = "OK", ID = hash of ("MyWindow", "OK")
|
||||||
End();
|
End();
|
||||||
|
Begin("MyOtherWindow");
|
||||||
|
Button("OK"); // Label = "OK", ID = hash of ("MyOtherWindow", "OK")
|
||||||
|
End();
|
||||||
|
|
||||||
- If you have a same ID twice in the same location, you'll have a conflict:
|
- If you have a same ID twice in the same location, you'll have a conflict:
|
||||||
|
|
||||||
@ -685,32 +705,33 @@ CODE
|
|||||||
within the same window. This is the most convenient way of distinguishing ID when iterating and
|
within the same window. This is the most convenient way of distinguishing ID when iterating and
|
||||||
creating many UI elements programmatically.
|
creating many UI elements programmatically.
|
||||||
You can push a pointer, a string or an integer value into the ID stack.
|
You can push a pointer, a string or an integer value into the ID stack.
|
||||||
Remember that ID are formed from the concatenation of _everything_ in the ID stack!
|
Remember that ID are formed from the concatenation of _everything_ pushed into the ID stack.
|
||||||
|
At each level of the stack we store the seed used for items at this level of the ID stack.
|
||||||
|
|
||||||
Begin("Window");
|
Begin("Window");
|
||||||
for (int i = 0; i < 100; i++)
|
for (int i = 0; i < 100; i++)
|
||||||
{
|
{
|
||||||
PushID(i); // Push i to the id tack
|
PushID(i); // Push i to the id tack
|
||||||
Button("Click"); // Label = "Click", ID = Hash of ("Window", i, "Click")
|
Button("Click"); // Label = "Click", ID = hash of ("Window", i, "Click")
|
||||||
PopID();
|
PopID();
|
||||||
}
|
}
|
||||||
for (int i = 0; i < 100; i++)
|
for (int i = 0; i < 100; i++)
|
||||||
{
|
{
|
||||||
MyObject* obj = Objects[i];
|
MyObject* obj = Objects[i];
|
||||||
PushID(obj);
|
PushID(obj);
|
||||||
Button("Click"); // Label = "Click", ID = Hash of ("Window", obj pointer, "Click")
|
Button("Click"); // Label = "Click", ID = hash of ("Window", obj pointer, "Click")
|
||||||
PopID();
|
PopID();
|
||||||
}
|
}
|
||||||
for (int i = 0; i < 100; i++)
|
for (int i = 0; i < 100; i++)
|
||||||
{
|
{
|
||||||
MyObject* obj = Objects[i];
|
MyObject* obj = Objects[i];
|
||||||
PushID(obj->Name);
|
PushID(obj->Name);
|
||||||
Button("Click"); // Label = "Click", ID = Hash of ("Window", obj->Name, "Click")
|
Button("Click"); // Label = "Click", ID = hash of ("Window", obj->Name, "Click")
|
||||||
PopID();
|
PopID();
|
||||||
}
|
}
|
||||||
End();
|
End();
|
||||||
|
|
||||||
- More example showing that you can stack multiple prefixes into the ID stack:
|
- You can stack multiple prefixes into the ID stack:
|
||||||
|
|
||||||
Button("Click"); // Label = "Click", ID = hash of (..., "Click")
|
Button("Click"); // Label = "Click", ID = hash of (..., "Click")
|
||||||
PushID("node");
|
PushID("node");
|
||||||
@ -723,7 +744,7 @@ CODE
|
|||||||
- Tree nodes implicitly creates a scope for you by calling PushID().
|
- Tree nodes implicitly creates a scope for you by calling PushID().
|
||||||
|
|
||||||
Button("Click"); // Label = "Click", ID = hash of (..., "Click")
|
Button("Click"); // Label = "Click", ID = hash of (..., "Click")
|
||||||
if (TreeNode("node"))
|
if (TreeNode("node")) // <-- this function call will do a PushID() for you (unless instructed not to, with a special flag)
|
||||||
{
|
{
|
||||||
Button("Click"); // Label = "Click", ID = hash of (..., "node", "Click")
|
Button("Click"); // Label = "Click", ID = hash of (..., "node", "Click")
|
||||||
TreePop();
|
TreePop();
|
||||||
@ -745,7 +766,8 @@ CODE
|
|||||||
ImGuiIO& io = ImGui::GetIO();
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_in_pixels);
|
io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_in_pixels);
|
||||||
io.Fonts->GetTexDataAsRGBA32() or GetTexDataAsAlpha8()
|
io.Fonts->GetTexDataAsRGBA32() or GetTexDataAsAlpha8()
|
||||||
Default is ProggyClean.ttf, rendered at size 13, embedded in dear imgui's source code.
|
Default is ProggyClean.ttf, monospace, rendered at size 13, embedded in dear imgui's source code.
|
||||||
|
(Tip: monospace fonts are convenient because they allow to facilitate horizontal alignment directly at the string level.)
|
||||||
(Read the 'misc/fonts/README.txt' file for more details about font loading.)
|
(Read the 'misc/fonts/README.txt' file for more details about font loading.)
|
||||||
|
|
||||||
New programmers: remember that in C/C++ and most programming languages if you want to use a
|
New programmers: remember that in C/C++ and most programming languages if you want to use a
|
||||||
@ -757,6 +779,7 @@ CODE
|
|||||||
Q: How can I easily use icons in my application?
|
Q: How can I easily use icons in my application?
|
||||||
A: The most convenient and practical way is to merge an icon font such as FontAwesome inside you
|
A: The most convenient and practical way is to merge an icon font such as FontAwesome inside you
|
||||||
main font. Then you can refer to icons within your strings.
|
main font. Then you can refer to icons within your strings.
|
||||||
|
You may want to see ImFontConfig::GlyphMinAdvanceX to make your icon look monospace to facilitate alignment.
|
||||||
(Read the 'misc/fonts/README.txt' file for more details about icons font loading.)
|
(Read the 'misc/fonts/README.txt' file for more details about icons font loading.)
|
||||||
|
|
||||||
Q: How can I load multiple fonts?
|
Q: How can I load multiple fonts?
|
||||||
@ -846,10 +869,12 @@ CODE
|
|||||||
Rectangles provided by ImGui are defined as (x1=left,y1=top,x2=right,y2=bottom) and NOT as (x1,y1,width,height).
|
Rectangles provided by ImGui are defined as (x1=left,y1=top,x2=right,y2=bottom) and NOT as (x1,y1,width,height).
|
||||||
|
|
||||||
Q: How can I help?
|
Q: How can I help?
|
||||||
A: - If you are experienced with Dear ImGui and C++, look at the github issues, or docs/TODO.txt and see how you want/can help!
|
A: - If you are experienced with Dear ImGui and C++, look at the github issues, look at the Wiki, read docs/TODO.txt
|
||||||
- Convince your company to sponsor/fund development! Individual users: you can also become a Patron (patreon.com/imgui) or donate on PayPal! See README.
|
and see how you want to help and can help!
|
||||||
|
- Businesses: convince your company to fund development via support contracts/sponsoring! This is among the most useful thing you can do for dear imgui.
|
||||||
|
- Individuals: you can also become a Patron (http://www.patreon.com/imgui) or donate on PayPal! See README.
|
||||||
- Disclose your usage of dear imgui via a dev blog post, a tweet, a screenshot, a mention somewhere etc.
|
- Disclose your usage of dear imgui via a dev blog post, a tweet, a screenshot, a mention somewhere etc.
|
||||||
You may post screenshot or links in the gallery threads (github.com/ocornut/imgui/issues/1269). Visuals are ideal as they inspire other programmers.
|
You may post screenshot or links in the gallery threads (github.com/ocornut/imgui/issues/1902). Visuals are ideal as they inspire other programmers.
|
||||||
But even without visuals, disclosing your use of dear imgui help the library grow credibility, and help other teams and programmers with taking decisions.
|
But even without visuals, disclosing your use of dear imgui help the library grow credibility, and help other teams and programmers with taking decisions.
|
||||||
- If you have issues or if you need to hack into the library, even if you don't expect any support it is useful that you share your issues (on github or privately).
|
- If you have issues or if you need to hack into the library, even if you don't expect any support it is useful that you share your issues (on github or privately).
|
||||||
|
|
||||||
@ -2948,7 +2973,7 @@ void ImGui::StartMouseMovingWindow(ImGuiWindow* window)
|
|||||||
|
|
||||||
// Handle mouse moving window
|
// Handle mouse moving window
|
||||||
// Note: moving window with the navigation keys (Square + d-pad / CTRL+TAB + Arrows) are processed in NavUpdateWindowing()
|
// Note: moving window with the navigation keys (Square + d-pad / CTRL+TAB + Arrows) are processed in NavUpdateWindowing()
|
||||||
void ImGui::UpdateMouseMovingWindow()
|
void ImGui::UpdateMouseMovingWindowNewFrame()
|
||||||
{
|
{
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
if (g.MovingWindow != NULL)
|
if (g.MovingWindow != NULL)
|
||||||
@ -2986,6 +3011,56 @@ void ImGui::UpdateMouseMovingWindow()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initiate moving window, handle left-click and right-click focus
|
||||||
|
void ImGui::UpdateMouseMovingWindowEndFrame()
|
||||||
|
{
|
||||||
|
// Initiate moving window
|
||||||
|
ImGuiContext& g = *GImGui;
|
||||||
|
if (g.ActiveId != 0 || g.HoveredId != 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Unless we just made a window/popup appear
|
||||||
|
if (g.NavWindow && g.NavWindow->Appearing)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Click to focus window and start moving (after we're done with all our widgets)
|
||||||
|
if (g.IO.MouseClicked[0])
|
||||||
|
{
|
||||||
|
if (g.HoveredRootWindow != NULL)
|
||||||
|
{
|
||||||
|
StartMouseMovingWindow(g.HoveredWindow);
|
||||||
|
if (g.IO.ConfigWindowsMoveFromTitleBarOnly && !(g.HoveredRootWindow->Flags & ImGuiWindowFlags_NoTitleBar))
|
||||||
|
if (!g.HoveredRootWindow->TitleBarRect().Contains(g.IO.MouseClickedPos[0]))
|
||||||
|
g.MovingWindow = NULL;
|
||||||
|
}
|
||||||
|
else if (g.NavWindow != NULL && GetFrontMostPopupModal() == NULL)
|
||||||
|
{
|
||||||
|
FocusWindow(NULL); // Clicking on void disable focus
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// With right mouse button we close popups without changing focus
|
||||||
|
// (The left mouse button path calls FocusWindow which will lead NewFrame->ClosePopupsOverWindow to trigger)
|
||||||
|
if (g.IO.MouseClicked[1])
|
||||||
|
{
|
||||||
|
// Find the top-most window between HoveredWindow and the front most Modal Window.
|
||||||
|
// This is where we can trim the popup stack.
|
||||||
|
ImGuiWindow* modal = GetFrontMostPopupModal();
|
||||||
|
bool hovered_window_above_modal = false;
|
||||||
|
if (modal == NULL)
|
||||||
|
hovered_window_above_modal = true;
|
||||||
|
for (int i = g.Windows.Size - 1; i >= 0 && hovered_window_above_modal == false; i--)
|
||||||
|
{
|
||||||
|
ImGuiWindow* window = g.Windows[i];
|
||||||
|
if (window == modal)
|
||||||
|
break;
|
||||||
|
if (window == g.HoveredWindow)
|
||||||
|
hovered_window_above_modal = true;
|
||||||
|
}
|
||||||
|
ClosePopupsOverWindow(hovered_window_above_modal ? g.HoveredWindow : modal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static bool IsWindowActiveAndVisible(ImGuiWindow* window)
|
static bool IsWindowActiveAndVisible(ImGuiWindow* window)
|
||||||
{
|
{
|
||||||
return (window->Active) && (!window->Hidden);
|
return (window->Active) && (!window->Hidden);
|
||||||
@ -3277,7 +3352,7 @@ void ImGui::NewFrame()
|
|||||||
g.IO.Framerate = (g.FramerateSecPerFrameAccum > 0.0f) ? (1.0f / (g.FramerateSecPerFrameAccum / (float)IM_ARRAYSIZE(g.FramerateSecPerFrame))) : FLT_MAX;
|
g.IO.Framerate = (g.FramerateSecPerFrameAccum > 0.0f) ? (1.0f / (g.FramerateSecPerFrameAccum / (float)IM_ARRAYSIZE(g.FramerateSecPerFrame))) : FLT_MAX;
|
||||||
|
|
||||||
// Handle user moving window with mouse (at the beginning of the frame to avoid input lag or sheering)
|
// Handle user moving window with mouse (at the beginning of the frame to avoid input lag or sheering)
|
||||||
UpdateMouseMovingWindow();
|
UpdateMouseMovingWindowNewFrame();
|
||||||
UpdateHoveredWindowAndCaptureFlags();
|
UpdateHoveredWindowAndCaptureFlags();
|
||||||
|
|
||||||
// Background darkening/whitening
|
// Background darkening/whitening
|
||||||
@ -3328,6 +3403,7 @@ void ImGui::NewFrame()
|
|||||||
// This fallback is particularly important as it avoid ImGui:: calls from crashing.
|
// This fallback is particularly important as it avoid ImGui:: calls from crashing.
|
||||||
SetNextWindowSize(ImVec2(400,400), ImGuiCond_FirstUseEver);
|
SetNextWindowSize(ImVec2(400,400), ImGuiCond_FirstUseEver);
|
||||||
Begin("Debug##Default");
|
Begin("Debug##Default");
|
||||||
|
g.FrameScopePushedImplicitWindow = true;
|
||||||
|
|
||||||
#ifdef IMGUI_ENABLE_TEST_ENGINE
|
#ifdef IMGUI_ENABLE_TEST_ENGINE
|
||||||
ImGuiTestEngineHook_PostNewFrame();
|
ImGuiTestEngineHook_PostNewFrame();
|
||||||
@ -3559,9 +3635,6 @@ void ImGui::EndFrame()
|
|||||||
return;
|
return;
|
||||||
IM_ASSERT(g.FrameScopeActive && "Forgot to call ImGui::NewFrame()?");
|
IM_ASSERT(g.FrameScopeActive && "Forgot to call ImGui::NewFrame()?");
|
||||||
|
|
||||||
g.FrameScopeActive = false;
|
|
||||||
g.FrameCountEnded = g.FrameCount;
|
|
||||||
|
|
||||||
// Notify OS when our Input Method Editor cursor has moved (e.g. CJK inputs using Microsoft IME)
|
// Notify OS when our Input Method Editor cursor has moved (e.g. CJK inputs using Microsoft IME)
|
||||||
if (g.IO.ImeSetInputScreenPosFn && ImLengthSqr(g.PlatformImeLastPos - g.PlatformImePos) > 0.0001f)
|
if (g.IO.ImeSetInputScreenPosFn && ImLengthSqr(g.PlatformImeLastPos - g.PlatformImePos) > 0.0001f)
|
||||||
{
|
{
|
||||||
@ -3586,11 +3659,12 @@ void ImGui::EndFrame()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Hide implicit/fallback "Debug" window if it hasn't been used
|
// Hide implicit/fallback "Debug" window if it hasn't been used
|
||||||
|
g.FrameScopePushedImplicitWindow = false;
|
||||||
if (g.CurrentWindow && !g.CurrentWindow->WriteAccessed)
|
if (g.CurrentWindow && !g.CurrentWindow->WriteAccessed)
|
||||||
g.CurrentWindow->Active = false;
|
g.CurrentWindow->Active = false;
|
||||||
End();
|
End();
|
||||||
|
|
||||||
// Show CTRL+TAB list
|
// Show CTRL+TAB list window
|
||||||
if (g.NavWindowingTarget)
|
if (g.NavWindowingTarget)
|
||||||
NavUpdateWindowingList();
|
NavUpdateWindowingList();
|
||||||
|
|
||||||
@ -3611,49 +3685,12 @@ void ImGui::EndFrame()
|
|||||||
g.DragDropWithinSourceOrTarget = false;
|
g.DragDropWithinSourceOrTarget = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initiate moving window
|
// End frame
|
||||||
if (g.ActiveId == 0 && g.HoveredId == 0)
|
g.FrameScopeActive = false;
|
||||||
{
|
g.FrameCountEnded = g.FrameCount;
|
||||||
if (!g.NavWindow || !g.NavWindow->Appearing) // Unless we just made a window/popup appear
|
|
||||||
{
|
|
||||||
// Click to focus window and start moving (after we're done with all our widgets)
|
|
||||||
if (g.IO.MouseClicked[0])
|
|
||||||
{
|
|
||||||
if (g.HoveredRootWindow != NULL)
|
|
||||||
{
|
|
||||||
StartMouseMovingWindow(g.HoveredWindow);
|
|
||||||
if (g.IO.ConfigWindowsMoveFromTitleBarOnly && !(g.HoveredRootWindow->Flags & ImGuiWindowFlags_NoTitleBar))
|
|
||||||
if (!g.HoveredRootWindow->TitleBarRect().Contains(g.IO.MouseClickedPos[0]))
|
|
||||||
g.MovingWindow = NULL;
|
|
||||||
}
|
|
||||||
else if (g.NavWindow != NULL && GetFrontMostPopupModal() == NULL)
|
|
||||||
{
|
|
||||||
FocusWindow(NULL); // Clicking on void disable focus
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// With right mouse button we close popups without changing focus
|
// Initiate moving window + handle left-click and right-click focus
|
||||||
// (The left mouse button path calls FocusWindow which will lead NewFrame->ClosePopupsOverWindow to trigger)
|
UpdateMouseMovingWindowEndFrame();
|
||||||
if (g.IO.MouseClicked[1])
|
|
||||||
{
|
|
||||||
// Find the top-most window between HoveredWindow and the front most Modal Window.
|
|
||||||
// This is where we can trim the popup stack.
|
|
||||||
ImGuiWindow* modal = GetFrontMostPopupModal();
|
|
||||||
bool hovered_window_above_modal = false;
|
|
||||||
if (modal == NULL)
|
|
||||||
hovered_window_above_modal = true;
|
|
||||||
for (int i = g.Windows.Size - 1; i >= 0 && hovered_window_above_modal == false; i--)
|
|
||||||
{
|
|
||||||
ImGuiWindow* window = g.Windows[i];
|
|
||||||
if (window == modal)
|
|
||||||
break;
|
|
||||||
if (window == g.HoveredWindow)
|
|
||||||
hovered_window_above_modal = true;
|
|
||||||
}
|
|
||||||
ClosePopupsOverWindow(hovered_window_above_modal ? g.HoveredWindow : modal);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sort the window list so that all child windows are after their parent
|
// Sort the window list so that all child windows are after their parent
|
||||||
// We cannot do that on FocusWindow() because childs may not exist yet
|
// We cannot do that on FocusWindow() because childs may not exist yet
|
||||||
@ -5262,11 +5299,12 @@ void ImGui::End()
|
|||||||
{
|
{
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
|
|
||||||
if (g.CurrentWindowStack.Size <= 1 && g.FrameScopeActive)
|
if (g.CurrentWindowStack.Size <= 1 && g.FrameScopePushedImplicitWindow)
|
||||||
{
|
{
|
||||||
IM_ASSERT(g.CurrentWindowStack.Size > 1 && "Calling End() too many times!");
|
IM_ASSERT(g.CurrentWindowStack.Size > 1 && "Calling End() too many times!");
|
||||||
return; // FIXME-ERRORHANDLING
|
return; // FIXME-ERRORHANDLING
|
||||||
}
|
}
|
||||||
|
IM_ASSERT(g.CurrentWindowStack.Size > 0);
|
||||||
|
|
||||||
ImGuiWindow* window = g.CurrentWindow;
|
ImGuiWindow* window = g.CurrentWindow;
|
||||||
|
|
||||||
|
39
3rdparty/dear-imgui/imgui.h
vendored
39
3rdparty/dear-imgui/imgui.h
vendored
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
// See imgui.cpp file for documentation.
|
// See imgui.cpp file for documentation.
|
||||||
// Call and read ImGui::ShowDemoWindow() in imgui_demo.cpp for demo code.
|
// Call and read ImGui::ShowDemoWindow() in imgui_demo.cpp for demo code.
|
||||||
// Read 'Programmer guide' in imgui.cpp for notes on how to setup ImGui in your codebase.
|
// Newcomers, read 'Programmer guide' below for notes on how to setup Dear ImGui in your codebase.
|
||||||
// Get latest version at https://github.com/ocornut/imgui
|
// Get latest version at https://github.com/ocornut/imgui
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -95,11 +95,11 @@ struct ImDrawVert; // A single vertex (20 bytes by default, ove
|
|||||||
struct ImFont; // Runtime data for a single font within a parent ImFontAtlas
|
struct ImFont; // Runtime data for a single font within a parent ImFontAtlas
|
||||||
struct ImFontAtlas; // Runtime data for multiple fonts, bake multiple fonts into a single texture, TTF/OTF font loader
|
struct ImFontAtlas; // Runtime data for multiple fonts, bake multiple fonts into a single texture, TTF/OTF font loader
|
||||||
struct ImFontConfig; // Configuration data when adding a font or merging fonts
|
struct ImFontConfig; // Configuration data when adding a font or merging fonts
|
||||||
struct ImColor; // Helper functions to create a color that can be converted to either u32 or float4 (*obsolete* please avoid using)
|
struct ImColor; // Helper functions to create a color that can be converted to either u32 or float4 (*OBSOLETE* please avoid using)
|
||||||
#ifndef ImTextureID
|
#ifndef ImTextureID
|
||||||
typedef void* ImTextureID; // User data to identify a texture (this is whatever to you want it to be! read the FAQ about ImTextureID in imgui.cpp)
|
typedef void* ImTextureID; // User data to identify a texture (this is whatever to you want it to be! read the FAQ about ImTextureID in imgui.cpp)
|
||||||
#endif
|
#endif
|
||||||
struct ImGuiContext; // ImGui context (opaque)
|
struct ImGuiContext; // Dear ImGui context (opaque structure, unless including imgui_internal.h)
|
||||||
struct ImGuiIO; // Main configuration and I/O between your application and ImGui
|
struct ImGuiIO; // Main configuration and I/O between your application and ImGui
|
||||||
struct ImGuiInputTextCallbackData; // Shared state of InputText() when using custom ImGuiInputTextCallback (rare/advanced use)
|
struct ImGuiInputTextCallbackData; // Shared state of InputText() when using custom ImGuiInputTextCallback (rare/advanced use)
|
||||||
struct ImGuiListClipper; // Helper to manually clip large list of items
|
struct ImGuiListClipper; // Helper to manually clip large list of items
|
||||||
@ -114,7 +114,7 @@ struct ImGuiTextBuffer; // Helper to hold and append into a text buf
|
|||||||
// Typedefs and Enums/Flags (declared as int for compatibility with old C++, to allow using as flags and to not pollute the top of this file)
|
// Typedefs and Enums/Flags (declared as int for compatibility with old C++, to allow using as flags and to not pollute the top of this file)
|
||||||
// Use your programming IDE "Go to definition" facility on the names of the center columns to find the actual flags/enum lists.
|
// Use your programming IDE "Go to definition" facility on the names of the center columns to find the actual flags/enum lists.
|
||||||
typedef unsigned int ImGuiID; // Unique ID used by widgets (typically hashed from a stack of string)
|
typedef unsigned int ImGuiID; // Unique ID used by widgets (typically hashed from a stack of string)
|
||||||
typedef unsigned short ImWchar; // Character for keyboard input/display
|
typedef unsigned short ImWchar; // A single U16 character for keyboard input/display. We encode them as multi bytes UTF-8 when used in strings.
|
||||||
typedef int ImGuiCol; // -> enum ImGuiCol_ // Enum: A color identifier for styling
|
typedef int ImGuiCol; // -> enum ImGuiCol_ // Enum: A color identifier for styling
|
||||||
typedef int ImGuiCond; // -> enum ImGuiCond_ // Enum: A condition for Set*()
|
typedef int ImGuiCond; // -> enum ImGuiCond_ // Enum: A condition for Set*()
|
||||||
typedef int ImGuiDataType; // -> enum ImGuiDataType_ // Enum: A primary data type
|
typedef int ImGuiDataType; // -> enum ImGuiDataType_ // Enum: A primary data type
|
||||||
@ -434,19 +434,20 @@ namespace ImGui
|
|||||||
|
|
||||||
// Widgets: Input with Keyboard
|
// Widgets: Input with Keyboard
|
||||||
// - If you want to use InputText() with a dynamic string type such as std::string or your own, see misc/cpp/imgui_stdlib.h
|
// - If you want to use InputText() with a dynamic string type such as std::string or your own, see misc/cpp/imgui_stdlib.h
|
||||||
|
// - Most of the ImGuiInputTextFlags flags are only useful for InputText() and not for InputFloatX, InputIntX, InputDouble etc.
|
||||||
IMGUI_API bool InputText(const char* label, char* buf, size_t buf_size, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL);
|
IMGUI_API bool InputText(const char* label, char* buf, size_t buf_size, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL);
|
||||||
IMGUI_API bool InputTextMultiline(const char* label, char* buf, size_t buf_size, const ImVec2& size = ImVec2(0,0), ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL);
|
IMGUI_API bool InputTextMultiline(const char* label, char* buf, size_t buf_size, const ImVec2& size = ImVec2(0,0), ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL);
|
||||||
IMGUI_API bool InputFloat(const char* label, float* v, float step = 0.0f, float step_fast = 0.0f, const char* format = "%.3f", ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputFloat(const char* label, float* v, float step = 0.0f, float step_fast = 0.0f, const char* format = "%.3f", ImGuiInputTextFlags flags = 0);
|
||||||
IMGUI_API bool InputFloat2(const char* label, float v[2], const char* format = "%.3f", ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputFloat2(const char* label, float v[2], const char* format = "%.3f", ImGuiInputTextFlags flags = 0);
|
||||||
IMGUI_API bool InputFloat3(const char* label, float v[3], const char* format = "%.3f", ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputFloat3(const char* label, float v[3], const char* format = "%.3f", ImGuiInputTextFlags flags = 0);
|
||||||
IMGUI_API bool InputFloat4(const char* label, float v[4], const char* format = "%.3f", ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputFloat4(const char* label, float v[4], const char* format = "%.3f", ImGuiInputTextFlags flags = 0);
|
||||||
IMGUI_API bool InputInt(const char* label, int* v, int step = 1, int step_fast = 100, ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputInt(const char* label, int* v, int step = 1, int step_fast = 100, ImGuiInputTextFlags flags = 0);
|
||||||
IMGUI_API bool InputInt2(const char* label, int v[2], ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputInt2(const char* label, int v[2], ImGuiInputTextFlags flags = 0);
|
||||||
IMGUI_API bool InputInt3(const char* label, int v[3], ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputInt3(const char* label, int v[3], ImGuiInputTextFlags flags = 0);
|
||||||
IMGUI_API bool InputInt4(const char* label, int v[4], ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputInt4(const char* label, int v[4], ImGuiInputTextFlags flags = 0);
|
||||||
IMGUI_API bool InputDouble(const char* label, double* v, double step = 0.0f, double step_fast = 0.0f, const char* format = "%.6f", ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputDouble(const char* label, double* v, double step = 0.0f, double step_fast = 0.0f, const char* format = "%.6f", ImGuiInputTextFlags flags = 0);
|
||||||
IMGUI_API bool InputScalar(const char* label, ImGuiDataType data_type, void* v, const void* step = NULL, const void* step_fast = NULL, const char* format = NULL, ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputScalar(const char* label, ImGuiDataType data_type, void* v, const void* step = NULL, const void* step_fast = NULL, const char* format = NULL, ImGuiInputTextFlags flags = 0);
|
||||||
IMGUI_API bool InputScalarN(const char* label, ImGuiDataType data_type, void* v, int components, const void* step = NULL, const void* step_fast = NULL, const char* format = NULL, ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputScalarN(const char* label, ImGuiDataType data_type, void* v, int components, const void* step = NULL, const void* step_fast = NULL, const char* format = NULL, ImGuiInputTextFlags flags = 0);
|
||||||
|
|
||||||
// Widgets: Color Editor/Picker (tip: the ColorEdit* functions have a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.)
|
// Widgets: Color Editor/Picker (tip: the ColorEdit* functions have a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.)
|
||||||
// - Note that in C++ a 'float v[X]' function argument is the _same_ as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible. You can the pass the address of a first float element out of a contiguous structure, e.g. &myvector.x
|
// - Note that in C++ a 'float v[X]' function argument is the _same_ as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible. You can the pass the address of a first float element out of a contiguous structure, e.g. &myvector.x
|
||||||
@ -1414,10 +1415,10 @@ namespace ImGui
|
|||||||
// OBSOLETED in 1.63 (from Aug 2018)
|
// OBSOLETED in 1.63 (from Aug 2018)
|
||||||
static inline bool IsItemDeactivatedAfterChange() { return IsItemDeactivatedAfterEdit(); }
|
static inline bool IsItemDeactivatedAfterChange() { return IsItemDeactivatedAfterEdit(); }
|
||||||
// OBSOLETED in 1.61 (from Apr 2018)
|
// OBSOLETED in 1.61 (from Apr 2018)
|
||||||
IMGUI_API bool InputFloat(const char* label, float* v, float step, float step_fast, int decimal_precision, ImGuiInputTextFlags extra_flags = 0); // Use the 'const char* format' version instead of 'decimal_precision'!
|
IMGUI_API bool InputFloat(const char* label, float* v, float step, float step_fast, int decimal_precision, ImGuiInputTextFlags flags = 0); // Use the 'const char* format' version instead of 'decimal_precision'!
|
||||||
IMGUI_API bool InputFloat2(const char* label, float v[2], int decimal_precision, ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputFloat2(const char* label, float v[2], int decimal_precision, ImGuiInputTextFlags flags = 0);
|
||||||
IMGUI_API bool InputFloat3(const char* label, float v[3], int decimal_precision, ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputFloat3(const char* label, float v[3], int decimal_precision, ImGuiInputTextFlags flags = 0);
|
||||||
IMGUI_API bool InputFloat4(const char* label, float v[4], int decimal_precision, ImGuiInputTextFlags extra_flags = 0);
|
IMGUI_API bool InputFloat4(const char* label, float v[4], int decimal_precision, ImGuiInputTextFlags flags = 0);
|
||||||
// OBSOLETED in 1.60 (from Dec 2017)
|
// OBSOLETED in 1.60 (from Dec 2017)
|
||||||
static inline bool IsAnyWindowFocused() { return IsWindowFocused(ImGuiFocusedFlags_AnyWindow); }
|
static inline bool IsAnyWindowFocused() { return IsWindowFocused(ImGuiFocusedFlags_AnyWindow); }
|
||||||
static inline bool IsAnyWindowHovered() { return IsWindowHovered(ImGuiHoveredFlags_AnyWindow); }
|
static inline bool IsAnyWindowHovered() { return IsWindowHovered(ImGuiHoveredFlags_AnyWindow); }
|
||||||
|
2
3rdparty/dear-imgui/imgui_demo.cpp
vendored
2
3rdparty/dear-imgui/imgui_demo.cpp
vendored
@ -480,7 +480,7 @@ static void ShowDemoWindowWidgets()
|
|||||||
ImGui::SameLine(); ShowHelpMarker("You can apply arithmetic operators +,*,/ on numerical values.\n e.g. [ 100 ], input \'*2\', result becomes [ 200 ]\nUse +- to subtract.\n");
|
ImGui::SameLine(); ShowHelpMarker("You can apply arithmetic operators +,*,/ on numerical values.\n e.g. [ 100 ], input \'*2\', result becomes [ 200 ]\nUse +- to subtract.\n");
|
||||||
|
|
||||||
static float f0 = 0.001f;
|
static float f0 = 0.001f;
|
||||||
ImGui::InputFloat("input float", &f0, 0.01f, 1.0f);
|
ImGui::InputFloat("input float", &f0, 0.01f, 1.0f, "%.3f");
|
||||||
|
|
||||||
static double d0 = 999999.00000001;
|
static double d0 = 999999.00000001;
|
||||||
ImGui::InputDouble("input double", &d0, 0.01f, 1.0f, "%.8f");
|
ImGui::InputDouble("input double", &d0, 0.01f, 1.0f, "%.8f");
|
||||||
|
8
3rdparty/dear-imgui/imgui_internal.h
vendored
8
3rdparty/dear-imgui/imgui_internal.h
vendored
@ -694,7 +694,8 @@ struct ImGuiTabBarSortItem
|
|||||||
struct ImGuiContext
|
struct ImGuiContext
|
||||||
{
|
{
|
||||||
bool Initialized;
|
bool Initialized;
|
||||||
bool FrameScopeActive; // Set by NewFrame(), cleared by EndFrame()/Render()
|
bool FrameScopeActive; // Set by NewFrame(), cleared by EndFrame()
|
||||||
|
bool FrameScopePushedImplicitWindow; // Set by NewFrame(), cleared by EndFrame()
|
||||||
bool FontAtlasOwnedByContext; // Io.Fonts-> is owned by the ImGuiContext and will be destructed along with it.
|
bool FontAtlasOwnedByContext; // Io.Fonts-> is owned by the ImGuiContext and will be destructed along with it.
|
||||||
ImGuiIO IO;
|
ImGuiIO IO;
|
||||||
ImGuiStyle Style;
|
ImGuiStyle Style;
|
||||||
@ -859,7 +860,7 @@ struct ImGuiContext
|
|||||||
ImGuiContext(ImFontAtlas* shared_font_atlas) : OverlayDrawList(NULL)
|
ImGuiContext(ImFontAtlas* shared_font_atlas) : OverlayDrawList(NULL)
|
||||||
{
|
{
|
||||||
Initialized = false;
|
Initialized = false;
|
||||||
FrameScopeActive = false;
|
FrameScopeActive = FrameScopePushedImplicitWindow = false;
|
||||||
Font = NULL;
|
Font = NULL;
|
||||||
FontSize = FontBaseSize = 0.0f;
|
FontSize = FontBaseSize = 0.0f;
|
||||||
FontAtlasOwnedByContext = shared_font_atlas ? false : true;
|
FontAtlasOwnedByContext = shared_font_atlas ? false : true;
|
||||||
@ -1260,7 +1261,8 @@ namespace ImGui
|
|||||||
// NewFrame
|
// NewFrame
|
||||||
IMGUI_API void UpdateHoveredWindowAndCaptureFlags();
|
IMGUI_API void UpdateHoveredWindowAndCaptureFlags();
|
||||||
IMGUI_API void StartMouseMovingWindow(ImGuiWindow* window);
|
IMGUI_API void StartMouseMovingWindow(ImGuiWindow* window);
|
||||||
IMGUI_API void UpdateMouseMovingWindow();
|
IMGUI_API void UpdateMouseMovingWindowNewFrame();
|
||||||
|
IMGUI_API void UpdateMouseMovingWindowEndFrame();
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
IMGUI_API void MarkIniSettingsDirty();
|
IMGUI_API void MarkIniSettingsDirty();
|
||||||
|
81
3rdparty/dear-imgui/imgui_widgets.cpp
vendored
81
3rdparty/dear-imgui/imgui_widgets.cpp
vendored
@ -2648,7 +2648,7 @@ bool ImGui::InputScalarAsWidgetReplacement(const ImRect& bb, ImGuiID id, const c
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputScalar(const char* label, ImGuiDataType data_type, void* data_ptr, const void* step, const void* step_fast, const char* format, ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputScalar(const char* label, ImGuiDataType data_type, void* data_ptr, const void* step, const void* step_fast, const char* format, ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
ImGuiWindow* window = GetCurrentWindow();
|
ImGuiWindow* window = GetCurrentWindow();
|
||||||
if (window->SkipItems)
|
if (window->SkipItems)
|
||||||
@ -2665,9 +2665,9 @@ bool ImGui::InputScalar(const char* label, ImGuiDataType data_type, void* data_p
|
|||||||
DataTypeFormatString(buf, IM_ARRAYSIZE(buf), data_type, data_ptr, format);
|
DataTypeFormatString(buf, IM_ARRAYSIZE(buf), data_type, data_ptr, format);
|
||||||
|
|
||||||
bool value_changed = false;
|
bool value_changed = false;
|
||||||
if ((extra_flags & (ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsScientific)) == 0)
|
if ((flags & (ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsScientific)) == 0)
|
||||||
extra_flags |= ImGuiInputTextFlags_CharsDecimal;
|
flags |= ImGuiInputTextFlags_CharsDecimal;
|
||||||
extra_flags |= ImGuiInputTextFlags_AutoSelectAll;
|
flags |= ImGuiInputTextFlags_AutoSelectAll;
|
||||||
|
|
||||||
if (step != NULL)
|
if (step != NULL)
|
||||||
{
|
{
|
||||||
@ -2676,19 +2676,22 @@ bool ImGui::InputScalar(const char* label, ImGuiDataType data_type, void* data_p
|
|||||||
BeginGroup(); // The only purpose of the group here is to allow the caller to query item data e.g. IsItemActive()
|
BeginGroup(); // The only purpose of the group here is to allow the caller to query item data e.g. IsItemActive()
|
||||||
PushID(label);
|
PushID(label);
|
||||||
PushItemWidth(ImMax(1.0f, CalcItemWidth() - (button_size + style.ItemInnerSpacing.x) * 2));
|
PushItemWidth(ImMax(1.0f, CalcItemWidth() - (button_size + style.ItemInnerSpacing.x) * 2));
|
||||||
if (InputText("", buf, IM_ARRAYSIZE(buf), extra_flags)) // PushId(label) + "" gives us the expected ID from outside point of view
|
if (InputText("", buf, IM_ARRAYSIZE(buf), flags)) // PushId(label) + "" gives us the expected ID from outside point of view
|
||||||
value_changed = DataTypeApplyOpFromText(buf, g.InputTextState.InitialText.Data, data_type, data_ptr, format);
|
value_changed = DataTypeApplyOpFromText(buf, g.InputTextState.InitialText.Data, data_type, data_ptr, format);
|
||||||
PopItemWidth();
|
PopItemWidth();
|
||||||
|
|
||||||
// Step buttons
|
// Step buttons
|
||||||
|
ImGuiButtonFlags button_flags = ImGuiButtonFlags_Repeat | ImGuiButtonFlags_DontClosePopups;
|
||||||
|
if (flags & ImGuiInputTextFlags_ReadOnly)
|
||||||
|
button_flags |= ImGuiButtonFlags_Disabled;
|
||||||
SameLine(0, style.ItemInnerSpacing.x);
|
SameLine(0, style.ItemInnerSpacing.x);
|
||||||
if (ButtonEx("-", ImVec2(button_size, button_size), ImGuiButtonFlags_Repeat | ImGuiButtonFlags_DontClosePopups))
|
if (ButtonEx("-", ImVec2(button_size, button_size), button_flags))
|
||||||
{
|
{
|
||||||
DataTypeApplyOp(data_type, '-', data_ptr, data_ptr, g.IO.KeyCtrl && step_fast ? step_fast : step);
|
DataTypeApplyOp(data_type, '-', data_ptr, data_ptr, g.IO.KeyCtrl && step_fast ? step_fast : step);
|
||||||
value_changed = true;
|
value_changed = true;
|
||||||
}
|
}
|
||||||
SameLine(0, style.ItemInnerSpacing.x);
|
SameLine(0, style.ItemInnerSpacing.x);
|
||||||
if (ButtonEx("+", ImVec2(button_size, button_size), ImGuiButtonFlags_Repeat | ImGuiButtonFlags_DontClosePopups))
|
if (ButtonEx("+", ImVec2(button_size, button_size), button_flags))
|
||||||
{
|
{
|
||||||
DataTypeApplyOp(data_type, '+', data_ptr, data_ptr, g.IO.KeyCtrl && step_fast ? step_fast : step);
|
DataTypeApplyOp(data_type, '+', data_ptr, data_ptr, g.IO.KeyCtrl && step_fast ? step_fast : step);
|
||||||
value_changed = true;
|
value_changed = true;
|
||||||
@ -2701,14 +2704,14 @@ bool ImGui::InputScalar(const char* label, ImGuiDataType data_type, void* data_p
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (InputText(label, buf, IM_ARRAYSIZE(buf), extra_flags))
|
if (InputText(label, buf, IM_ARRAYSIZE(buf), flags))
|
||||||
value_changed = DataTypeApplyOpFromText(buf, g.InputTextState.InitialText.Data, data_type, data_ptr, format);
|
value_changed = DataTypeApplyOpFromText(buf, g.InputTextState.InitialText.Data, data_type, data_ptr, format);
|
||||||
}
|
}
|
||||||
|
|
||||||
return value_changed;
|
return value_changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputScalarN(const char* label, ImGuiDataType data_type, void* v, int components, const void* step, const void* step_fast, const char* format, ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputScalarN(const char* label, ImGuiDataType data_type, void* v, int components, const void* step, const void* step_fast, const char* format, ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
ImGuiWindow* window = GetCurrentWindow();
|
ImGuiWindow* window = GetCurrentWindow();
|
||||||
if (window->SkipItems)
|
if (window->SkipItems)
|
||||||
@ -2723,7 +2726,7 @@ bool ImGui::InputScalarN(const char* label, ImGuiDataType data_type, void* v, in
|
|||||||
for (int i = 0; i < components; i++)
|
for (int i = 0; i < components; i++)
|
||||||
{
|
{
|
||||||
PushID(i);
|
PushID(i);
|
||||||
value_changed |= InputScalar("##v", data_type, v, step, step_fast, format, extra_flags);
|
value_changed |= InputScalar("##v", data_type, v, step, step_fast, format, flags);
|
||||||
SameLine(0, g.Style.ItemInnerSpacing.x);
|
SameLine(0, g.Style.ItemInnerSpacing.x);
|
||||||
PopID();
|
PopID();
|
||||||
PopItemWidth();
|
PopItemWidth();
|
||||||
@ -2736,88 +2739,88 @@ bool ImGui::InputScalarN(const char* label, ImGuiDataType data_type, void* v, in
|
|||||||
return value_changed;
|
return value_changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputFloat(const char* label, float* v, float step, float step_fast, const char* format, ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputFloat(const char* label, float* v, float step, float step_fast, const char* format, ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
extra_flags |= ImGuiInputTextFlags_CharsScientific;
|
flags |= ImGuiInputTextFlags_CharsScientific;
|
||||||
return InputScalar(label, ImGuiDataType_Float, (void*)v, (void*)(step>0.0f ? &step : NULL), (void*)(step_fast>0.0f ? &step_fast : NULL), format, extra_flags);
|
return InputScalar(label, ImGuiDataType_Float, (void*)v, (void*)(step>0.0f ? &step : NULL), (void*)(step_fast>0.0f ? &step_fast : NULL), format, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputFloat2(const char* label, float v[2], const char* format, ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputFloat2(const char* label, float v[2], const char* format, ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
return InputScalarN(label, ImGuiDataType_Float, v, 2, NULL, NULL, format, extra_flags);
|
return InputScalarN(label, ImGuiDataType_Float, v, 2, NULL, NULL, format, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputFloat3(const char* label, float v[3], const char* format, ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputFloat3(const char* label, float v[3], const char* format, ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
return InputScalarN(label, ImGuiDataType_Float, v, 3, NULL, NULL, format, extra_flags);
|
return InputScalarN(label, ImGuiDataType_Float, v, 3, NULL, NULL, format, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputFloat4(const char* label, float v[4], const char* format, ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputFloat4(const char* label, float v[4], const char* format, ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
return InputScalarN(label, ImGuiDataType_Float, v, 4, NULL, NULL, format, extra_flags);
|
return InputScalarN(label, ImGuiDataType_Float, v, 4, NULL, NULL, format, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prefer using "const char* format" directly, which is more flexible and consistent with other API.
|
// Prefer using "const char* format" directly, which is more flexible and consistent with other API.
|
||||||
#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
||||||
bool ImGui::InputFloat(const char* label, float* v, float step, float step_fast, int decimal_precision, ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputFloat(const char* label, float* v, float step, float step_fast, int decimal_precision, ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
char format[16] = "%f";
|
char format[16] = "%f";
|
||||||
if (decimal_precision >= 0)
|
if (decimal_precision >= 0)
|
||||||
ImFormatString(format, IM_ARRAYSIZE(format), "%%.%df", decimal_precision);
|
ImFormatString(format, IM_ARRAYSIZE(format), "%%.%df", decimal_precision);
|
||||||
return InputFloat(label, v, step, step_fast, format, extra_flags);
|
return InputFloat(label, v, step, step_fast, format, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputFloat2(const char* label, float v[2], int decimal_precision, ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputFloat2(const char* label, float v[2], int decimal_precision, ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
char format[16] = "%f";
|
char format[16] = "%f";
|
||||||
if (decimal_precision >= 0)
|
if (decimal_precision >= 0)
|
||||||
ImFormatString(format, IM_ARRAYSIZE(format), "%%.%df", decimal_precision);
|
ImFormatString(format, IM_ARRAYSIZE(format), "%%.%df", decimal_precision);
|
||||||
return InputScalarN(label, ImGuiDataType_Float, v, 2, NULL, NULL, format, extra_flags);
|
return InputScalarN(label, ImGuiDataType_Float, v, 2, NULL, NULL, format, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputFloat3(const char* label, float v[3], int decimal_precision, ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputFloat3(const char* label, float v[3], int decimal_precision, ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
char format[16] = "%f";
|
char format[16] = "%f";
|
||||||
if (decimal_precision >= 0)
|
if (decimal_precision >= 0)
|
||||||
ImFormatString(format, IM_ARRAYSIZE(format), "%%.%df", decimal_precision);
|
ImFormatString(format, IM_ARRAYSIZE(format), "%%.%df", decimal_precision);
|
||||||
return InputScalarN(label, ImGuiDataType_Float, v, 3, NULL, NULL, format, extra_flags);
|
return InputScalarN(label, ImGuiDataType_Float, v, 3, NULL, NULL, format, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputFloat4(const char* label, float v[4], int decimal_precision, ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputFloat4(const char* label, float v[4], int decimal_precision, ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
char format[16] = "%f";
|
char format[16] = "%f";
|
||||||
if (decimal_precision >= 0)
|
if (decimal_precision >= 0)
|
||||||
ImFormatString(format, IM_ARRAYSIZE(format), "%%.%df", decimal_precision);
|
ImFormatString(format, IM_ARRAYSIZE(format), "%%.%df", decimal_precision);
|
||||||
return InputScalarN(label, ImGuiDataType_Float, v, 4, NULL, NULL, format, extra_flags);
|
return InputScalarN(label, ImGuiDataType_Float, v, 4, NULL, NULL, format, flags);
|
||||||
}
|
}
|
||||||
#endif // IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
#endif // IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
||||||
|
|
||||||
bool ImGui::InputInt(const char* label, int* v, int step, int step_fast, ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputInt(const char* label, int* v, int step, int step_fast, ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
// Hexadecimal input provided as a convenience but the flag name is awkward. Typically you'd use InputText() to parse your own data, if you want to handle prefixes.
|
// Hexadecimal input provided as a convenience but the flag name is awkward. Typically you'd use InputText() to parse your own data, if you want to handle prefixes.
|
||||||
const char* format = (extra_flags & ImGuiInputTextFlags_CharsHexadecimal) ? "%08X" : "%d";
|
const char* format = (flags & ImGuiInputTextFlags_CharsHexadecimal) ? "%08X" : "%d";
|
||||||
return InputScalar(label, ImGuiDataType_S32, (void*)v, (void*)(step>0 ? &step : NULL), (void*)(step_fast>0 ? &step_fast : NULL), format, extra_flags);
|
return InputScalar(label, ImGuiDataType_S32, (void*)v, (void*)(step>0 ? &step : NULL), (void*)(step_fast>0 ? &step_fast : NULL), format, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputInt2(const char* label, int v[2], ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputInt2(const char* label, int v[2], ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
return InputScalarN(label, ImGuiDataType_S32, v, 2, NULL, NULL, "%d", extra_flags);
|
return InputScalarN(label, ImGuiDataType_S32, v, 2, NULL, NULL, "%d", flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputInt3(const char* label, int v[3], ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputInt3(const char* label, int v[3], ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
return InputScalarN(label, ImGuiDataType_S32, v, 3, NULL, NULL, "%d", extra_flags);
|
return InputScalarN(label, ImGuiDataType_S32, v, 3, NULL, NULL, "%d", flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputInt4(const char* label, int v[4], ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputInt4(const char* label, int v[4], ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
return InputScalarN(label, ImGuiDataType_S32, v, 4, NULL, NULL, "%d", extra_flags);
|
return InputScalarN(label, ImGuiDataType_S32, v, 4, NULL, NULL, "%d", flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::InputDouble(const char* label, double* v, double step, double step_fast, const char* format, ImGuiInputTextFlags extra_flags)
|
bool ImGui::InputDouble(const char* label, double* v, double step, double step_fast, const char* format, ImGuiInputTextFlags flags)
|
||||||
{
|
{
|
||||||
extra_flags |= ImGuiInputTextFlags_CharsScientific;
|
flags |= ImGuiInputTextFlags_CharsScientific;
|
||||||
return InputScalar(label, ImGuiDataType_Double, (void*)v, (void*)(step>0.0 ? &step : NULL), (void*)(step_fast>0.0 ? &step_fast : NULL), format, extra_flags);
|
return InputScalar(label, ImGuiDataType_Double, (void*)v, (void*)(step>0.0 ? &step : NULL), (void*)(step_fast>0.0 ? &step_fast : NULL), format, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
4
3rdparty/glslang/SPIRV/GlslangToSpv.cpp
vendored
4
3rdparty/glslang/SPIRV/GlslangToSpv.cpp
vendored
@ -1297,6 +1297,10 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl
|
|||||||
text.append("#line 1\n");
|
text.append("#line 1\n");
|
||||||
text.append(glslangIntermediate->getSourceText());
|
text.append(glslangIntermediate->getSourceText());
|
||||||
builder.setSourceText(text);
|
builder.setSourceText(text);
|
||||||
|
// Pass name and text for all included files
|
||||||
|
const std::map<std::string, std::string>& include_txt = glslangIntermediate->getIncludeText();
|
||||||
|
for (auto iItr = include_txt.begin(); iItr != include_txt.end(); ++iItr)
|
||||||
|
builder.addInclude(iItr->first, iItr->second);
|
||||||
}
|
}
|
||||||
stdBuiltins = builder.import("GLSL.std.450");
|
stdBuiltins = builder.import("GLSL.std.450");
|
||||||
if (glslangIntermediate->usingVulkanMemoryModel()) {
|
if (glslangIntermediate->usingVulkanMemoryModel()) {
|
||||||
|
37
3rdparty/glslang/SPIRV/SpvBuilder.cpp
vendored
37
3rdparty/glslang/SPIRV/SpvBuilder.cpp
vendored
@ -114,20 +114,8 @@ void Builder::setLine(int lineNum, const char* filename)
|
|||||||
currentLine = lineNum;
|
currentLine = lineNum;
|
||||||
currentFile = filename;
|
currentFile = filename;
|
||||||
if (emitOpLines) {
|
if (emitOpLines) {
|
||||||
// If filename previously seen, use its id, else create a string
|
spv::Id strId = getStringId(filename);
|
||||||
// and put it in the map.
|
addLine(strId, currentLine, 0);
|
||||||
auto sItr = stringIds.find(filename);
|
|
||||||
if (sItr != stringIds.end()) {
|
|
||||||
addLine(sItr->second, currentLine, 0);
|
|
||||||
} else {
|
|
||||||
Instruction* fileString =
|
|
||||||
new Instruction(getUniqueId(), NoType, OpString);
|
|
||||||
fileString->addStringOperand(filename);
|
|
||||||
spv::Id stringId = fileString->getResultId();
|
|
||||||
strings.push_back(std::unique_ptr<Instruction>(fileString));
|
|
||||||
addLine(stringId, currentLine, 0);
|
|
||||||
stringIds[filename] = stringId;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2843,7 +2831,8 @@ void Builder::createConditionalBranch(Id condition, Block* thenBlock, Block* els
|
|||||||
// OpSource
|
// OpSource
|
||||||
// [OpSourceContinued]
|
// [OpSourceContinued]
|
||||||
// ...
|
// ...
|
||||||
void Builder::dumpSourceInstructions(std::vector<unsigned int>& out) const
|
void Builder::dumpSourceInstructions(const spv::Id fileId, const std::string& text,
|
||||||
|
std::vector<unsigned int>& out) const
|
||||||
{
|
{
|
||||||
const int maxWordCount = 0xFFFF;
|
const int maxWordCount = 0xFFFF;
|
||||||
const int opSourceWordCount = 4;
|
const int opSourceWordCount = 4;
|
||||||
@ -2855,14 +2844,14 @@ void Builder::dumpSourceInstructions(std::vector<unsigned int>& out) const
|
|||||||
sourceInst.addImmediateOperand(source);
|
sourceInst.addImmediateOperand(source);
|
||||||
sourceInst.addImmediateOperand(sourceVersion);
|
sourceInst.addImmediateOperand(sourceVersion);
|
||||||
// File operand
|
// File operand
|
||||||
if (sourceFileStringId != NoResult) {
|
if (fileId != NoResult) {
|
||||||
sourceInst.addIdOperand(sourceFileStringId);
|
sourceInst.addIdOperand(fileId);
|
||||||
// Source operand
|
// Source operand
|
||||||
if (sourceText.size() > 0) {
|
if (text.size() > 0) {
|
||||||
int nextByte = 0;
|
int nextByte = 0;
|
||||||
std::string subString;
|
std::string subString;
|
||||||
while ((int)sourceText.size() - nextByte > 0) {
|
while ((int)text.size() - nextByte > 0) {
|
||||||
subString = sourceText.substr(nextByte, nonNullBytesPerInstruction);
|
subString = text.substr(nextByte, nonNullBytesPerInstruction);
|
||||||
if (nextByte == 0) {
|
if (nextByte == 0) {
|
||||||
// OpSource
|
// OpSource
|
||||||
sourceInst.addStringOperand(subString.c_str());
|
sourceInst.addStringOperand(subString.c_str());
|
||||||
@ -2882,6 +2871,14 @@ void Builder::dumpSourceInstructions(std::vector<unsigned int>& out) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Dump an OpSource[Continued] sequence for the source and every include file
|
||||||
|
void Builder::dumpSourceInstructions(std::vector<unsigned int>& out) const
|
||||||
|
{
|
||||||
|
dumpSourceInstructions(sourceFileStringId, sourceText, out);
|
||||||
|
for (auto iItr = includeFiles.begin(); iItr != includeFiles.end(); ++iItr)
|
||||||
|
dumpSourceInstructions(iItr->first, *iItr->second, out);
|
||||||
|
}
|
||||||
|
|
||||||
void Builder::dumpInstructions(std::vector<unsigned int>& out, const std::vector<std::unique_ptr<Instruction> >& instructions) const
|
void Builder::dumpInstructions(std::vector<unsigned int>& out, const std::vector<std::unique_ptr<Instruction> >& instructions) const
|
||||||
{
|
{
|
||||||
for (int i = 0; i < (int)instructions.size(); ++i) {
|
for (int i = 0; i < (int)instructions.size(); ++i) {
|
||||||
|
30
3rdparty/glslang/SPIRV/SpvBuilder.h
vendored
30
3rdparty/glslang/SPIRV/SpvBuilder.h
vendored
@ -57,6 +57,7 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <stack>
|
#include <stack>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
namespace spv {
|
namespace spv {
|
||||||
|
|
||||||
@ -74,20 +75,33 @@ public:
|
|||||||
source = lang;
|
source = lang;
|
||||||
sourceVersion = version;
|
sourceVersion = version;
|
||||||
}
|
}
|
||||||
|
spv::Id getStringId(const std::string& str)
|
||||||
|
{
|
||||||
|
auto sItr = stringIds.find(str);
|
||||||
|
if (sItr != stringIds.end())
|
||||||
|
return sItr->second;
|
||||||
|
spv::Id strId = getUniqueId();
|
||||||
|
Instruction* fileString = new Instruction(strId, NoType, OpString);
|
||||||
|
const char* file_c_str = str.c_str();
|
||||||
|
fileString->addStringOperand(file_c_str);
|
||||||
|
strings.push_back(std::unique_ptr<Instruction>(fileString));
|
||||||
|
stringIds[file_c_str] = strId;
|
||||||
|
return strId;
|
||||||
|
}
|
||||||
void setSourceFile(const std::string& file)
|
void setSourceFile(const std::string& file)
|
||||||
{
|
{
|
||||||
Instruction* fileString = new Instruction(getUniqueId(), NoType, OpString);
|
sourceFileStringId = getStringId(file);
|
||||||
const char* file_c_str = file.c_str();
|
|
||||||
fileString->addStringOperand(file_c_str);
|
|
||||||
sourceFileStringId = fileString->getResultId();
|
|
||||||
strings.push_back(std::unique_ptr<Instruction>(fileString));
|
|
||||||
stringIds[file_c_str] = sourceFileStringId;
|
|
||||||
}
|
}
|
||||||
void setSourceText(const std::string& text) { sourceText = text; }
|
void setSourceText(const std::string& text) { sourceText = text; }
|
||||||
void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); }
|
void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); }
|
||||||
void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); }
|
void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); }
|
||||||
void setEmitOpLines() { emitOpLines = true; }
|
void setEmitOpLines() { emitOpLines = true; }
|
||||||
void addExtension(const char* ext) { extensions.insert(ext); }
|
void addExtension(const char* ext) { extensions.insert(ext); }
|
||||||
|
void addInclude(const std::string& name, const std::string& text)
|
||||||
|
{
|
||||||
|
spv::Id incId = getStringId(name);
|
||||||
|
includeFiles[incId] = &text;
|
||||||
|
}
|
||||||
Id import(const char*);
|
Id import(const char*);
|
||||||
void setMemoryModel(spv::AddressingModel addr, spv::MemoryModel mem)
|
void setMemoryModel(spv::AddressingModel addr, spv::MemoryModel mem)
|
||||||
{
|
{
|
||||||
@ -658,6 +672,7 @@ public:
|
|||||||
void createAndSetNoPredecessorBlock(const char*);
|
void createAndSetNoPredecessorBlock(const char*);
|
||||||
void createSelectionMerge(Block* mergeBlock, unsigned int control);
|
void createSelectionMerge(Block* mergeBlock, unsigned int control);
|
||||||
void dumpSourceInstructions(std::vector<unsigned int>&) const;
|
void dumpSourceInstructions(std::vector<unsigned int>&) const;
|
||||||
|
void dumpSourceInstructions(const spv::Id fileId, const std::string& text, std::vector<unsigned int>&) const;
|
||||||
void dumpInstructions(std::vector<unsigned int>&, const std::vector<std::unique_ptr<Instruction> >&) const;
|
void dumpInstructions(std::vector<unsigned int>&, const std::vector<std::unique_ptr<Instruction> >&) const;
|
||||||
void dumpModuleProcesses(std::vector<unsigned int>&) const;
|
void dumpModuleProcesses(std::vector<unsigned int>&) const;
|
||||||
|
|
||||||
@ -708,6 +723,9 @@ public:
|
|||||||
// map from strings to their string ids
|
// map from strings to their string ids
|
||||||
std::unordered_map<std::string, spv::Id> stringIds;
|
std::unordered_map<std::string, spv::Id> stringIds;
|
||||||
|
|
||||||
|
// map from include file name ids to their contents
|
||||||
|
std::map<spv::Id, const std::string*> includeFiles;
|
||||||
|
|
||||||
// The stream for outputting warnings and errors.
|
// The stream for outputting warnings and errors.
|
||||||
SpvBuildLogger* logger;
|
SpvBuildLogger* logger;
|
||||||
}; // end Builder class
|
}; // end Builder class
|
||||||
|
@ -4,12 +4,12 @@ hlsl.pp.line3.frag
|
|||||||
// Id's are bound by 78
|
// Id's are bound by 78
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
2: ExtInstImport "GLSL.std.450"
|
3: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 5 "MainPs" 69 73
|
EntryPoint Fragment 6 "MainPs" 69 73
|
||||||
ExecutionMode 5 OriginUpperLeft
|
ExecutionMode 6 OriginUpperLeft
|
||||||
1: String "hlsl.pp.line3.frag"
|
1: String "hlsl.pp.line3.frag"
|
||||||
31: String "./i1.h"
|
2: String "./i1.h"
|
||||||
Source HLSL 500 1 "// OpModuleProcessed entry-point MainPs
|
Source HLSL 500 1 "// OpModuleProcessed entry-point MainPs
|
||||||
// OpModuleProcessed client vulkan100
|
// OpModuleProcessed client vulkan100
|
||||||
// OpModuleProcessed target-env vulkan1.0
|
// OpModuleProcessed target-env vulkan1.0
|
||||||
@ -50,18 +50,20 @@ PS_OUTPUT MainPs ( PS_INPUT i )
|
|||||||
}
|
}
|
||||||
|
|
||||||
"
|
"
|
||||||
Name 5 "MainPs"
|
Source HLSL 500 2 " u = g_nDataIdx;
|
||||||
Name 9 "PS_INPUT"
|
"
|
||||||
MemberName 9(PS_INPUT) 0 "vTextureCoords"
|
Name 6 "MainPs"
|
||||||
Name 12 "PS_OUTPUT"
|
Name 10 "PS_INPUT"
|
||||||
MemberName 12(PS_OUTPUT) 0 "vColor"
|
MemberName 10(PS_INPUT) 0 "vTextureCoords"
|
||||||
Name 15 "@MainPs(struct-PS_INPUT-vf21;"
|
Name 13 "PS_OUTPUT"
|
||||||
Name 14 "i"
|
MemberName 13(PS_OUTPUT) 0 "vColor"
|
||||||
Name 18 "PerViewConstantBuffer_t"
|
Name 16 "@MainPs(struct-PS_INPUT-vf21;"
|
||||||
MemberName 18(PerViewConstantBuffer_t) 0 "g_nDataIdx"
|
Name 15 "i"
|
||||||
MemberName 18(PerViewConstantBuffer_t) 1 "g_nDataIdx2"
|
Name 19 "PerViewConstantBuffer_t"
|
||||||
MemberName 18(PerViewConstantBuffer_t) 2 "g_B"
|
MemberName 19(PerViewConstantBuffer_t) 0 "g_nDataIdx"
|
||||||
Name 20 ""
|
MemberName 19(PerViewConstantBuffer_t) 1 "g_nDataIdx2"
|
||||||
|
MemberName 19(PerViewConstantBuffer_t) 2 "g_B"
|
||||||
|
Name 21 ""
|
||||||
Name 33 "u"
|
Name 33 "u"
|
||||||
Name 42 "ps_output"
|
Name 42 "ps_output"
|
||||||
Name 47 "g_tColor"
|
Name 47 "g_tColor"
|
||||||
@ -70,40 +72,40 @@ PS_OUTPUT MainPs ( PS_INPUT i )
|
|||||||
Name 69 "i.vTextureCoords"
|
Name 69 "i.vTextureCoords"
|
||||||
Name 73 "@entryPointOutput.vColor"
|
Name 73 "@entryPointOutput.vColor"
|
||||||
Name 74 "param"
|
Name 74 "param"
|
||||||
MemberDecorate 18(PerViewConstantBuffer_t) 0 Offset 0
|
MemberDecorate 19(PerViewConstantBuffer_t) 0 Offset 0
|
||||||
MemberDecorate 18(PerViewConstantBuffer_t) 1 Offset 4
|
MemberDecorate 19(PerViewConstantBuffer_t) 1 Offset 4
|
||||||
MemberDecorate 18(PerViewConstantBuffer_t) 2 Offset 8
|
MemberDecorate 19(PerViewConstantBuffer_t) 2 Offset 8
|
||||||
Decorate 18(PerViewConstantBuffer_t) Block
|
Decorate 19(PerViewConstantBuffer_t) Block
|
||||||
Decorate 47(g_tColor) DescriptorSet 0
|
Decorate 47(g_tColor) DescriptorSet 0
|
||||||
Decorate 47(g_tColor) Binding 0
|
Decorate 47(g_tColor) Binding 0
|
||||||
Decorate 54(g_sAniso) DescriptorSet 0
|
Decorate 54(g_sAniso) DescriptorSet 0
|
||||||
Decorate 54(g_sAniso) Binding 0
|
Decorate 54(g_sAniso) Binding 0
|
||||||
Decorate 69(i.vTextureCoords) Location 0
|
Decorate 69(i.vTextureCoords) Location 0
|
||||||
Decorate 73(@entryPointOutput.vColor) Location 0
|
Decorate 73(@entryPointOutput.vColor) Location 0
|
||||||
3: TypeVoid
|
4: TypeVoid
|
||||||
4: TypeFunction 3
|
5: TypeFunction 4
|
||||||
7: TypeFloat 32
|
8: TypeFloat 32
|
||||||
8: TypeVector 7(float) 2
|
9: TypeVector 8(float) 2
|
||||||
9(PS_INPUT): TypeStruct 8(fvec2)
|
10(PS_INPUT): TypeStruct 9(fvec2)
|
||||||
10: TypePointer Function 9(PS_INPUT)
|
11: TypePointer Function 10(PS_INPUT)
|
||||||
11: TypeVector 7(float) 4
|
12: TypeVector 8(float) 4
|
||||||
12(PS_OUTPUT): TypeStruct 11(fvec4)
|
13(PS_OUTPUT): TypeStruct 12(fvec4)
|
||||||
13: TypeFunction 12(PS_OUTPUT) 10(ptr)
|
14: TypeFunction 13(PS_OUTPUT) 11(ptr)
|
||||||
17: TypeInt 32 0
|
18: TypeInt 32 0
|
||||||
18(PerViewConstantBuffer_t): TypeStruct 17(int) 17(int) 17(int)
|
19(PerViewConstantBuffer_t): TypeStruct 18(int) 18(int) 18(int)
|
||||||
19: TypePointer PushConstant 18(PerViewConstantBuffer_t)
|
20: TypePointer PushConstant 19(PerViewConstantBuffer_t)
|
||||||
20: 19(ptr) Variable PushConstant
|
21: 20(ptr) Variable PushConstant
|
||||||
21: TypeInt 32 1
|
22: TypeInt 32 1
|
||||||
22: 21(int) Constant 2
|
23: 22(int) Constant 2
|
||||||
23: TypePointer PushConstant 17(int)
|
24: TypePointer PushConstant 18(int)
|
||||||
26: TypeBool
|
27: TypeBool
|
||||||
27: 17(int) Constant 0
|
28: 18(int) Constant 0
|
||||||
32: TypePointer Function 17(int)
|
32: TypePointer Function 18(int)
|
||||||
34: 21(int) Constant 0
|
34: 22(int) Constant 0
|
||||||
38: 21(int) Constant 1
|
38: 22(int) Constant 1
|
||||||
41: TypePointer Function 12(PS_OUTPUT)
|
41: TypePointer Function 13(PS_OUTPUT)
|
||||||
43: TypeImage 7(float) 2D sampled format:Unknown
|
43: TypeImage 8(float) 2D sampled format:Unknown
|
||||||
44: 17(int) Constant 128
|
44: 18(int) Constant 128
|
||||||
45: TypeArray 43 44
|
45: TypeArray 43 44
|
||||||
46: TypePointer UniformConstant 45
|
46: TypePointer UniformConstant 45
|
||||||
47(g_tColor): 46(ptr) Variable UniformConstant
|
47(g_tColor): 46(ptr) Variable UniformConstant
|
||||||
@ -112,63 +114,63 @@ PS_OUTPUT MainPs ( PS_INPUT i )
|
|||||||
53: TypePointer UniformConstant 52
|
53: TypePointer UniformConstant 52
|
||||||
54(g_sAniso): 53(ptr) Variable UniformConstant
|
54(g_sAniso): 53(ptr) Variable UniformConstant
|
||||||
56: TypeSampledImage 43
|
56: TypeSampledImage 43
|
||||||
58: TypePointer Function 8(fvec2)
|
58: TypePointer Function 9(fvec2)
|
||||||
62: TypePointer Function 11(fvec4)
|
62: TypePointer Function 12(fvec4)
|
||||||
68: TypePointer Input 8(fvec2)
|
68: TypePointer Input 9(fvec2)
|
||||||
69(i.vTextureCoords): 68(ptr) Variable Input
|
69(i.vTextureCoords): 68(ptr) Variable Input
|
||||||
72: TypePointer Output 11(fvec4)
|
72: TypePointer Output 12(fvec4)
|
||||||
73(@entryPointOutput.vColor): 72(ptr) Variable Output
|
73(@entryPointOutput.vColor): 72(ptr) Variable Output
|
||||||
5(MainPs): 3 Function None 4
|
6(MainPs): 4 Function None 5
|
||||||
6: Label
|
7: Label
|
||||||
67(i): 10(ptr) Variable Function
|
67(i): 11(ptr) Variable Function
|
||||||
74(param): 10(ptr) Variable Function
|
74(param): 11(ptr) Variable Function
|
||||||
Line 1 23 0
|
Line 1 23 0
|
||||||
70: 8(fvec2) Load 69(i.vTextureCoords)
|
70: 9(fvec2) Load 69(i.vTextureCoords)
|
||||||
71: 58(ptr) AccessChain 67(i) 34
|
71: 58(ptr) AccessChain 67(i) 34
|
||||||
Store 71 70
|
Store 71 70
|
||||||
75: 9(PS_INPUT) Load 67(i)
|
75:10(PS_INPUT) Load 67(i)
|
||||||
Store 74(param) 75
|
Store 74(param) 75
|
||||||
76:12(PS_OUTPUT) FunctionCall 15(@MainPs(struct-PS_INPUT-vf21;) 74(param)
|
76:13(PS_OUTPUT) FunctionCall 16(@MainPs(struct-PS_INPUT-vf21;) 74(param)
|
||||||
77: 11(fvec4) CompositeExtract 76 0
|
77: 12(fvec4) CompositeExtract 76 0
|
||||||
Store 73(@entryPointOutput.vColor) 77
|
Store 73(@entryPointOutput.vColor) 77
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
15(@MainPs(struct-PS_INPUT-vf21;):12(PS_OUTPUT) Function None 13
|
16(@MainPs(struct-PS_INPUT-vf21;):13(PS_OUTPUT) Function None 14
|
||||||
14(i): 10(ptr) FunctionParameter
|
15(i): 11(ptr) FunctionParameter
|
||||||
16: Label
|
17: Label
|
||||||
33(u): 32(ptr) Variable Function
|
33(u): 32(ptr) Variable Function
|
||||||
42(ps_output): 41(ptr) Variable Function
|
42(ps_output): 41(ptr) Variable Function
|
||||||
Line 1 27 0
|
Line 1 27 0
|
||||||
24: 23(ptr) AccessChain 20 22
|
25: 24(ptr) AccessChain 21 23
|
||||||
25: 17(int) Load 24
|
26: 18(int) Load 25
|
||||||
28: 26(bool) INotEqual 25 27
|
29: 27(bool) INotEqual 26 28
|
||||||
SelectionMerge 30 None
|
SelectionMerge 31 None
|
||||||
BranchConditional 28 29 37
|
BranchConditional 29 30 37
|
||||||
29: Label
|
30: Label
|
||||||
Line 31 1 0
|
Line 2 1 0
|
||||||
35: 23(ptr) AccessChain 20 34
|
35: 24(ptr) AccessChain 21 34
|
||||||
36: 17(int) Load 35
|
36: 18(int) Load 35
|
||||||
Store 33(u) 36
|
Store 33(u) 36
|
||||||
Branch 30
|
Branch 31
|
||||||
37: Label
|
37: Label
|
||||||
Line 1 30 0
|
Line 1 30 0
|
||||||
39: 23(ptr) AccessChain 20 38
|
39: 24(ptr) AccessChain 21 38
|
||||||
40: 17(int) Load 39
|
40: 18(int) Load 39
|
||||||
Store 33(u) 40
|
Store 33(u) 40
|
||||||
Branch 30
|
Branch 31
|
||||||
30: Label
|
31: Label
|
||||||
Line 1 31 0
|
Line 1 31 0
|
||||||
48: 17(int) Load 33(u)
|
48: 18(int) Load 33(u)
|
||||||
50: 49(ptr) AccessChain 47(g_tColor) 48
|
50: 49(ptr) AccessChain 47(g_tColor) 48
|
||||||
51: 43 Load 50
|
51: 43 Load 50
|
||||||
55: 52 Load 54(g_sAniso)
|
55: 52 Load 54(g_sAniso)
|
||||||
57: 56 SampledImage 51 55
|
57: 56 SampledImage 51 55
|
||||||
59: 58(ptr) AccessChain 14(i) 34
|
59: 58(ptr) AccessChain 15(i) 34
|
||||||
60: 8(fvec2) Load 59
|
60: 9(fvec2) Load 59
|
||||||
61: 11(fvec4) ImageSampleImplicitLod 57 60
|
61: 12(fvec4) ImageSampleImplicitLod 57 60
|
||||||
63: 62(ptr) AccessChain 42(ps_output) 34
|
63: 62(ptr) AccessChain 42(ps_output) 34
|
||||||
Store 63 61
|
Store 63 61
|
||||||
Line 1 32 0
|
Line 1 32 0
|
||||||
64:12(PS_OUTPUT) Load 42(ps_output)
|
64:13(PS_OUTPUT) Load 42(ps_output)
|
||||||
ReturnValue 64
|
ReturnValue 64
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
@ -668,6 +668,8 @@ public:
|
|||||||
const std::string& getSourceFile() const { return sourceFile; }
|
const std::string& getSourceFile() const { return sourceFile; }
|
||||||
void addSourceText(const char* text) { sourceText = sourceText + text; }
|
void addSourceText(const char* text) { sourceText = sourceText + text; }
|
||||||
const std::string& getSourceText() const { return sourceText; }
|
const std::string& getSourceText() const { return sourceText; }
|
||||||
|
const std::map<std::string, std::string>& getIncludeText() const { return includeText; }
|
||||||
|
void addIncludeText(const char* name, const char* text, size_t len) { includeText[name].assign(text,len); }
|
||||||
void addProcesses(const std::vector<std::string>& p)
|
void addProcesses(const std::vector<std::string>& p)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < (int)p.size(); ++i)
|
for (int i = 0; i < (int)p.size(); ++i)
|
||||||
@ -815,6 +817,9 @@ protected:
|
|||||||
std::string sourceFile;
|
std::string sourceFile;
|
||||||
std::string sourceText;
|
std::string sourceText;
|
||||||
|
|
||||||
|
// Included text. First string is a name, second is the included text
|
||||||
|
std::map<std::string, std::string> includeText;
|
||||||
|
|
||||||
// for OpModuleProcessed, or equivalent
|
// for OpModuleProcessed, or equivalent
|
||||||
TProcesses processes;
|
TProcesses processes;
|
||||||
|
|
||||||
|
@ -653,6 +653,7 @@ int TPpContext::CPPinclude(TPpToken* ppToken)
|
|||||||
epilogue << (res->headerData[res->headerLength - 1] == '\n'? "" : "\n") <<
|
epilogue << (res->headerData[res->headerLength - 1] == '\n'? "" : "\n") <<
|
||||||
"#line " << directiveLoc.line + forNextLine << " " << directiveLoc.getStringNameOrNum() << "\n";
|
"#line " << directiveLoc.line + forNextLine << " " << directiveLoc.getStringNameOrNum() << "\n";
|
||||||
pushInput(new TokenizableIncludeFile(directiveLoc, prologue.str(), res, epilogue.str(), this));
|
pushInput(new TokenizableIncludeFile(directiveLoc, prologue.str(), res, epilogue.str(), this));
|
||||||
|
parseContext.intermediate.addIncludeText(res->headerName.c_str(), res->headerData, res->headerLength);
|
||||||
// There's no "current" location anymore.
|
// There's no "current" location anymore.
|
||||||
parseContext.setCurrentColumn(0);
|
parseContext.setCurrentColumn(0);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
$input v_wpos, v_view, v_normal, v_tangent, v_bitangent, v_texcoord0 // in...
|
$input v_wpos, v_view, v_normal, v_tangent, v_bitangent, v_texcoord0// in...
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2011-2018 Branimir Karadzic. All rights reserved.
|
* Copyright 2011-2018 Branimir Karadzic. All rights reserved.
|
||||||
@ -15,7 +15,8 @@ uniform vec4 u_lightRgbInnerR[4];
|
|||||||
vec2 blinn(vec3 _lightDir, vec3 _normal, vec3 _viewDir)
|
vec2 blinn(vec3 _lightDir, vec3 _normal, vec3 _viewDir)
|
||||||
{
|
{
|
||||||
float ndotl = dot(_normal, _lightDir);
|
float ndotl = dot(_normal, _lightDir);
|
||||||
vec3 reflected = _lightDir - 2.0*ndotl*_normal; // reflect(_lightDir, _normal);
|
//vec3 reflected = _lightDir - 2.0*ndotl*_normal; // reflect(_lightDir, _normal);
|
||||||
|
vec3 reflected = 2.0*ndotl*_normal - _lightDir;
|
||||||
float rdotv = dot(reflected, _viewDir);
|
float rdotv = dot(reflected, _viewDir);
|
||||||
return vec2(ndotl, rdotv);
|
return vec2(ndotl, rdotv);
|
||||||
}
|
}
|
||||||
@ -45,25 +46,31 @@ vec3 calcLight(int _idx, mat3 _tbn, vec3 _wpos, vec3 _normal, vec3 _view)
|
|||||||
{
|
{
|
||||||
vec3 lp = u_lightPosRadius[_idx].xyz - _wpos;
|
vec3 lp = u_lightPosRadius[_idx].xyz - _wpos;
|
||||||
float attn = 1.0 - smoothstep(u_lightRgbInnerR[_idx].w, 1.0, length(lp) / u_lightPosRadius[_idx].w);
|
float attn = 1.0 - smoothstep(u_lightRgbInnerR[_idx].w, 1.0, length(lp) / u_lightPosRadius[_idx].w);
|
||||||
vec3 lightDir = mul(_tbn, normalize(lp) );
|
vec3 lightDir = mul( normalize(lp), _tbn );
|
||||||
vec2 bln = blinn(lightDir, _normal, _view);
|
vec2 bln = blinn(lightDir, _normal, _view);
|
||||||
vec4 lc = lit(bln.x, bln.y, 1.0);
|
vec4 lc = lit(bln.x, bln.y, 1.0);
|
||||||
vec3 rgb = u_lightRgbInnerR[_idx].xyz * saturate(lc.y) * attn;
|
vec3 rgb = u_lightRgbInnerR[_idx].xyz * saturate(lc.y) * attn;
|
||||||
return rgb;
|
return rgb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mat3 mtx3FromCols(vec3 c0, vec3 c1, vec3 c2)
|
||||||
|
{
|
||||||
|
#ifdef BGFX_SHADER_LANGUAGE_GLSL
|
||||||
|
return mat3(c0, c1, c2);
|
||||||
|
#else
|
||||||
|
return transpose(mat3(c0, c1, c2));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
mat3 tbn = mat3(
|
mat3 tbn = mtx3FromCols(v_tangent, v_bitangent, v_normal);
|
||||||
normalize(v_tangent),
|
|
||||||
normalize(v_bitangent),
|
|
||||||
normalize(v_normal)
|
|
||||||
);
|
|
||||||
|
|
||||||
vec3 normal;
|
vec3 normal;
|
||||||
normal.xy = texture2D(s_texNormal, v_texcoord0).xy * 2.0 - 1.0;
|
normal.xy = texture2D(s_texNormal, v_texcoord0).xy * 2.0 - 1.0;
|
||||||
normal.z = sqrt(1.0 - dot(normal.xy, normal.xy) );
|
normal.z = sqrt(1.0 - dot(normal.xy, normal.xy) );
|
||||||
vec3 view = -normalize(v_view);
|
vec3 view = normalize(v_view);
|
||||||
|
|
||||||
vec3 lightColor;
|
vec3 lightColor;
|
||||||
lightColor = calcLight(0, tbn, v_wpos, normal, view);
|
lightColor = calcLight(0, tbn, v_wpos, normal, view);
|
||||||
|
@ -8,30 +8,37 @@ $output v_wpos, v_view, v_normal, v_tangent, v_bitangent, v_texcoord0
|
|||||||
|
|
||||||
#include "../common/common.sh"
|
#include "../common/common.sh"
|
||||||
|
|
||||||
|
mat3 mtx3FromCols(vec3 c0, vec3 c1, vec3 c2)
|
||||||
|
{
|
||||||
|
#ifdef BGFX_SHADER_LANGUAGE_GLSL
|
||||||
|
return mat3(c0, c1, c2);
|
||||||
|
#else
|
||||||
|
return transpose(mat3(c0, c1, c2));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec3 wpos = mul(u_model[0], vec4(a_position, 1.0) ).xyz;
|
vec3 wpos = mul(u_model[0], vec4(a_position, 1.0) ).xyz;
|
||||||
|
v_wpos = wpos;
|
||||||
|
|
||||||
gl_Position = mul(u_viewProj, vec4(wpos, 1.0) );
|
gl_Position = mul(u_viewProj, vec4(wpos, 1.0) );
|
||||||
|
|
||||||
vec4 normal = a_normal * 2.0 - 1.0;
|
vec4 normal = a_normal * 2.0 - 1.0;
|
||||||
vec3 wnormal = mul(u_model[0], vec4(normal.xyz, 0.0) ).xyz;
|
|
||||||
|
|
||||||
vec4 tangent = a_tangent * 2.0 - 1.0;
|
vec4 tangent = a_tangent * 2.0 - 1.0;
|
||||||
|
|
||||||
|
vec3 wnormal = mul(u_model[0], vec4(normal.xyz, 0.0) ).xyz;
|
||||||
vec3 wtangent = mul(u_model[0], vec4(tangent.xyz, 0.0) ).xyz;
|
vec3 wtangent = mul(u_model[0], vec4(tangent.xyz, 0.0) ).xyz;
|
||||||
|
|
||||||
vec3 viewNormal = normalize(mul(u_view, vec4(wnormal, 0.0) ).xyz);
|
v_normal = normalize(wnormal);
|
||||||
vec3 viewTangent = normalize(mul(u_view, vec4(wtangent, 0.0) ).xyz);
|
v_tangent = normalize(wtangent);
|
||||||
vec3 viewBitangent = cross(viewNormal, viewTangent) * tangent.w;
|
v_bitangent = cross(v_normal, v_tangent) * tangent.w;
|
||||||
mat3 tbn = mat3(viewTangent, viewBitangent, viewNormal);
|
|
||||||
|
|
||||||
v_wpos = wpos;
|
mat3 tbn = mtx3FromCols(v_tangent, v_bitangent, v_normal);
|
||||||
|
|
||||||
vec3 view = mul(u_view, vec4(wpos, 0.0) ).xyz;
|
|
||||||
v_view = mul(view, tbn);
|
|
||||||
|
|
||||||
v_normal = viewNormal;
|
|
||||||
v_tangent = viewTangent;
|
|
||||||
v_bitangent = viewBitangent;
|
|
||||||
|
|
||||||
|
// eye position in world space
|
||||||
|
vec3 weyepos = mul(vec4(0.0, 0.0, 0.0, 1.0), u_view).xyz;
|
||||||
|
// tangent space view dir
|
||||||
|
v_view = mul(weyepos - wpos, tbn);
|
||||||
v_texcoord0 = a_texcoord0;
|
v_texcoord0 = a_texcoord0;
|
||||||
}
|
}
|
||||||
|
@ -25,19 +25,16 @@ void main()
|
|||||||
vec4 tangent = a_tangent * 2.0 - 1.0;
|
vec4 tangent = a_tangent * 2.0 - 1.0;
|
||||||
vec3 wtangent = instMul(model, vec4(tangent.xyz, 0.0) ).xyz;
|
vec3 wtangent = instMul(model, vec4(tangent.xyz, 0.0) ).xyz;
|
||||||
|
|
||||||
vec3 viewNormal = normalize(mul(u_view, vec4(wnormal, 0.0) ).xyz);
|
v_normal = wnormal;
|
||||||
vec3 viewTangent = normalize(mul(u_view, vec4(wtangent, 0.0) ).xyz);
|
v_tangent = wtangent;
|
||||||
vec3 viewBitangent = cross(viewNormal, viewTangent) * tangent.w;
|
v_bitangent = cross(v_normal, v_tangent) * tangent.w;
|
||||||
mat3 tbn = mat3(viewTangent, viewBitangent, viewNormal);
|
|
||||||
|
mat3 tbn = mat3(v_tangent, v_bitangent, v_normal);
|
||||||
|
|
||||||
v_wpos = wpos;
|
v_wpos = wpos;
|
||||||
|
|
||||||
vec3 view = mul(u_view, vec4(wpos, 0.0) ).xyz;
|
vec3 weyepos = mul(vec4(0.0, 0.0, 0.0, 1.0), u_view).xyz;
|
||||||
v_view = instMul(view, tbn);
|
v_view = instMul(weyepos - wpos, tbn);
|
||||||
|
|
||||||
v_normal = viewNormal;
|
|
||||||
v_tangent = viewTangent;
|
|
||||||
v_bitangent = viewBitangent;
|
|
||||||
|
|
||||||
v_texcoord0 = a_texcoord0;
|
v_texcoord0 = a_texcoord0;
|
||||||
}
|
}
|
||||||
|
@ -518,6 +518,32 @@ void drawGraph(struct NVGcontext* vg, float x, float y, float w, float h, float
|
|||||||
nvgStrokeWidth(vg, 1.0f);
|
nvgStrokeWidth(vg, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void drawSpinner(struct NVGcontext* vg, float cx, float cy, float r, float t)
|
||||||
|
{
|
||||||
|
float a0 = 0.0f + t*6;
|
||||||
|
float a1 = NVG_PI + t*6;
|
||||||
|
float r0 = r;
|
||||||
|
float r1 = r * 0.75f;
|
||||||
|
float ax,ay, bx,by;
|
||||||
|
struct NVGpaint paint;
|
||||||
|
|
||||||
|
nvgSave(vg);
|
||||||
|
|
||||||
|
nvgBeginPath(vg);
|
||||||
|
nvgArc(vg, cx,cy, r0, a0, a1, NVG_CW);
|
||||||
|
nvgArc(vg, cx,cy, r1, a1, a0, NVG_CCW);
|
||||||
|
nvgClosePath(vg);
|
||||||
|
ax = cx + cosf(a0) * (r0+r1)*0.5f;
|
||||||
|
ay = cy + sinf(a0) * (r0+r1)*0.5f;
|
||||||
|
bx = cx + cosf(a1) * (r0+r1)*0.5f;
|
||||||
|
by = cy + sinf(a1) * (r0+r1)*0.5f;
|
||||||
|
paint = nvgLinearGradient(vg, ax,ay, bx,by, nvgRGBA(0,0,0,0), nvgRGBA(0,0,0,128) );
|
||||||
|
nvgFillPaint(vg, paint);
|
||||||
|
nvgFill(vg);
|
||||||
|
|
||||||
|
nvgRestore(vg);
|
||||||
|
}
|
||||||
|
|
||||||
void drawThumbnails(struct NVGcontext* vg, float x, float y, float w, float h, const int* images, int nimages, float t)
|
void drawThumbnails(struct NVGcontext* vg, float x, float y, float w, float h, const int* images, int nimages, float t)
|
||||||
{
|
{
|
||||||
float cornerRadius = 3.0f;
|
float cornerRadius = 3.0f;
|
||||||
@ -529,7 +555,8 @@ void drawThumbnails(struct NVGcontext* vg, float x, float y, float w, float h, c
|
|||||||
float stackh = (nimages/2) * (thumb+10) + 10;
|
float stackh = (nimages/2) * (thumb+10) + 10;
|
||||||
int i;
|
int i;
|
||||||
float u = (1+cosf(t*0.5f) )*0.5f;
|
float u = (1+cosf(t*0.5f) )*0.5f;
|
||||||
float scrollh;
|
float u2 = (1-cosf(t*0.2f) )*0.5f;
|
||||||
|
float scrollh, dv;
|
||||||
|
|
||||||
nvgSave(vg);
|
nvgSave(vg);
|
||||||
// nvgClearState(vg);
|
// nvgClearState(vg);
|
||||||
@ -556,8 +583,10 @@ void drawThumbnails(struct NVGcontext* vg, float x, float y, float w, float h, c
|
|||||||
nvgScissor(vg, x,y,w,h);
|
nvgScissor(vg, x,y,w,h);
|
||||||
nvgTranslate(vg, 0, -(stackh - h)*u);
|
nvgTranslate(vg, 0, -(stackh - h)*u);
|
||||||
|
|
||||||
|
dv = 1.0f / (float)(nimages-1);
|
||||||
|
|
||||||
for (i = 0; i < nimages; i++) {
|
for (i = 0; i < nimages; i++) {
|
||||||
float tx, ty;
|
float tx, ty, v, a;
|
||||||
tx = x+10;
|
tx = x+10;
|
||||||
ty = y+10;
|
ty = y+10;
|
||||||
tx += (i%2) * (thumb+10);
|
tx += (i%2) * (thumb+10);
|
||||||
@ -574,7 +603,14 @@ void drawThumbnails(struct NVGcontext* vg, float x, float y, float w, float h, c
|
|||||||
ix = -(iw-thumb)*0.5f;
|
ix = -(iw-thumb)*0.5f;
|
||||||
iy = 0;
|
iy = 0;
|
||||||
}
|
}
|
||||||
imgPaint = nvgImagePattern(vg, tx+ix, ty+iy, iw,ih, 0.0f/180.0f*NVG_PI, images[i], 1.0f);
|
|
||||||
|
v = i * dv;
|
||||||
|
a = bx::clamp((u2-v) / dv, 0.0f, 1.0f);
|
||||||
|
|
||||||
|
if (a < 1.0f)
|
||||||
|
drawSpinner(vg, tx+thumb/2,ty+thumb/2, thumb*0.25f, t);
|
||||||
|
|
||||||
|
imgPaint = nvgImagePattern(vg, tx+ix, ty+iy, iw,ih, 0.0f/180.0f*NVG_PI, images[i], a);
|
||||||
nvgBeginPath(vg);
|
nvgBeginPath(vg);
|
||||||
nvgRoundedRect(vg, tx,ty, thumb,thumb, 5);
|
nvgRoundedRect(vg, tx,ty, thumb,thumb, 5);
|
||||||
nvgFillPaint(vg, imgPaint);
|
nvgFillPaint(vg, imgPaint);
|
||||||
@ -786,6 +822,7 @@ void drawLines(struct NVGcontext* vg, float x, float y, float w, float h, float
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
nvgRestore(vg);
|
nvgRestore(vg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -939,7 +976,7 @@ void drawBlendish(struct NVGcontext* _vg, float _x, float _y, float _w, float _h
|
|||||||
|
|
||||||
struct DemoData
|
struct DemoData
|
||||||
{
|
{
|
||||||
int fontNormal, fontBold, fontIcons;
|
int fontNormal, fontBold, fontIcons, fontEmoji;
|
||||||
int images[12];
|
int images[12];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -980,12 +1017,17 @@ int createImage(struct NVGcontext* _ctx, const char* _filePath, int _imageFlags)
|
|||||||
|
|
||||||
int loadDemoData(struct NVGcontext* vg, struct DemoData* data)
|
int loadDemoData(struct NVGcontext* vg, struct DemoData* data)
|
||||||
{
|
{
|
||||||
for (uint32_t ii = 0; ii < 12; ++ii)
|
int i;
|
||||||
|
|
||||||
|
if (vg == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
for (i = 0; i < 12; i++)
|
||||||
{
|
{
|
||||||
char file[128];
|
char file[128];
|
||||||
bx::snprintf(file, 128, "images/image%d.jpg", ii+1);
|
bx::snprintf(file, 128, "images/image%d.jpg", i+1);
|
||||||
data->images[ii] = createImage(vg, file, 0);
|
data->images[i] = createImage(vg, file, 0);
|
||||||
if (data->images[ii] == 0)
|
if (data->images[i] == 0)
|
||||||
{
|
{
|
||||||
printf("Could not load %s.\n", file);
|
printf("Could not load %s.\n", file);
|
||||||
return -1;
|
return -1;
|
||||||
@ -1013,6 +1055,15 @@ int loadDemoData(struct NVGcontext* vg, struct DemoData* data)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data->fontEmoji = nvgCreateFont(vg, "emoji", "font/NotoEmoji-Regular.ttf");
|
||||||
|
if (data->fontEmoji == -1)
|
||||||
|
{
|
||||||
|
printf("Could not add font emoji.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
nvgAddFallbackFontId(vg, data->fontNormal, data->fontEmoji);
|
||||||
|
nvgAddFallbackFontId(vg, data->fontBold, data->fontEmoji);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1031,13 +1082,14 @@ void drawParagraph(struct NVGcontext* vg, float x, float y, float width, float h
|
|||||||
{
|
{
|
||||||
struct NVGtextRow rows[3];
|
struct NVGtextRow rows[3];
|
||||||
struct NVGglyphPosition glyphs[100];
|
struct NVGglyphPosition glyphs[100];
|
||||||
const char* text = "This is longer chunk of text.\n \n Would have used lorem ipsum but she was busy jumping over the lazy dog with the fox and all the men who came to the aid of the party.";
|
const char* text = "This is longer chunk of text.\n \n Would have used lorem ipsum but she was busy jumping over the lazy dog with the fox and all the men who came to the aid of the party.🎉";
|
||||||
const char* start;
|
const char* start;
|
||||||
const char* end;
|
const char* end;
|
||||||
int nrows, i, nglyphs, j, lnum = 0;
|
int nrows, i, nglyphs, j, lnum = 0;
|
||||||
float lineh;
|
float lineh;
|
||||||
float caretx, px;
|
float caretx, px;
|
||||||
float bounds[4];
|
float bounds[4];
|
||||||
|
float a;
|
||||||
float gx = 0.0f, gy = 0.0f;
|
float gx = 0.0f, gy = 0.0f;
|
||||||
int gutter = 0;
|
int gutter = 0;
|
||||||
NVG_NOTUSED(height);
|
NVG_NOTUSED(height);
|
||||||
@ -1061,7 +1113,7 @@ void drawParagraph(struct NVGcontext* vg, float x, float y, float width, float h
|
|||||||
int hit = mx > x && mx < (x+width) && my >= y && my < (y+lineh);
|
int hit = mx > x && mx < (x+width) && my >= y && my < (y+lineh);
|
||||||
|
|
||||||
nvgBeginPath(vg);
|
nvgBeginPath(vg);
|
||||||
nvgFillColor(vg, nvgRGBA(255,255,255,hit?64:8) );
|
nvgFillColor(vg, nvgRGBA(255,255,255,hit?64:16) );
|
||||||
nvgRect(vg, x, y, row->width, lineh);
|
nvgRect(vg, x, y, row->width, lineh);
|
||||||
nvgFill(vg);
|
nvgFill(vg);
|
||||||
|
|
||||||
@ -1127,6 +1179,14 @@ void drawParagraph(struct NVGcontext* vg, float x, float y, float width, float h
|
|||||||
nvgTextLineHeight(vg, 1.2f);
|
nvgTextLineHeight(vg, 1.2f);
|
||||||
|
|
||||||
nvgTextBoxBounds(vg, x,y, 150, "Hover your mouse over the text to see calculated caret position.", NULL, bounds);
|
nvgTextBoxBounds(vg, x,y, 150, "Hover your mouse over the text to see calculated caret position.", NULL, bounds);
|
||||||
|
|
||||||
|
// Fade the tooltip out when close to it.
|
||||||
|
gx = bx::abs((mx - (bounds[0]+bounds[2])*0.5f) / (bounds[0] - bounds[2]) );
|
||||||
|
gy = bx::abs((my - (bounds[1]+bounds[3])*0.5f) / (bounds[1] - bounds[3]) );
|
||||||
|
a = bx::max(gx, gy) - 0.5f;
|
||||||
|
a = bx::clamp(a, 0.0f, 1.0f);
|
||||||
|
nvgGlobalAlpha(vg, a);
|
||||||
|
|
||||||
nvgBeginPath(vg);
|
nvgBeginPath(vg);
|
||||||
nvgFillColor(vg, nvgRGBA(220,220,220,255) );
|
nvgFillColor(vg, nvgRGBA(220,220,220,255) );
|
||||||
nvgRoundedRect(vg
|
nvgRoundedRect(vg
|
||||||
@ -1150,13 +1210,15 @@ void drawParagraph(struct NVGcontext* vg, float x, float y, float width, float h
|
|||||||
|
|
||||||
void drawWidths(struct NVGcontext* vg, float x, float y, float width)
|
void drawWidths(struct NVGcontext* vg, float x, float y, float width)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
nvgSave(vg);
|
nvgSave(vg);
|
||||||
|
|
||||||
nvgStrokeColor(vg, nvgRGBA(0,0,0,255) );
|
nvgStrokeColor(vg, nvgRGBA(0,0,0,255) );
|
||||||
|
|
||||||
for (uint32_t ii = 0; ii < 20; ++ii)
|
for (i = 0; i < 20; i++)
|
||||||
{
|
{
|
||||||
float w = (ii+0.5f)*0.1f;
|
float w = (i+0.5f)*0.1f;
|
||||||
nvgStrokeWidth(vg, w);
|
nvgStrokeWidth(vg, w);
|
||||||
nvgBeginPath(vg);
|
nvgBeginPath(vg);
|
||||||
nvgMoveTo(vg, x,y);
|
nvgMoveTo(vg, x,y);
|
||||||
@ -1168,6 +1230,73 @@ void drawWidths(struct NVGcontext* vg, float x, float y, float width)
|
|||||||
nvgRestore(vg);
|
nvgRestore(vg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void drawCaps(struct NVGcontext* vg, float x, float y, float width)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int caps[3] = {NVG_BUTT, NVG_ROUND, NVG_SQUARE};
|
||||||
|
float lineWidth = 8.0f;
|
||||||
|
|
||||||
|
nvgSave(vg);
|
||||||
|
|
||||||
|
nvgBeginPath(vg);
|
||||||
|
nvgRect(vg, x-lineWidth/2, y, width+lineWidth, 40);
|
||||||
|
nvgFillColor(vg, nvgRGBA(255,255,255,32) );
|
||||||
|
nvgFill(vg);
|
||||||
|
|
||||||
|
nvgBeginPath(vg);
|
||||||
|
nvgRect(vg, x, y, width, 40);
|
||||||
|
nvgFillColor(vg, nvgRGBA(255,255,255,32) );
|
||||||
|
nvgFill(vg);
|
||||||
|
|
||||||
|
nvgStrokeWidth(vg, lineWidth);
|
||||||
|
for (i = 0; i < 3; i++) {
|
||||||
|
nvgLineCap(vg, caps[i]);
|
||||||
|
nvgStrokeColor(vg, nvgRGBA(0,0,0,255) );
|
||||||
|
nvgBeginPath(vg);
|
||||||
|
nvgMoveTo(vg, x, y + i*10 + 5);
|
||||||
|
nvgLineTo(vg, x+width, y + i*10 + 5);
|
||||||
|
nvgStroke(vg);
|
||||||
|
}
|
||||||
|
|
||||||
|
nvgRestore(vg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawScissor(struct NVGcontext* vg, float x, float y, float t)
|
||||||
|
{
|
||||||
|
nvgSave(vg);
|
||||||
|
|
||||||
|
// Draw first rect and set scissor to it's area.
|
||||||
|
nvgTranslate(vg, x, y);
|
||||||
|
nvgRotate(vg, nvgDegToRad(5) );
|
||||||
|
nvgBeginPath(vg);
|
||||||
|
nvgRect(vg, -20,-20,60,40);
|
||||||
|
nvgFillColor(vg, nvgRGBA(255,0,0,255) );
|
||||||
|
nvgFill(vg);
|
||||||
|
nvgScissor(vg, -20,-20,60,40);
|
||||||
|
|
||||||
|
// Draw second rectangle with offset and rotation.
|
||||||
|
nvgTranslate(vg, 40,0);
|
||||||
|
nvgRotate(vg, t);
|
||||||
|
|
||||||
|
// Draw the intended second rectangle without any scissoring.
|
||||||
|
nvgSave(vg);
|
||||||
|
nvgResetScissor(vg);
|
||||||
|
nvgBeginPath(vg);
|
||||||
|
nvgRect(vg, -20,-10,60,30);
|
||||||
|
nvgFillColor(vg, nvgRGBA(255,128,0,64) );
|
||||||
|
nvgFill(vg);
|
||||||
|
nvgRestore(vg);
|
||||||
|
|
||||||
|
// Draw second rectangle with combined scissoring.
|
||||||
|
nvgIntersectScissor(vg, -20,-10,60,30);
|
||||||
|
nvgBeginPath(vg);
|
||||||
|
nvgRect(vg, -20,-10,60,30);
|
||||||
|
nvgFillColor(vg, nvgRGBA(255,128,0,255) );
|
||||||
|
nvgFill(vg);
|
||||||
|
|
||||||
|
nvgRestore(vg);
|
||||||
|
}
|
||||||
|
|
||||||
void renderDemo(struct NVGcontext* vg, float mx, float my, float width, float height, float t, int blowup, struct DemoData* data)
|
void renderDemo(struct NVGcontext* vg, float mx, float my, float width, float height, float t, int blowup, struct DemoData* data)
|
||||||
{
|
{
|
||||||
float x,y,popx,popy;
|
float x,y,popx,popy;
|
||||||
@ -1181,6 +1310,14 @@ void renderDemo(struct NVGcontext* vg, float mx, float my, float width, float he
|
|||||||
// Line joints
|
// Line joints
|
||||||
drawLines(vg, 50, height-50, 600, 35, t);
|
drawLines(vg, 50, height-50, 600, 35, t);
|
||||||
|
|
||||||
|
// Line caps
|
||||||
|
drawWidths(vg, width-50, 35, 30);
|
||||||
|
|
||||||
|
// Line caps
|
||||||
|
drawCaps(vg, width-50, 260, 30);
|
||||||
|
|
||||||
|
drawScissor(vg, 40, height-150, t);
|
||||||
|
|
||||||
nvgSave(vg);
|
nvgSave(vg);
|
||||||
if (blowup)
|
if (blowup)
|
||||||
{
|
{
|
||||||
@ -1188,9 +1325,6 @@ void renderDemo(struct NVGcontext* vg, float mx, float my, float width, float he
|
|||||||
nvgScale(vg, 2.0f, 2.0f);
|
nvgScale(vg, 2.0f, 2.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Line width.
|
|
||||||
drawWidths(vg, width-50, 35, 30);
|
|
||||||
|
|
||||||
// Widgets.
|
// Widgets.
|
||||||
x = width-520; y = height-420;
|
x = width-520; y = height-420;
|
||||||
drawWindow(vg, "Widgets `n Stuff", x, y, 300, 400);
|
drawWindow(vg, "Widgets `n Stuff", x, y, 300, 400);
|
||||||
@ -1325,7 +1459,7 @@ public:
|
|||||||
// if no other draw calls are submitted to view 0.
|
// if no other draw calls are submitted to view 0.
|
||||||
bgfx::touch(0);
|
bgfx::touch(0);
|
||||||
|
|
||||||
nvgBeginFrame(m_nvg, m_width, m_height, 1.0f);
|
nvgBeginFrame(m_nvg, float(m_width), float(m_height), 1.0f);
|
||||||
|
|
||||||
renderDemo(m_nvg, float(m_mouseState.m_mx), float(m_mouseState.m_my), float(m_width), float(m_height), time, 0, &m_data);
|
renderDemo(m_nvg, float(m_mouseState.m_mx), float(m_mouseState.m_my), float(m_width), float(m_height), time, 0, &m_data);
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ typedef struct FONStextIter FONStextIter;
|
|||||||
|
|
||||||
typedef struct FONScontext FONScontext;
|
typedef struct FONScontext FONScontext;
|
||||||
|
|
||||||
// Contructor and destructor.
|
// Constructor and destructor.
|
||||||
FONScontext* fonsCreateInternal(FONSparams* params);
|
FONScontext* fonsCreateInternal(FONSparams* params);
|
||||||
void fonsDeleteInternal(FONScontext* s);
|
void fonsDeleteInternal(FONScontext* s);
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ void fonsSetErrorCallback(FONScontext* s, void (*callback)(void* uptr, int error
|
|||||||
void fonsGetAtlasSize(FONScontext* s, int* width, int* height);
|
void fonsGetAtlasSize(FONScontext* s, int* width, int* height);
|
||||||
// Expands the atlas size.
|
// Expands the atlas size.
|
||||||
int fonsExpandAtlas(FONScontext* s, int width, int height);
|
int fonsExpandAtlas(FONScontext* s, int width, int height);
|
||||||
// Reseta the whole stash.
|
// Resets the whole stash.
|
||||||
int fonsResetAtlas(FONScontext* stash, int width, int height);
|
int fonsResetAtlas(FONScontext* stash, int width, int height);
|
||||||
|
|
||||||
// Add fonts
|
// Add fonts
|
||||||
@ -167,6 +167,14 @@ int fons__tt_init(FONScontext *context)
|
|||||||
return ftError == 0;
|
return ftError == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int fons__tt_done(FONScontext *context)
|
||||||
|
{
|
||||||
|
FT_Error ftError;
|
||||||
|
FONS_NOTUSED(context);
|
||||||
|
ftError = FT_Done_FreeType(ftLibrary);
|
||||||
|
return ftError == 0;
|
||||||
|
}
|
||||||
|
|
||||||
int fons__tt_loadFont(FONScontext *context, FONSttFontImpl *font, unsigned char *data, int dataSize)
|
int fons__tt_loadFont(FONScontext *context, FONSttFontImpl *font, unsigned char *data, int dataSize)
|
||||||
{
|
{
|
||||||
FT_Error ftError;
|
FT_Error ftError;
|
||||||
@ -204,7 +212,7 @@ int fons__tt_buildGlyphBitmap(FONSttFontImpl *font, int glyph, float size, float
|
|||||||
|
|
||||||
ftError = FT_Set_Pixel_Sizes(font->font, 0, (FT_UInt)(size * (float)font->font->units_per_EM / (float)(font->font->ascender - font->font->descender)));
|
ftError = FT_Set_Pixel_Sizes(font->font, 0, (FT_UInt)(size * (float)font->font->units_per_EM / (float)(font->font->ascender - font->font->descender)));
|
||||||
if (ftError) return 0;
|
if (ftError) return 0;
|
||||||
ftError = FT_Load_Glyph(font->font, glyph, FT_LOAD_RENDER);
|
ftError = FT_Load_Glyph(font->font, glyph, FT_LOAD_RENDER | FT_LOAD_FORCE_AUTOHINT);
|
||||||
if (ftError) return 0;
|
if (ftError) return 0;
|
||||||
ftError = FT_Get_Advance(font->font, glyph, FT_LOAD_NO_SCALE, &advFixed);
|
ftError = FT_Get_Advance(font->font, glyph, FT_LOAD_NO_SCALE, &advFixed);
|
||||||
if (ftError) return 0;
|
if (ftError) return 0;
|
||||||
@ -271,6 +279,12 @@ int fons__tt_init(FONScontext *context)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int fons__tt_done(FONScontext *context)
|
||||||
|
{
|
||||||
|
FONS_NOTUSED(context);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int fons__tt_loadFont(FONScontext *context, FONSttFontImpl *font, unsigned char *data, int dataSize)
|
int fons__tt_loadFont(FONScontext *context, FONSttFontImpl *font, unsigned char *data, int dataSize)
|
||||||
{
|
{
|
||||||
int stbError;
|
int stbError;
|
||||||
@ -319,7 +333,7 @@ int fons__tt_getGlyphKernAdvance(FONSttFontImpl *font, int glyph1, int glyph2)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef FONS_SCRATCH_BUF_SIZE
|
#ifndef FONS_SCRATCH_BUF_SIZE
|
||||||
# define FONS_SCRATCH_BUF_SIZE 64000
|
# define FONS_SCRATCH_BUF_SIZE 96000
|
||||||
#endif
|
#endif
|
||||||
#ifndef FONS_HASH_LUT_SIZE
|
#ifndef FONS_HASH_LUT_SIZE
|
||||||
# define FONS_HASH_LUT_SIZE 256
|
# define FONS_HASH_LUT_SIZE 256
|
||||||
@ -886,7 +900,7 @@ error:
|
|||||||
int fonsAddFont(FONScontext* stash, const char* name, const char* path)
|
int fonsAddFont(FONScontext* stash, const char* name, const char* path)
|
||||||
{
|
{
|
||||||
FILE* fp = 0;
|
FILE* fp = 0;
|
||||||
size_t dataSize = 0;
|
int dataSize = 0;
|
||||||
size_t readed;
|
size_t readed;
|
||||||
unsigned char* data = NULL;
|
unsigned char* data = NULL;
|
||||||
|
|
||||||
@ -894,16 +908,16 @@ int fonsAddFont(FONScontext* stash, const char* name, const char* path)
|
|||||||
fp = fopen(path, "rb");
|
fp = fopen(path, "rb");
|
||||||
if (fp == NULL) goto error;
|
if (fp == NULL) goto error;
|
||||||
fseek(fp,0,SEEK_END);
|
fseek(fp,0,SEEK_END);
|
||||||
dataSize = ftell(fp);
|
dataSize = (int)ftell(fp);
|
||||||
fseek(fp,0,SEEK_SET);
|
fseek(fp,0,SEEK_SET);
|
||||||
data = (unsigned char*)malloc(dataSize);
|
data = (unsigned char*)malloc(dataSize);
|
||||||
if (data == NULL) goto error;
|
if (data == NULL) goto error;
|
||||||
readed = fread(data, 1, dataSize, fp);
|
readed = fread(data, 1, dataSize, fp);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
fp = 0;
|
fp = 0;
|
||||||
if (readed != dataSize) goto error;
|
if ((int)readed != dataSize) goto error;
|
||||||
|
|
||||||
return fonsAddFontMem(stash, name, data, int(dataSize), 1);
|
return fonsAddFontMem(stash, name, data, dataSize, 1);
|
||||||
|
|
||||||
error:
|
error:
|
||||||
if (data) free(data);
|
if (data) free(data);
|
||||||
@ -1637,6 +1651,7 @@ void fonsDeleteInternal(FONScontext* stash)
|
|||||||
if (stash->texData) free(stash->texData);
|
if (stash->texData) free(stash->texData);
|
||||||
if (stash->scratch) free(stash->scratch);
|
if (stash->scratch) free(stash->scratch);
|
||||||
free(stash);
|
free(stash);
|
||||||
|
fons__tt_done(stash);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fonsSetErrorCallback(FONScontext* stash, void (*callback)(void* uptr, int error, int val), void* uptr)
|
void fonsSetErrorCallback(FONScontext* stash, void (*callback)(void* uptr, int error, int val), void* uptr)
|
||||||
|
@ -373,7 +373,7 @@ void nvgDeleteInternal(NVGcontext* ctx)
|
|||||||
free(ctx);
|
free(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void nvgBeginFrame(NVGcontext* ctx, int windowWidth, int windowHeight, float devicePixelRatio)
|
void nvgBeginFrame(NVGcontext* ctx, float windowWidth, float windowHeight, float devicePixelRatio)
|
||||||
{
|
{
|
||||||
/* printf("Tris: draws:%d fill:%d stroke:%d text:%d TOT:%d\n",
|
/* printf("Tris: draws:%d fill:%d stroke:%d text:%d TOT:%d\n",
|
||||||
ctx->drawCallCount, ctx->fillTriCount, ctx->strokeTriCount, ctx->textTriCount,
|
ctx->drawCallCount, ctx->fillTriCount, ctx->strokeTriCount, ctx->textTriCount,
|
||||||
@ -1421,7 +1421,8 @@ static void nvg__chooseBevel(int bevel, NVGpoint* p0, NVGpoint* p1, float w,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static NVGvertex* nvg__roundJoin(NVGvertex* dst, NVGpoint* p0, NVGpoint* p1,
|
static NVGvertex* nvg__roundJoin(NVGvertex* dst, NVGpoint* p0, NVGpoint* p1,
|
||||||
float lw, float rw, float lu, float ru, int ncap, float fringe)
|
float lw, float rw, float lu, float ru, int ncap,
|
||||||
|
float fringe)
|
||||||
{
|
{
|
||||||
int i, n;
|
int i, n;
|
||||||
float dlx0 = p0->dy;
|
float dlx0 = p0->dy;
|
||||||
@ -1554,36 +1555,39 @@ static NVGvertex* nvg__bevelJoin(NVGvertex* dst, NVGpoint* p0, NVGpoint* p1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static NVGvertex* nvg__buttCapStart(NVGvertex* dst, NVGpoint* p,
|
static NVGvertex* nvg__buttCapStart(NVGvertex* dst, NVGpoint* p,
|
||||||
float dx, float dy, float w, float d, float aa)
|
float dx, float dy, float w, float d,
|
||||||
|
float aa, float u0, float u1)
|
||||||
{
|
{
|
||||||
float px = p->x - dx*d;
|
float px = p->x - dx*d;
|
||||||
float py = p->y - dy*d;
|
float py = p->y - dy*d;
|
||||||
float dlx = dy;
|
float dlx = dy;
|
||||||
float dly = -dx;
|
float dly = -dx;
|
||||||
nvg__vset(dst, px + dlx*w - dx*aa, py + dly*w - dy*aa, 0,0); dst++;
|
nvg__vset(dst, px + dlx*w - dx*aa, py + dly*w - dy*aa, u0,0); dst++;
|
||||||
nvg__vset(dst, px - dlx*w - dx*aa, py - dly*w - dy*aa, 1,0); dst++;
|
nvg__vset(dst, px - dlx*w - dx*aa, py - dly*w - dy*aa, u1,0); dst++;
|
||||||
nvg__vset(dst, px + dlx*w, py + dly*w, 0,1); dst++;
|
nvg__vset(dst, px + dlx*w, py + dly*w, u0,1); dst++;
|
||||||
nvg__vset(dst, px - dlx*w, py - dly*w, 1,1); dst++;
|
nvg__vset(dst, px - dlx*w, py - dly*w, u1,1); dst++;
|
||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NVGvertex* nvg__buttCapEnd(NVGvertex* dst, NVGpoint* p,
|
static NVGvertex* nvg__buttCapEnd(NVGvertex* dst, NVGpoint* p,
|
||||||
float dx, float dy, float w, float d, float aa)
|
float dx, float dy, float w, float d,
|
||||||
|
float aa, float u0, float u1)
|
||||||
{
|
{
|
||||||
float px = p->x + dx*d;
|
float px = p->x + dx*d;
|
||||||
float py = p->y + dy*d;
|
float py = p->y + dy*d;
|
||||||
float dlx = dy;
|
float dlx = dy;
|
||||||
float dly = -dx;
|
float dly = -dx;
|
||||||
nvg__vset(dst, px + dlx*w, py + dly*w, 0,1); dst++;
|
nvg__vset(dst, px + dlx*w, py + dly*w, u0,1); dst++;
|
||||||
nvg__vset(dst, px - dlx*w, py - dly*w, 1,1); dst++;
|
nvg__vset(dst, px - dlx*w, py - dly*w, u1,1); dst++;
|
||||||
nvg__vset(dst, px + dlx*w + dx*aa, py + dly*w + dy*aa, 0,0); dst++;
|
nvg__vset(dst, px + dlx*w + dx*aa, py + dly*w + dy*aa, u0,0); dst++;
|
||||||
nvg__vset(dst, px - dlx*w + dx*aa, py - dly*w + dy*aa, 1,0); dst++;
|
nvg__vset(dst, px - dlx*w + dx*aa, py - dly*w + dy*aa, u1,0); dst++;
|
||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static NVGvertex* nvg__roundCapStart(NVGvertex* dst, NVGpoint* p,
|
static NVGvertex* nvg__roundCapStart(NVGvertex* dst, NVGpoint* p,
|
||||||
float dx, float dy, float w, int ncap, float aa)
|
float dx, float dy, float w, int ncap,
|
||||||
|
float aa, float u0, float u1)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
float px = p->x;
|
float px = p->x;
|
||||||
@ -1594,16 +1598,17 @@ static NVGvertex* nvg__roundCapStart(NVGvertex* dst, NVGpoint* p,
|
|||||||
for (i = 0; i < ncap; i++) {
|
for (i = 0; i < ncap; i++) {
|
||||||
float a = i/(float)(ncap-1)*NVG_PI;
|
float a = i/(float)(ncap-1)*NVG_PI;
|
||||||
float ax = cosf(a) * w, ay = sinf(a) * w;
|
float ax = cosf(a) * w, ay = sinf(a) * w;
|
||||||
nvg__vset(dst, px - dlx*ax - dx*ay, py - dly*ax - dy*ay, 0,1); dst++;
|
nvg__vset(dst, px - dlx*ax - dx*ay, py - dly*ax - dy*ay, u0,1); dst++;
|
||||||
nvg__vset(dst, px, py, 0.5f,1); dst++;
|
nvg__vset(dst, px, py, 0.5f,1); dst++;
|
||||||
}
|
}
|
||||||
nvg__vset(dst, px + dlx*w, py + dly*w, 0,1); dst++;
|
nvg__vset(dst, px + dlx*w, py + dly*w, u0,1); dst++;
|
||||||
nvg__vset(dst, px - dlx*w, py - dly*w, 1,1); dst++;
|
nvg__vset(dst, px - dlx*w, py - dly*w, u1,1); dst++;
|
||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NVGvertex* nvg__roundCapEnd(NVGvertex* dst, NVGpoint* p,
|
static NVGvertex* nvg__roundCapEnd(NVGvertex* dst, NVGpoint* p,
|
||||||
float dx, float dy, float w, int ncap, float aa)
|
float dx, float dy, float w, int ncap,
|
||||||
|
float aa, float u0, float u1)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
float px = p->x;
|
float px = p->x;
|
||||||
@ -1611,13 +1616,13 @@ static NVGvertex* nvg__roundCapEnd(NVGvertex* dst, NVGpoint* p,
|
|||||||
float dlx = dy;
|
float dlx = dy;
|
||||||
float dly = -dx;
|
float dly = -dx;
|
||||||
NVG_NOTUSED(aa);
|
NVG_NOTUSED(aa);
|
||||||
nvg__vset(dst, px + dlx*w, py + dly*w, 0,1); dst++;
|
nvg__vset(dst, px + dlx*w, py + dly*w, u0,1); dst++;
|
||||||
nvg__vset(dst, px - dlx*w, py - dly*w, 1,1); dst++;
|
nvg__vset(dst, px - dlx*w, py - dly*w, u1,1); dst++;
|
||||||
for (i = 0; i < ncap; i++) {
|
for (i = 0; i < ncap; i++) {
|
||||||
float a = i/(float)(ncap-1)*NVG_PI;
|
float a = i/(float)(ncap-1)*NVG_PI;
|
||||||
float ax = cosf(a) * w, ay = sinf(a) * w;
|
float ax = cosf(a) * w, ay = sinf(a) * w;
|
||||||
nvg__vset(dst, px, py, 0.5f,1); dst++;
|
nvg__vset(dst, px, py, 0.5f,1); dst++;
|
||||||
nvg__vset(dst, px - dlx*ax + dx*ay, py - dly*ax + dy*ay, 0,1); dst++;
|
nvg__vset(dst, px - dlx*ax + dx*ay, py - dly*ax + dy*ay, u0,1); dst++;
|
||||||
}
|
}
|
||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
@ -1693,15 +1698,24 @@ static void nvg__calculateJoins(NVGcontext* ctx, float w, int lineJoin, float mi
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int nvg__expandStroke(NVGcontext* ctx, float w, int lineCap, int lineJoin, float miterLimit)
|
static int nvg__expandStroke(NVGcontext* ctx, float w, float fringe, int lineCap, int lineJoin, float miterLimit)
|
||||||
{
|
{
|
||||||
NVGpathCache* cache = ctx->cache;
|
NVGpathCache* cache = ctx->cache;
|
||||||
NVGvertex* verts;
|
NVGvertex* verts;
|
||||||
NVGvertex* dst;
|
NVGvertex* dst;
|
||||||
int cverts, i, j;
|
int cverts, i, j;
|
||||||
float aa = ctx->fringeWidth;
|
float aa = fringe;//ctx->fringeWidth;
|
||||||
|
float u0 = 0.0f, u1 = 1.0f;
|
||||||
int ncap = nvg__curveDivs(w, NVG_PI, ctx->tessTol); // Calculate divisions per half circle.
|
int ncap = nvg__curveDivs(w, NVG_PI, ctx->tessTol); // Calculate divisions per half circle.
|
||||||
|
|
||||||
|
w += aa * 0.5f;
|
||||||
|
|
||||||
|
// Disable the gradient used for antialiasing when antialiasing is not used.
|
||||||
|
if (aa == 0.0f) {
|
||||||
|
u0 = 0.5f;
|
||||||
|
u1 = 0.5f;
|
||||||
|
}
|
||||||
|
|
||||||
nvg__calculateJoins(ctx, w, lineJoin, miterLimit);
|
nvg__calculateJoins(ctx, w, lineJoin, miterLimit);
|
||||||
|
|
||||||
// Calculate max vertex usage.
|
// Calculate max vertex usage.
|
||||||
@ -1762,42 +1776,42 @@ static int nvg__expandStroke(NVGcontext* ctx, float w, int lineCap, int lineJoin
|
|||||||
dy = p1->y - p0->y;
|
dy = p1->y - p0->y;
|
||||||
nvg__normalize(&dx, &dy);
|
nvg__normalize(&dx, &dy);
|
||||||
if (lineCap == NVG_BUTT)
|
if (lineCap == NVG_BUTT)
|
||||||
dst = nvg__buttCapStart(dst, p0, dx, dy, w, -aa*0.5f, aa);
|
dst = nvg__buttCapStart(dst, p0, dx, dy, w, -aa*0.5f, aa, u0, u1);
|
||||||
else if (lineCap == NVG_BUTT || lineCap == NVG_SQUARE)
|
else if (lineCap == NVG_BUTT || lineCap == NVG_SQUARE)
|
||||||
dst = nvg__buttCapStart(dst, p0, dx, dy, w, w-aa, aa);
|
dst = nvg__buttCapStart(dst, p0, dx, dy, w, w-aa, aa, u0, u1);
|
||||||
else if (lineCap == NVG_ROUND)
|
else if (lineCap == NVG_ROUND)
|
||||||
dst = nvg__roundCapStart(dst, p0, dx, dy, w, ncap, aa);
|
dst = nvg__roundCapStart(dst, p0, dx, dy, w, ncap, aa, u0, u1);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = s; j < e; ++j) {
|
for (j = s; j < e; ++j) {
|
||||||
if ((p1->flags & (NVG_PT_BEVEL | NVG_PR_INNERBEVEL)) != 0) {
|
if ((p1->flags & (NVG_PT_BEVEL | NVG_PR_INNERBEVEL)) != 0) {
|
||||||
if (lineJoin == NVG_ROUND) {
|
if (lineJoin == NVG_ROUND) {
|
||||||
dst = nvg__roundJoin(dst, p0, p1, w, w, 0, 1, ncap, aa);
|
dst = nvg__roundJoin(dst, p0, p1, w, w, u0, u1, ncap, aa);
|
||||||
} else {
|
} else {
|
||||||
dst = nvg__bevelJoin(dst, p0, p1, w, w, 0, 1, aa);
|
dst = nvg__bevelJoin(dst, p0, p1, w, w, u0, u1, aa);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nvg__vset(dst, p1->x + (p1->dmx * w), p1->y + (p1->dmy * w), 0,1); dst++;
|
nvg__vset(dst, p1->x + (p1->dmx * w), p1->y + (p1->dmy * w), u0,1); dst++;
|
||||||
nvg__vset(dst, p1->x - (p1->dmx * w), p1->y - (p1->dmy * w), 1,1); dst++;
|
nvg__vset(dst, p1->x - (p1->dmx * w), p1->y - (p1->dmy * w), u1,1); dst++;
|
||||||
}
|
}
|
||||||
p0 = p1++;
|
p0 = p1++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (loop) {
|
if (loop) {
|
||||||
// Loop it
|
// Loop it
|
||||||
nvg__vset(dst, verts[0].x, verts[0].y, 0,1); dst++;
|
nvg__vset(dst, verts[0].x, verts[0].y, u0,1); dst++;
|
||||||
nvg__vset(dst, verts[1].x, verts[1].y, 1,1); dst++;
|
nvg__vset(dst, verts[1].x, verts[1].y, u1,1); dst++;
|
||||||
} else {
|
} else {
|
||||||
// Add cap
|
// Add cap
|
||||||
dx = p1->x - p0->x;
|
dx = p1->x - p0->x;
|
||||||
dy = p1->y - p0->y;
|
dy = p1->y - p0->y;
|
||||||
nvg__normalize(&dx, &dy);
|
nvg__normalize(&dx, &dy);
|
||||||
if (lineCap == NVG_BUTT)
|
if (lineCap == NVG_BUTT)
|
||||||
dst = nvg__buttCapEnd(dst, p1, dx, dy, w, -aa*0.5f, aa);
|
dst = nvg__buttCapEnd(dst, p1, dx, dy, w, -aa*0.5f, aa, u0, u1);
|
||||||
else if (lineCap == NVG_BUTT || lineCap == NVG_SQUARE)
|
else if (lineCap == NVG_BUTT || lineCap == NVG_SQUARE)
|
||||||
dst = nvg__buttCapEnd(dst, p1, dx, dy, w, w-aa, aa);
|
dst = nvg__buttCapEnd(dst, p1, dx, dy, w, w-aa, aa, u0, u1);
|
||||||
else if (lineCap == NVG_ROUND)
|
else if (lineCap == NVG_ROUND)
|
||||||
dst = nvg__roundCapEnd(dst, p1, dx, dy, w, ncap, aa);
|
dst = nvg__roundCapEnd(dst, p1, dx, dy, w, ncap, aa, u0, u1);
|
||||||
}
|
}
|
||||||
|
|
||||||
path->nstroke = (int)(dst - verts);
|
path->nstroke = (int)(dst - verts);
|
||||||
@ -2221,6 +2235,7 @@ void nvgStroke(NVGcontext* ctx)
|
|||||||
const NVGpath* path;
|
const NVGpath* path;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
|
||||||
if (strokeWidth < ctx->fringeWidth) {
|
if (strokeWidth < ctx->fringeWidth) {
|
||||||
// If the stroke width is less than pixel size, use alpha to emulate coverage.
|
// If the stroke width is less than pixel size, use alpha to emulate coverage.
|
||||||
// Since coverage is area, scale by alpha*alpha.
|
// Since coverage is area, scale by alpha*alpha.
|
||||||
@ -2237,9 +2252,9 @@ void nvgStroke(NVGcontext* ctx)
|
|||||||
nvg__flattenPaths(ctx);
|
nvg__flattenPaths(ctx);
|
||||||
|
|
||||||
if (ctx->params.edgeAntiAlias && state->shapeAntiAlias)
|
if (ctx->params.edgeAntiAlias && state->shapeAntiAlias)
|
||||||
nvg__expandStroke(ctx, strokeWidth*0.5f + ctx->fringeWidth*0.5f, state->lineCap, state->lineJoin, state->miterLimit);
|
nvg__expandStroke(ctx, strokeWidth*0.5f, ctx->fringeWidth, state->lineCap, state->lineJoin, state->miterLimit);
|
||||||
else
|
else
|
||||||
nvg__expandStroke(ctx, strokeWidth*0.5f, state->lineCap, state->lineJoin, state->miterLimit);
|
nvg__expandStroke(ctx, strokeWidth*0.5f, 0.0f, state->lineCap, state->lineJoin, state->miterLimit);
|
||||||
|
|
||||||
ctx->params.renderStroke(ctx->params.userPtr, &strokePaint, state->compositeOperation, &state->scissor, ctx->fringeWidth,
|
ctx->params.renderStroke(ctx->params.userPtr, &strokePaint, state->compositeOperation, &state->scissor, ctx->fringeWidth,
|
||||||
strokeWidth, ctx->cache->paths, ctx->cache->npaths);
|
strokeWidth, ctx->cache->paths, ctx->cache->npaths);
|
||||||
@ -2426,12 +2441,12 @@ float nvgText(NVGcontext* ctx, float x, float y, const char* string, const char*
|
|||||||
while (fonsTextIterNext(ctx->fs, &iter, &q)) {
|
while (fonsTextIterNext(ctx->fs, &iter, &q)) {
|
||||||
float c[4*2];
|
float c[4*2];
|
||||||
if (iter.prevGlyphIndex == -1) { // can not retrieve glyph?
|
if (iter.prevGlyphIndex == -1) { // can not retrieve glyph?
|
||||||
if (!nvg__allocTextAtlas(ctx))
|
|
||||||
break; // no memory :(
|
|
||||||
if (nverts != 0) {
|
if (nverts != 0) {
|
||||||
nvg__renderText(ctx, verts, nverts);
|
nvg__renderText(ctx, verts, nverts);
|
||||||
nverts = 0;
|
nverts = 0;
|
||||||
}
|
}
|
||||||
|
if (!nvg__allocTextAtlas(ctx))
|
||||||
|
break; // no memory :(
|
||||||
iter = prevIter;
|
iter = prevIter;
|
||||||
fonsTextIterNext(ctx->fs, &iter, &q); // try again
|
fonsTextIterNext(ctx->fs, &iter, &q); // try again
|
||||||
if (iter.prevGlyphIndex == -1) // still can not find glyph?
|
if (iter.prevGlyphIndex == -1) // still can not find glyph?
|
||||||
|
@ -154,7 +154,7 @@ enum NVGimageFlags {
|
|||||||
// For example, GLFW returns two dimension for an opened window: window size and
|
// For example, GLFW returns two dimension for an opened window: window size and
|
||||||
// frame buffer size. In that case you would set windowWidth/Height to the window size
|
// frame buffer size. In that case you would set windowWidth/Height to the window size
|
||||||
// devicePixelRatio to: frameBufferWidth / windowWidth.
|
// devicePixelRatio to: frameBufferWidth / windowWidth.
|
||||||
void nvgBeginFrame(NVGcontext* ctx, int windowWidth, int windowHeight, float devicePixelRatio);
|
void nvgBeginFrame(NVGcontext* ctx, float windowWidth, float windowHeight, float devicePixelRatio);
|
||||||
|
|
||||||
// Cancels drawing the current frame.
|
// Cancels drawing the current frame.
|
||||||
void nvgCancelFrame(NVGcontext* ctx);
|
void nvgCancelFrame(NVGcontext* ctx);
|
||||||
@ -271,7 +271,7 @@ void nvgLineCap(NVGcontext* ctx, int cap);
|
|||||||
void nvgLineJoin(NVGcontext* ctx, int join);
|
void nvgLineJoin(NVGcontext* ctx, int join);
|
||||||
|
|
||||||
// Sets the transparency applied to all rendered shapes.
|
// Sets the transparency applied to all rendered shapes.
|
||||||
// Alreade transparent paths will get proportionally more transparent as well.
|
// Already transparent paths will get proportionally more transparent as well.
|
||||||
void nvgGlobalAlpha(NVGcontext* ctx, float alpha);
|
void nvgGlobalAlpha(NVGcontext* ctx, float alpha);
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -395,7 +395,7 @@ NVGpaint nvgLinearGradient(NVGcontext* ctx, float sx, float sy, float ex, float
|
|||||||
NVGcolor icol, NVGcolor ocol);
|
NVGcolor icol, NVGcolor ocol);
|
||||||
|
|
||||||
// Creates and returns a box gradient. Box gradient is a feathered rounded rectangle, it is useful for rendering
|
// Creates and returns a box gradient. Box gradient is a feathered rounded rectangle, it is useful for rendering
|
||||||
// drop shadows or hilights for boxes. Parameters (x,y) define the top-left corner of the rectangle,
|
// drop shadows or highlights for boxes. Parameters (x,y) define the top-left corner of the rectangle,
|
||||||
// (w,h) define the size of the rectangle, r defines the corner radius, and f feather. Feather defines how blurry
|
// (w,h) define the size of the rectangle, r defines the corner radius, and f feather. Feather defines how blurry
|
||||||
// the border of the rectangle is. Parameter icol specifies the inner color and ocol the outer color of the gradient.
|
// the border of the rectangle is. Parameter icol specifies the inner color and ocol the outer color of the gradient.
|
||||||
// The gradient is transformed by the current transform when it is passed to nvgFillPaint() or nvgStrokePaint().
|
// The gradient is transformed by the current transform when it is passed to nvgFillPaint() or nvgStrokePaint().
|
||||||
@ -647,7 +647,7 @@ struct NVGparams {
|
|||||||
int (*renderDeleteTexture)(void* uptr, int image);
|
int (*renderDeleteTexture)(void* uptr, int image);
|
||||||
int (*renderUpdateTexture)(void* uptr, int image, int x, int y, int w, int h, const unsigned char* data);
|
int (*renderUpdateTexture)(void* uptr, int image, int x, int y, int w, int h, const unsigned char* data);
|
||||||
int (*renderGetTextureSize)(void* uptr, int image, int* w, int* h);
|
int (*renderGetTextureSize)(void* uptr, int image, int* w, int* h);
|
||||||
void (*renderViewport)(void* uptr, int width, int height, float devicePixelRatio);
|
void (*renderViewport)(void* uptr, float width, float height, float devicePixelRatio);
|
||||||
void (*renderCancel)(void* uptr);
|
void (*renderCancel)(void* uptr);
|
||||||
void (*renderFlush)(void* uptr);
|
void (*renderFlush)(void* uptr);
|
||||||
void (*renderFill)(void* uptr, NVGpaint* paint, NVGcompositeOperationState compositeOperation, NVGscissor* scissor, float fringe, const float* bounds, const NVGpath* paths, int npaths);
|
void (*renderFill)(void* uptr, NVGpaint* paint, NVGcompositeOperationState compositeOperation, NVGscissor* scissor, float fringe, const float* bounds, const NVGpath* paths, int npaths);
|
||||||
|
@ -554,11 +554,11 @@ namespace
|
|||||||
gl->th = handle;
|
gl->th = handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nvgRenderViewport(void* _userPtr, int width, int height, float devicePixelRatio)
|
static void nvgRenderViewport(void* _userPtr, float width, float height, float devicePixelRatio)
|
||||||
{
|
{
|
||||||
struct GLNVGcontext* gl = (struct GLNVGcontext*)_userPtr;
|
struct GLNVGcontext* gl = (struct GLNVGcontext*)_userPtr;
|
||||||
gl->view[0] = (float)width;
|
gl->view[0] = width;
|
||||||
gl->view[1] = (float)height;
|
gl->view[1] = height;
|
||||||
bgfx::setViewRect(gl->viewId, 0, 0, width * devicePixelRatio, height * devicePixelRatio);
|
bgfx::setViewRect(gl->viewId, 0, 0, width * devicePixelRatio, height * devicePixelRatio);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BIN
examples/runtime/font/NotoEmoji-Regular.ttf
Normal file
BIN
examples/runtime/font/NotoEmoji-Regular.ttf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -121,17 +121,20 @@ BIN += $(CS_BIN)
|
|||||||
ASM += $(CS_ASM)
|
ASM += $(CS_ASM)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(BUILD_INTERMEDIATE_DIR)/vs_%.bin : $(SHADERS_DIR)vs_%.sc
|
$(BUILD_INTERMEDIATE_DIR):
|
||||||
|
mkdir -p $@
|
||||||
|
|
||||||
|
$(BUILD_INTERMEDIATE_DIR)/vs_%.bin : $(SHADERS_DIR)vs_%.sc | $(BUILD_INTERMEDIATE_DIR)
|
||||||
@echo [$(<)]
|
@echo [$(<)]
|
||||||
$(SILENT) $(SHADERC) $(VS_FLAGS) --type vertex --depends -o $(@) -f $(<) --disasm
|
$(SILENT) $(SHADERC) $(VS_FLAGS) --type vertex --depends -o $(@) -f $(<) --disasm
|
||||||
$(SILENT) cp $(@) $(BUILD_OUTPUT_DIR)/$(@F)
|
$(SILENT) cp $(@) $(BUILD_OUTPUT_DIR)/$(@F)
|
||||||
|
|
||||||
$(BUILD_INTERMEDIATE_DIR)/fs_%.bin : $(SHADERS_DIR)fs_%.sc
|
$(BUILD_INTERMEDIATE_DIR)/fs_%.bin : $(SHADERS_DIR)fs_%.sc | $(BUILD_INTERMEDIATE_DIR)
|
||||||
@echo [$(<)]
|
@echo [$(<)]
|
||||||
$(SILENT) $(SHADERC) $(FS_FLAGS) --type fragment --depends -o $(@) -f $(<) --disasm
|
$(SILENT) $(SHADERC) $(FS_FLAGS) --type fragment --depends -o $(@) -f $(<) --disasm
|
||||||
$(SILENT) cp $(@) $(BUILD_OUTPUT_DIR)/$(@F)
|
$(SILENT) cp $(@) $(BUILD_OUTPUT_DIR)/$(@F)
|
||||||
|
|
||||||
$(BUILD_INTERMEDIATE_DIR)/cs_%.bin : $(SHADERS_DIR)cs_%.sc
|
$(BUILD_INTERMEDIATE_DIR)/cs_%.bin : $(SHADERS_DIR)cs_%.sc | $(BUILD_INTERMEDIATE_DIR)
|
||||||
@echo [$(<)]
|
@echo [$(<)]
|
||||||
$(SILENT) $(SHADERC) $(CS_FLAGS) --type compute --depends -o $(@) -f $(<) --disasm
|
$(SILENT) $(SHADERC) $(CS_FLAGS) --type compute --depends -o $(@) -f $(<) --disasm
|
||||||
$(SILENT) cp $(@) $(BUILD_OUTPUT_DIR)/$(@F)
|
$(SILENT) cp $(@) $(BUILD_OUTPUT_DIR)/$(@F)
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
# include <Cocoa/Cocoa.h>
|
# include <Cocoa/Cocoa.h>
|
||||||
# include <bx/os.h>
|
# include <bx/os.h>
|
||||||
|
|
||||||
|
BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG("-Wdeprecated-declarations")
|
||||||
|
|
||||||
namespace bgfx { namespace gl
|
namespace bgfx { namespace gl
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -683,7 +683,7 @@ namespace bgfx { namespace mtl
|
|||||||
typename HashMap::iterator it = m_hashMap.find(_id);
|
typename HashMap::iterator it = m_hashMap.find(_id);
|
||||||
if (it != m_hashMap.end() )
|
if (it != m_hashMap.end() )
|
||||||
{
|
{
|
||||||
MTL_RELEASE(it->second);
|
release(it->second);
|
||||||
m_hashMap.erase(it);
|
m_hashMap.erase(it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -790,15 +790,6 @@ namespace bgfx { namespace mtl
|
|||||||
ProgramMtl()
|
ProgramMtl()
|
||||||
: m_vsh(NULL)
|
: m_vsh(NULL)
|
||||||
, m_fsh(NULL)
|
, m_fsh(NULL)
|
||||||
, m_vshConstantBuffer(NULL)
|
|
||||||
, m_fshConstantBuffer(NULL)
|
|
||||||
, m_vshConstantBufferSize(0)
|
|
||||||
, m_vshConstantBufferAlignmentMask(0)
|
|
||||||
, m_fshConstantBufferSize(0)
|
|
||||||
, m_fshConstantBufferAlignmentMask(0)
|
|
||||||
, m_samplerCount(0)
|
|
||||||
, m_numPredefined(0)
|
|
||||||
, m_processedUniforms(false)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -811,6 +802,37 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
const ShaderMtl* m_vsh;
|
const ShaderMtl* m_vsh;
|
||||||
const ShaderMtl* m_fsh;
|
const ShaderMtl* m_fsh;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PipelineStateMtl
|
||||||
|
{
|
||||||
|
PipelineStateMtl()
|
||||||
|
: m_vshConstantBuffer(NULL)
|
||||||
|
, m_fshConstantBuffer(NULL)
|
||||||
|
, m_vshConstantBufferSize(0)
|
||||||
|
, m_vshConstantBufferAlignmentMask(0)
|
||||||
|
, m_fshConstantBufferSize(0)
|
||||||
|
, m_fshConstantBufferAlignmentMask(0)
|
||||||
|
, m_samplerCount(0)
|
||||||
|
, m_numPredefined(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
~PipelineStateMtl()
|
||||||
|
{
|
||||||
|
if (NULL != m_vshConstantBuffer)
|
||||||
|
{
|
||||||
|
UniformBuffer::destroy(m_vshConstantBuffer);
|
||||||
|
m_vshConstantBuffer = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NULL != m_fshConstantBuffer)
|
||||||
|
{
|
||||||
|
UniformBuffer::destroy(m_fshConstantBuffer);
|
||||||
|
m_fshConstantBuffer = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UniformBuffer* m_vshConstantBuffer;
|
UniformBuffer* m_vshConstantBuffer;
|
||||||
UniformBuffer* m_fshConstantBuffer;
|
UniformBuffer* m_fshConstantBuffer;
|
||||||
|
|
||||||
@ -824,9 +846,15 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
PredefinedUniform m_predefined[PredefinedUniform::Count*2];
|
PredefinedUniform m_predefined[PredefinedUniform::Count*2];
|
||||||
uint8_t m_numPredefined;
|
uint8_t m_numPredefined;
|
||||||
bool m_processedUniforms;
|
|
||||||
|
RenderPipelineState m_rps;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void release(PipelineStateMtl* _ptr)
|
||||||
|
{
|
||||||
|
BX_DELETE(g_allocator, _ptr);
|
||||||
|
}
|
||||||
|
|
||||||
struct TextureMtl
|
struct TextureMtl
|
||||||
{
|
{
|
||||||
enum Enum
|
enum Enum
|
||||||
@ -920,7 +948,9 @@ namespace bgfx { namespace mtl
|
|||||||
struct FrameBufferMtl
|
struct FrameBufferMtl
|
||||||
{
|
{
|
||||||
FrameBufferMtl()
|
FrameBufferMtl()
|
||||||
: m_denseIdx(UINT16_MAX)
|
: m_swapChain(NULL)
|
||||||
|
, m_nwh(NULL)
|
||||||
|
, m_denseIdx(UINT16_MAX)
|
||||||
, m_pixelFormatHash(0)
|
, m_pixelFormatHash(0)
|
||||||
, m_num(0)
|
, m_num(0)
|
||||||
{
|
{
|
||||||
@ -940,6 +970,7 @@ namespace bgfx { namespace mtl
|
|||||||
uint16_t destroy();
|
uint16_t destroy();
|
||||||
|
|
||||||
SwapChainMtl* m_swapChain;
|
SwapChainMtl* m_swapChain;
|
||||||
|
void* m_nwh;
|
||||||
uint32_t m_width;
|
uint32_t m_width;
|
||||||
uint32_t m_height;
|
uint32_t m_height;
|
||||||
uint16_t m_denseIdx;
|
uint16_t m_denseIdx;
|
||||||
|
@ -304,7 +304,7 @@ namespace bgfx { namespace mtl
|
|||||||
};
|
};
|
||||||
BX_STATIC_ASSERT(TextureFormat::Count == BX_COUNTOF(s_textureFormat) );
|
BX_STATIC_ASSERT(TextureFormat::Count == BX_COUNTOF(s_textureFormat) );
|
||||||
|
|
||||||
int s_msaa[] =
|
int32_t s_msaa[] =
|
||||||
{
|
{
|
||||||
1,
|
1,
|
||||||
2,
|
2,
|
||||||
@ -387,9 +387,18 @@ namespace bgfx { namespace mtl
|
|||||||
}
|
}
|
||||||
|
|
||||||
retain(m_device);
|
retain(m_device);
|
||||||
createFrameBuffer(m_fbh, g_platformData.nwh, 0, 0, TextureFormat::Unknown, TextureFormat::UnknownDepth);
|
|
||||||
|
|
||||||
if ( NULL == m_mainFrameBuffer.m_swapChain->m_metalLayer )
|
m_mainFrameBuffer.create(
|
||||||
|
0
|
||||||
|
, g_platformData.nwh
|
||||||
|
, _init.resolution.width
|
||||||
|
, _init.resolution.height
|
||||||
|
, TextureFormat::Unknown
|
||||||
|
, TextureFormat::UnknownDepth
|
||||||
|
);
|
||||||
|
m_numWindows = 1;
|
||||||
|
|
||||||
|
if (NULL == m_mainFrameBuffer.m_swapChain->m_metalLayer)
|
||||||
{
|
{
|
||||||
release(m_device);
|
release(m_device);
|
||||||
return false;
|
return false;
|
||||||
@ -600,11 +609,17 @@ namespace bgfx { namespace mtl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint32_t ii = 1; ii < 5; ++ii)
|
for (uint32_t ii = 1, last = 0; ii < BX_COUNTOF(s_msaa); ++ii)
|
||||||
{
|
{
|
||||||
if (!m_device.supportsTextureSampleCount(s_msaa[ii]) )
|
const int32_t sampleCount = 1; //1<<ii;
|
||||||
|
if (m_device.supportsTextureSampleCount(sampleCount) )
|
||||||
{
|
{
|
||||||
s_msaa[ii] = s_msaa[ii-1];
|
s_msaa[ii] = sampleCount;
|
||||||
|
last = ii;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s_msaa[ii] = s_msaa[last];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -630,6 +645,7 @@ namespace bgfx { namespace mtl
|
|||||||
#if BX_PLATFORM_OSX
|
#if BX_PLATFORM_OSX
|
||||||
[m_pool release];
|
[m_pool release];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
m_occlusionQuery.postReset();
|
m_occlusionQuery.postReset();
|
||||||
m_gpuTimer.shutdown();
|
m_gpuTimer.shutdown();
|
||||||
|
|
||||||
@ -661,11 +677,7 @@ namespace bgfx { namespace mtl
|
|||||||
MTL_RELEASE(m_textureDescriptor);
|
MTL_RELEASE(m_textureDescriptor);
|
||||||
MTL_RELEASE(m_samplerDescriptor);
|
MTL_RELEASE(m_samplerDescriptor);
|
||||||
|
|
||||||
MTL_RELEASE(m_mainFrameBuffer.m_swapChain->m_backBufferDepth);
|
m_mainFrameBuffer.destroy();
|
||||||
if (BX_ENABLED(BX_PLATFORM_IOS) )
|
|
||||||
{
|
|
||||||
MTL_RELEASE(m_mainFrameBuffer.m_swapChain->m_backBufferStencil);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (uint8_t i=0; i < MTL_MAX_FRAMES_IN_FLIGHT; ++i)
|
for (uint8_t i=0; i < MTL_MAX_FRAMES_IN_FLIGHT; ++i)
|
||||||
{
|
{
|
||||||
@ -872,29 +884,37 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
void createFrameBuffer(FrameBufferHandle _handle, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _format, TextureFormat::Enum _depthFormat) override
|
void createFrameBuffer(FrameBufferHandle _handle, void* _nwh, uint32_t _width, uint32_t _height, TextureFormat::Enum _format, TextureFormat::Enum _depthFormat) override
|
||||||
{
|
{
|
||||||
|
for (uint32_t ii = 0, num = m_numWindows; ii < num; ++ii)
|
||||||
|
{
|
||||||
|
FrameBufferHandle handle = m_windows[ii];
|
||||||
|
if (isValid(handle)
|
||||||
|
&& m_frameBuffers[handle.idx].m_nwh == _nwh)
|
||||||
|
{
|
||||||
|
destroyFrameBuffer(handle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uint16_t denseIdx = m_numWindows++;
|
uint16_t denseIdx = m_numWindows++;
|
||||||
m_windows[denseIdx] = _handle;
|
m_windows[denseIdx] = _handle;
|
||||||
if (!isValid(_handle))
|
|
||||||
{
|
FrameBufferMtl& fb = m_frameBuffers[_handle.idx];
|
||||||
m_mainFrameBuffer.create(denseIdx, _nwh, _width, _height, _format, _depthFormat);
|
fb.create(denseIdx, _nwh, _width, _height, _format, _depthFormat);
|
||||||
}
|
fb.m_swapChain->resize(m_frameBuffers[_handle.idx], _width, _height, 0);
|
||||||
else
|
|
||||||
{
|
|
||||||
m_frameBuffers[_handle.idx].create(denseIdx, _nwh, _width, _height, _format, _depthFormat);
|
|
||||||
m_frameBuffers[_handle.idx].m_swapChain->resize(m_frameBuffers[_handle.idx], _width, _height, 0);//_resolution.reset);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void destroyFrameBuffer(FrameBufferHandle _handle) override
|
void destroyFrameBuffer(FrameBufferHandle _handle) override
|
||||||
{
|
{
|
||||||
uint16_t denseIdx = m_frameBuffers[_handle.idx].destroy();
|
uint16_t denseIdx = m_frameBuffers[_handle.idx].destroy();
|
||||||
|
|
||||||
if (UINT16_MAX != denseIdx)
|
if (UINT16_MAX != denseIdx)
|
||||||
{
|
{
|
||||||
--m_numWindows;
|
--m_numWindows;
|
||||||
|
|
||||||
if (m_numWindows > 1)
|
if (m_numWindows > 1)
|
||||||
{
|
{
|
||||||
FrameBufferHandle handle = m_windows[m_numWindows];
|
FrameBufferHandle handle = m_windows[m_numWindows];
|
||||||
m_windows[m_numWindows] = {kInvalidHandle};
|
m_windows[m_numWindows] = {kInvalidHandle};
|
||||||
|
|
||||||
if (m_numWindows != denseIdx)
|
if (m_numWindows != denseIdx)
|
||||||
{
|
{
|
||||||
m_windows[denseIdx] = handle;
|
m_windows[denseIdx] = handle;
|
||||||
@ -1067,7 +1087,7 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
setDepthStencilState(state);
|
setDepthStencilState(state);
|
||||||
|
|
||||||
RenderPipelineState pso = getPipelineState(
|
PipelineStateMtl* pso = getPipelineState(
|
||||||
state
|
state
|
||||||
, 0
|
, 0
|
||||||
, fbh
|
, fbh
|
||||||
@ -1075,29 +1095,29 @@ namespace bgfx { namespace mtl
|
|||||||
, _blitter.m_program
|
, _blitter.m_program
|
||||||
, 0
|
, 0
|
||||||
);
|
);
|
||||||
rce.setRenderPipelineState(pso);
|
rce.setRenderPipelineState(pso->m_rps);
|
||||||
|
|
||||||
ProgramMtl& program = m_program[_blitter.m_program.idx];
|
const uint32_t vertexUniformBufferSize = pso->m_vshConstantBufferSize;
|
||||||
uint32_t vertexUniformBufferSize = program.m_vshConstantBufferSize;
|
const uint32_t fragmentUniformBufferSize = pso->m_fshConstantBufferSize;
|
||||||
uint32_t fragmentUniformBufferSize = program.m_fshConstantBufferSize;
|
|
||||||
|
|
||||||
if (vertexUniformBufferSize )
|
if (vertexUniformBufferSize)
|
||||||
{
|
{
|
||||||
m_uniformBufferVertexOffset = BX_ALIGN_MASK(m_uniformBufferVertexOffset, program.m_vshConstantBufferAlignmentMask);
|
m_uniformBufferVertexOffset = BX_ALIGN_MASK(m_uniformBufferVertexOffset, pso->m_vshConstantBufferAlignmentMask);
|
||||||
rce.setVertexBuffer(m_uniformBuffer, m_uniformBufferVertexOffset, 0);
|
rce.setVertexBuffer(m_uniformBuffer, m_uniformBufferVertexOffset, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_uniformBufferFragmentOffset = m_uniformBufferVertexOffset + vertexUniformBufferSize;
|
m_uniformBufferFragmentOffset = m_uniformBufferVertexOffset + vertexUniformBufferSize;
|
||||||
if (fragmentUniformBufferSize )
|
|
||||||
|
if (0 != fragmentUniformBufferSize)
|
||||||
{
|
{
|
||||||
m_uniformBufferFragmentOffset = BX_ALIGN_MASK(m_uniformBufferFragmentOffset, program.m_fshConstantBufferAlignmentMask);
|
m_uniformBufferFragmentOffset = BX_ALIGN_MASK(m_uniformBufferFragmentOffset, pso->m_fshConstantBufferAlignmentMask);
|
||||||
rce.setFragmentBuffer(m_uniformBuffer, m_uniformBufferFragmentOffset, 0);
|
rce.setFragmentBuffer(m_uniformBuffer, m_uniformBufferFragmentOffset, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
float proj[16];
|
float proj[16];
|
||||||
bx::mtxOrtho(proj, 0.0f, (float)width, (float)height, 0.0f, 0.0f, 1000.0f, 0.0f, false);
|
bx::mtxOrtho(proj, 0.0f, (float)width, (float)height, 0.0f, 0.0f, 1000.0f, 0.0f, false);
|
||||||
|
|
||||||
PredefinedUniform& predefined = program.m_predefined[0];
|
PredefinedUniform& predefined = pso->m_predefined[0];
|
||||||
uint8_t flags = predefined.m_type;
|
uint8_t flags = predefined.m_type;
|
||||||
setShaderUniform(flags, predefined.m_loc, proj, 4);
|
setShaderUniform(flags, predefined.m_loc, proj, 4);
|
||||||
|
|
||||||
@ -1109,13 +1129,30 @@ namespace bgfx { namespace mtl
|
|||||||
const uint32_t numVertices = _numIndices*4/6;
|
const uint32_t numVertices = _numIndices*4/6;
|
||||||
if (0 < numVertices)
|
if (0 < numVertices)
|
||||||
{
|
{
|
||||||
m_indexBuffers [_blitter.m_ib->handle.idx].update(0, _numIndices*2, _blitter.m_ib->data, true);
|
m_indexBuffers [_blitter.m_ib->handle.idx].update(
|
||||||
m_vertexBuffers[_blitter.m_vb->handle.idx].update(0, numVertices*_blitter.m_decl.m_stride, _blitter.m_vb->data, true);
|
0
|
||||||
|
, _numIndices*2
|
||||||
|
, _blitter.m_ib->data
|
||||||
|
, true
|
||||||
|
);
|
||||||
|
m_vertexBuffers[_blitter.m_vb->handle.idx].update(
|
||||||
|
0
|
||||||
|
, numVertices*_blitter.m_decl.m_stride
|
||||||
|
, _blitter.m_vb->data
|
||||||
|
, true
|
||||||
|
);
|
||||||
|
|
||||||
VertexBufferMtl& vb = m_vertexBuffers[_blitter.m_vb->handle.idx];
|
VertexBufferMtl& vb = m_vertexBuffers[_blitter.m_vb->handle.idx];
|
||||||
m_renderCommandEncoder.setVertexBuffer(vb.getBuffer(), 0, 1);
|
m_renderCommandEncoder.setVertexBuffer(vb.getBuffer(), 0, 1);
|
||||||
|
|
||||||
m_renderCommandEncoder.drawIndexedPrimitives(MTLPrimitiveTypeTriangle, _numIndices, MTLIndexTypeUInt16, m_indexBuffers[_blitter.m_ib->handle.idx].getBuffer(), 0, 1);
|
m_renderCommandEncoder.drawIndexedPrimitives(
|
||||||
|
MTLPrimitiveTypeTriangle
|
||||||
|
, _numIndices
|
||||||
|
, MTLIndexTypeUInt16
|
||||||
|
, m_indexBuffers[_blitter.m_ib->handle.idx].getBuffer()
|
||||||
|
, 0
|
||||||
|
, 1
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1189,6 +1226,7 @@ namespace bgfx { namespace mtl
|
|||||||
{
|
{
|
||||||
MTL_RELEASE(m_screenshotBlitRenderPipelineState)
|
MTL_RELEASE(m_screenshotBlitRenderPipelineState)
|
||||||
reset(m_renderPipelineDescriptor);
|
reset(m_renderPipelineDescriptor);
|
||||||
|
|
||||||
m_renderPipelineDescriptor.colorAttachments[0].pixelFormat = m_mainFrameBuffer.m_swapChain->m_metalLayer.pixelFormat;
|
m_renderPipelineDescriptor.colorAttachments[0].pixelFormat = m_mainFrameBuffer.m_swapChain->m_metalLayer.pixelFormat;
|
||||||
m_renderPipelineDescriptor.vertexFunction = m_screenshotBlitProgram.m_vsh->m_function;
|
m_renderPipelineDescriptor.vertexFunction = m_screenshotBlitProgram.m_vsh->m_function;
|
||||||
m_renderPipelineDescriptor.fragmentFunction = m_screenshotBlitProgram.m_fsh->m_function;
|
m_renderPipelineDescriptor.fragmentFunction = m_screenshotBlitProgram.m_fsh->m_function;
|
||||||
@ -1427,14 +1465,13 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
uint32_t numMrt = 1;
|
uint32_t numMrt = 1;
|
||||||
FrameBufferHandle fbh = m_fbh;
|
FrameBufferHandle fbh = m_fbh;
|
||||||
if (isValid(fbh) )
|
if (isValid(fbh) && m_frameBuffers[fbh.idx].m_swapChain == NULL)
|
||||||
{
|
{
|
||||||
const FrameBufferMtl& fb = m_frameBuffers[fbh.idx];
|
const FrameBufferMtl& fb = m_frameBuffers[fbh.idx];
|
||||||
numMrt = bx::uint32_max(1, fb.m_num);
|
numMrt = bx::uint32_max(1, fb.m_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
const ProgramMtl& program = m_program[_clearQuad.m_program[numMrt-1].idx];
|
const PipelineStateMtl* pso = getPipelineState(
|
||||||
RenderPipelineState pso = getPipelineState(
|
|
||||||
state
|
state
|
||||||
, 0
|
, 0
|
||||||
, fbh
|
, fbh
|
||||||
@ -1442,14 +1479,14 @@ namespace bgfx { namespace mtl
|
|||||||
, _clearQuad.m_program[numMrt-1]
|
, _clearQuad.m_program[numMrt-1]
|
||||||
, 0
|
, 0
|
||||||
);
|
);
|
||||||
m_renderCommandEncoder.setRenderPipelineState(pso);
|
m_renderCommandEncoder.setRenderPipelineState(pso->m_rps);
|
||||||
|
|
||||||
uint32_t fragmentUniformBufferSize = program.m_fshConstantBufferSize;
|
uint32_t fragmentUniformBufferSize = pso->m_fshConstantBufferSize;
|
||||||
|
|
||||||
m_uniformBufferFragmentOffset = m_uniformBufferVertexOffset;
|
m_uniformBufferFragmentOffset = m_uniformBufferVertexOffset;
|
||||||
if (fragmentUniformBufferSize)
|
if (fragmentUniformBufferSize)
|
||||||
{
|
{
|
||||||
m_uniformBufferFragmentOffset = BX_ALIGN_MASK(m_uniformBufferFragmentOffset, program.m_fshConstantBufferAlignmentMask);
|
m_uniformBufferFragmentOffset = BX_ALIGN_MASK(m_uniformBufferFragmentOffset, pso->m_fshConstantBufferAlignmentMask);
|
||||||
m_renderCommandEncoder.setFragmentBuffer(m_uniformBuffer, m_uniformBufferFragmentOffset, 0);
|
m_renderCommandEncoder.setFragmentBuffer(m_uniformBuffer, m_uniformBufferFragmentOffset, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1534,13 +1571,15 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
void setFrameBuffer(RenderPassDescriptor renderPassDescriptor, FrameBufferHandle _fbh, bool _msaa = true)
|
void setFrameBuffer(RenderPassDescriptor renderPassDescriptor, FrameBufferHandle _fbh, bool _msaa = true)
|
||||||
{
|
{
|
||||||
if (!isValid(_fbh) || m_frameBuffers[_fbh.idx].m_swapChain)
|
if (!isValid(_fbh)
|
||||||
|
|| m_frameBuffers[_fbh.idx].m_swapChain)
|
||||||
{
|
{
|
||||||
SwapChainMtl* swapChain =
|
SwapChainMtl* swapChain = !isValid(_fbh)
|
||||||
!isValid(_fbh) ?
|
? m_mainFrameBuffer.m_swapChain
|
||||||
m_mainFrameBuffer.m_swapChain :
|
: m_frameBuffers[_fbh.idx].m_swapChain
|
||||||
m_frameBuffers[_fbh.idx].m_swapChain;
|
;
|
||||||
if (NULL != m_backBufferColorMsaa)
|
|
||||||
|
if (NULL != swapChain->m_backBufferColorMsaa)
|
||||||
{
|
{
|
||||||
renderPassDescriptor.colorAttachments[0].texture = swapChain->m_backBufferColorMsaa;
|
renderPassDescriptor.colorAttachments[0].texture = swapChain->m_backBufferColorMsaa;
|
||||||
renderPassDescriptor.colorAttachments[0].resolveTexture = NULL != m_screenshotTarget
|
renderPassDescriptor.colorAttachments[0].resolveTexture = NULL != m_screenshotTarget
|
||||||
@ -1674,7 +1713,7 @@ namespace bgfx { namespace mtl
|
|||||||
m_renderCommandEncoder.setStencilReferenceValue(ref);
|
m_renderCommandEncoder.setStencilReferenceValue(ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderPipelineState getPipelineState(
|
PipelineStateMtl* getPipelineState(
|
||||||
uint64_t _state
|
uint64_t _state
|
||||||
, uint32_t _rgba
|
, uint32_t _rgba
|
||||||
, FrameBufferHandle _fbh
|
, FrameBufferHandle _fbh
|
||||||
@ -1695,7 +1734,7 @@ namespace bgfx { namespace mtl
|
|||||||
);
|
);
|
||||||
|
|
||||||
const bool independentBlendEnable = !!(BGFX_STATE_BLEND_INDEPENDENT & _state);
|
const bool independentBlendEnable = !!(BGFX_STATE_BLEND_INDEPENDENT & _state);
|
||||||
ProgramMtl& program = m_program[_program.idx];
|
const ProgramMtl& program = m_program[_program.idx];
|
||||||
|
|
||||||
bx::HashMurmur2A murmur;
|
bx::HashMurmur2A murmur;
|
||||||
murmur.begin();
|
murmur.begin();
|
||||||
@ -1705,7 +1744,7 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
if (!isValid(_fbh) )
|
if (!isValid(_fbh) )
|
||||||
{
|
{
|
||||||
murmur.add(m_backBufferPixelFormatHash);
|
murmur.add(m_mainFrameBuffer.m_pixelFormatHash);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1726,10 +1765,12 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
uint32_t hash = murmur.end();
|
uint32_t hash = murmur.end();
|
||||||
|
|
||||||
RenderPipelineState pso = m_pipelineStateCache.find(hash);
|
PipelineStateMtl* pso = m_pipelineStateCache.find(hash);
|
||||||
|
|
||||||
if (NULL == pso)
|
if (NULL == pso)
|
||||||
{
|
{
|
||||||
|
pso = BX_NEW(g_allocator, PipelineStateMtl);
|
||||||
|
|
||||||
RenderPipelineDescriptor pd = m_renderPipelineDescriptor;
|
RenderPipelineDescriptor pd = m_renderPipelineDescriptor;
|
||||||
reset(pd);
|
reset(pd);
|
||||||
|
|
||||||
@ -1912,23 +1953,17 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
pd.vertexDescriptor = vertexDesc;
|
pd.vertexDescriptor = vertexDesc;
|
||||||
|
|
||||||
if (program.m_processedUniforms)
|
|
||||||
{
|
{
|
||||||
pso = m_device.newRenderPipelineStateWithDescriptor(pd);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
program.m_numPredefined = 0;
|
|
||||||
RenderPipelineReflection reflection = NULL;
|
RenderPipelineReflection reflection = NULL;
|
||||||
pso = m_device.newRenderPipelineStateWithDescriptor(pd, MTLPipelineOptionBufferTypeInfo, &reflection);
|
pso->m_rps = m_device.newRenderPipelineStateWithDescriptor(pd, MTLPipelineOptionBufferTypeInfo, &reflection);
|
||||||
|
|
||||||
if (NULL != reflection)
|
if (NULL != reflection)
|
||||||
{
|
{
|
||||||
for (uint32_t shaderType = 0; shaderType < 2; ++shaderType)
|
for (uint32_t shaderType = 0; shaderType < 2; ++shaderType)
|
||||||
{
|
{
|
||||||
UniformBuffer*& constantBuffer = shaderType == 0
|
UniformBuffer*& constantBuffer = shaderType == 0
|
||||||
? program.m_vshConstantBuffer
|
? pso->m_vshConstantBuffer
|
||||||
: program.m_fshConstantBuffer
|
: pso->m_fshConstantBuffer
|
||||||
;
|
;
|
||||||
uint8_t fragmentBit = (1 == shaderType ? BGFX_UNIFORM_FRAGMENTBIT : 0);
|
uint8_t fragmentBit = (1 == shaderType ? BGFX_UNIFORM_FRAGMENTBIT : 0);
|
||||||
|
|
||||||
@ -1940,20 +1975,20 @@ namespace bgfx { namespace mtl
|
|||||||
if (arg.type == MTLArgumentTypeBuffer
|
if (arg.type == MTLArgumentTypeBuffer
|
||||||
&& 0 == bx::strCmp(utf8String(arg.name), SHADER_UNIFORM_NAME) )
|
&& 0 == bx::strCmp(utf8String(arg.name), SHADER_UNIFORM_NAME) )
|
||||||
{
|
{
|
||||||
BX_CHECK( arg.index == 0, "Uniform buffer must be in the buffer slot 0.");
|
BX_CHECK(arg.index == 0, "Uniform buffer must be in the buffer slot 0.");
|
||||||
BX_CHECK( MTLDataTypeStruct == arg.bufferDataType, "%s's type must be a struct",SHADER_UNIFORM_NAME );
|
BX_CHECK(MTLDataTypeStruct == arg.bufferDataType, "%s's type must be a struct", SHADER_UNIFORM_NAME);
|
||||||
|
|
||||||
if (MTLDataTypeStruct == arg.bufferDataType)
|
if (MTLDataTypeStruct == arg.bufferDataType)
|
||||||
{
|
{
|
||||||
if (shaderType == 0)
|
if (shaderType == 0)
|
||||||
{
|
{
|
||||||
program.m_vshConstantBufferSize = (uint32_t)arg.bufferDataSize;
|
pso->m_vshConstantBufferSize = (uint32_t)arg.bufferDataSize;
|
||||||
program.m_vshConstantBufferAlignmentMask = (uint32_t)arg.bufferAlignment - 1;
|
pso->m_vshConstantBufferAlignmentMask = (uint32_t)arg.bufferAlignment - 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
program.m_fshConstantBufferSize = (uint32_t)arg.bufferDataSize;
|
pso->m_fshConstantBufferSize = (uint32_t)arg.bufferDataSize;
|
||||||
program.m_fshConstantBufferAlignmentMask = (uint32_t)arg.bufferAlignment - 1;
|
pso->m_fshConstantBufferAlignmentMask = (uint32_t)arg.bufferAlignment - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (MTLStructMember* uniform in arg.bufferStructType.members )
|
for (MTLStructMember* uniform in arg.bufferStructType.members )
|
||||||
@ -1984,12 +2019,12 @@ namespace bgfx { namespace mtl
|
|||||||
PredefinedUniform::Enum predefined = nameToPredefinedUniformEnum(name);
|
PredefinedUniform::Enum predefined = nameToPredefinedUniformEnum(name);
|
||||||
if (PredefinedUniform::Count != predefined)
|
if (PredefinedUniform::Count != predefined)
|
||||||
{
|
{
|
||||||
PredefinedUniform& pu = program.m_predefined[program.m_numPredefined];
|
PredefinedUniform& pu = pso->m_predefined[pso->m_numPredefined];
|
||||||
|
|
||||||
pu.m_loc = uint32_t(uniform.offset);
|
pu.m_loc = uint32_t(uniform.offset);
|
||||||
pu.m_count = uint16_t(num);
|
pu.m_count = uint16_t(num);
|
||||||
pu.m_type = uint8_t(predefined|fragmentBit);
|
pu.m_type = uint8_t(predefined|fragmentBit);
|
||||||
++program.m_numPredefined;
|
++pso->m_numPredefined;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2019,19 +2054,19 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
if (NULL != info)
|
if (NULL != info)
|
||||||
{
|
{
|
||||||
if (program.m_samplerCount >= BGFX_CONFIG_MAX_TEXTURE_SAMPLERS)
|
if (pso->m_samplerCount >= BGFX_CONFIG_MAX_TEXTURE_SAMPLERS)
|
||||||
{
|
{
|
||||||
BX_WARN(NULL != info, "Too many samplers in shader(only %d is supported). User defined uniform '%s' won't be set.", BGFX_CONFIG_MAX_TEXTURE_SAMPLERS, name);
|
BX_WARN(NULL != info, "Too many samplers in shader(only %d is supported). User defined uniform '%s' won't be set.", BGFX_CONFIG_MAX_TEXTURE_SAMPLERS, name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SamplerInfo& si = program.m_samplers[program.m_samplerCount];
|
SamplerInfo& si = pso->m_samplers[pso->m_samplerCount];
|
||||||
|
|
||||||
si.m_index = uint32_t(arg.index);
|
si.m_index = uint32_t(arg.index);
|
||||||
si.m_uniform = info->m_handle;
|
si.m_uniform = info->m_handle;
|
||||||
si.m_fragment = fragmentBit ? 1 : 0;
|
si.m_fragment = fragmentBit ? 1 : 0;
|
||||||
|
|
||||||
++program.m_samplerCount;
|
++pso->m_samplerCount;
|
||||||
|
|
||||||
BX_TRACE("texture %s %d index:%d", name, info->m_handle, uint32_t(arg.index) );
|
BX_TRACE("texture %s %d index:%d", name, info->m_handle, uint32_t(arg.index) );
|
||||||
}
|
}
|
||||||
@ -2050,8 +2085,6 @@ namespace bgfx { namespace mtl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
program.m_processedUniforms = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_pipelineStateCache.add(hash, pso);
|
m_pipelineStateCache.add(hash, pso);
|
||||||
@ -2061,7 +2094,7 @@ namespace bgfx { namespace mtl
|
|||||||
return pso;
|
return pso;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderPipelineState getPipelineState(
|
PipelineStateMtl* getPipelineState(
|
||||||
uint64_t _state
|
uint64_t _state
|
||||||
, uint32_t _rgba
|
, uint32_t _rgba
|
||||||
, FrameBufferHandle _fbh
|
, FrameBufferHandle _fbh
|
||||||
@ -2089,7 +2122,6 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
if (NULL == sampler)
|
if (NULL == sampler)
|
||||||
{
|
{
|
||||||
|
|
||||||
m_samplerDescriptor.sAddressMode = s_textureAddress[(_flags&BGFX_SAMPLER_U_MASK)>>BGFX_SAMPLER_U_SHIFT];
|
m_samplerDescriptor.sAddressMode = s_textureAddress[(_flags&BGFX_SAMPLER_U_MASK)>>BGFX_SAMPLER_U_SHIFT];
|
||||||
m_samplerDescriptor.tAddressMode = s_textureAddress[(_flags&BGFX_SAMPLER_V_MASK)>>BGFX_SAMPLER_V_SHIFT];
|
m_samplerDescriptor.tAddressMode = s_textureAddress[(_flags&BGFX_SAMPLER_V_MASK)>>BGFX_SAMPLER_V_SHIFT];
|
||||||
m_samplerDescriptor.rAddressMode = s_textureAddress[(_flags&BGFX_SAMPLER_W_MASK)>>BGFX_SAMPLER_W_SHIFT];
|
m_samplerDescriptor.rAddressMode = s_textureAddress[(_flags&BGFX_SAMPLER_W_MASK)>>BGFX_SAMPLER_W_SHIFT];
|
||||||
@ -2126,9 +2158,9 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
BlitCommandEncoder getBlitCommandEncoder()
|
BlitCommandEncoder getBlitCommandEncoder()
|
||||||
{
|
{
|
||||||
if (m_blitCommandEncoder == NULL)
|
if (NULL == m_blitCommandEncoder)
|
||||||
{
|
{
|
||||||
if (m_commandBuffer == NULL)
|
if (NULL == m_commandBuffer)
|
||||||
{
|
{
|
||||||
m_commandBuffer = m_cmd.alloc();
|
m_commandBuffer = m_cmd.alloc();
|
||||||
}
|
}
|
||||||
@ -2144,13 +2176,6 @@ namespace bgfx { namespace mtl
|
|||||||
TimerQueryMtl m_gpuTimer;
|
TimerQueryMtl m_gpuTimer;
|
||||||
CommandQueueMtl m_cmd;
|
CommandQueueMtl m_cmd;
|
||||||
|
|
||||||
CAMetalLayer* m_metalLayer;
|
|
||||||
Texture m_backBufferColorMsaa;
|
|
||||||
Texture m_backBufferDepth;
|
|
||||||
Texture m_backBufferStencil;
|
|
||||||
uint32_t m_backBufferPixelFormatHash;
|
|
||||||
uint32_t m_maxAnisotropy;
|
|
||||||
|
|
||||||
bool m_iOS9Runtime;
|
bool m_iOS9Runtime;
|
||||||
bool m_macOS11Runtime;
|
bool m_macOS11Runtime;
|
||||||
bool m_hasPixelFormatDepth32Float_Stencil8;
|
bool m_hasPixelFormatDepth32Float_Stencil8;
|
||||||
@ -2185,7 +2210,8 @@ namespace bgfx { namespace mtl
|
|||||||
typedef stl::vector<PipelineProgram> PipelineProgramArray;
|
typedef stl::vector<PipelineProgram> PipelineProgramArray;
|
||||||
|
|
||||||
PipelineProgramArray m_pipelineProgram;
|
PipelineProgramArray m_pipelineProgram;
|
||||||
StateCacheT<RenderPipelineState> m_pipelineStateCache;
|
|
||||||
|
StateCacheT<PipelineStateMtl*> m_pipelineStateCache;
|
||||||
StateCacheT<DepthStencilState> m_depthStencilStateCache;
|
StateCacheT<DepthStencilState> m_depthStencilStateCache;
|
||||||
StateCacheT<SamplerState> m_samplerStateCache;
|
StateCacheT<SamplerState> m_samplerStateCache;
|
||||||
|
|
||||||
@ -2381,27 +2407,6 @@ namespace bgfx { namespace mtl
|
|||||||
{
|
{
|
||||||
m_vsh = NULL;
|
m_vsh = NULL;
|
||||||
m_fsh = NULL;
|
m_fsh = NULL;
|
||||||
|
|
||||||
if (NULL != m_vshConstantBuffer)
|
|
||||||
{
|
|
||||||
UniformBuffer::destroy(m_vshConstantBuffer);
|
|
||||||
m_vshConstantBuffer = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (NULL != m_fshConstantBuffer)
|
|
||||||
{
|
|
||||||
UniformBuffer::destroy(m_fshConstantBuffer);
|
|
||||||
m_fshConstantBuffer = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_vshConstantBufferSize = 0;
|
|
||||||
m_vshConstantBufferAlignmentMask = 0;
|
|
||||||
m_fshConstantBufferSize = 0;
|
|
||||||
m_fshConstantBufferAlignmentMask = 0;
|
|
||||||
|
|
||||||
m_samplerCount = 0;
|
|
||||||
m_processedUniforms = false;
|
|
||||||
m_numPredefined = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferMtl::create(uint32_t _size, void* _data, uint16_t _flags, uint16_t _stride, bool _vertex)
|
void BufferMtl::create(uint32_t _size, void* _data, uint16_t _flags, uint16_t _stride, bool _vertex)
|
||||||
@ -2544,14 +2549,14 @@ namespace bgfx { namespace mtl
|
|||||||
, textureWidth
|
, textureWidth
|
||||||
, textureHeight
|
, textureHeight
|
||||||
, imageContainer.m_cubeMap ? "x6" : ""
|
, imageContainer.m_cubeMap ? "x6" : ""
|
||||||
, renderTarget ? 'x' : '.'
|
, renderTarget ? 'x' : ' '
|
||||||
, writeOnly ? 'x' : '.'
|
, writeOnly ? 'x' : ' '
|
||||||
, computeWrite ? 'x' : '.'
|
, computeWrite ? 'x' : ' '
|
||||||
, srgb ? 'x' : '.'
|
, srgb ? 'x' : ' '
|
||||||
);
|
);
|
||||||
|
|
||||||
const uint32_t msaaQuality = bx::uint32_satsub( (_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT, 1);
|
const uint32_t msaaQuality = bx::uint32_satsub( (_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT, 1);
|
||||||
int sampleCount = s_msaa[msaaQuality];
|
const int32_t sampleCount = s_msaa[msaaQuality];
|
||||||
|
|
||||||
MTLPixelFormat format = MTLPixelFormatInvalid;
|
MTLPixelFormat format = MTLPixelFormatInvalid;
|
||||||
if (srgb)
|
if (srgb)
|
||||||
@ -2715,7 +2720,7 @@ namespace bgfx { namespace mtl
|
|||||||
const uint32_t rectpitch = _rect.m_width*bpp/8;
|
const uint32_t rectpitch = _rect.m_width*bpp/8;
|
||||||
const uint32_t srcpitch = UINT16_MAX == _pitch ? rectpitch : _pitch;
|
const uint32_t srcpitch = UINT16_MAX == _pitch ? rectpitch : _pitch;
|
||||||
const uint32_t slice = ( (m_type == Texture3D) ? 0 : _side + _z * (m_type == TextureCube ? 6 : 1) );
|
const uint32_t slice = ( (m_type == Texture3D) ? 0 : _side + _z * (m_type == TextureCube ? 6 : 1) );
|
||||||
const uint16_t z = (m_type == Texture3D) ? _z : 0 ;
|
const uint16_t zz = (m_type == Texture3D) ? _z : 0 ;
|
||||||
|
|
||||||
const bool convert = m_textureFormat != m_requestedFormat;
|
const bool convert = m_textureFormat != m_requestedFormat;
|
||||||
|
|
||||||
@ -2743,7 +2748,7 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
MTLRegion region =
|
MTLRegion region =
|
||||||
{
|
{
|
||||||
{ _rect.m_x, _rect.m_y, z },
|
{ _rect.m_x, _rect.m_y, zz },
|
||||||
{ _rect.m_width, _rect.m_height, _depth },
|
{ _rect.m_width, _rect.m_height, _depth },
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2774,7 +2779,7 @@ namespace bgfx { namespace mtl
|
|||||||
, m_ptr
|
, m_ptr
|
||||||
, slice
|
, slice
|
||||||
, _mip
|
, _mip
|
||||||
, MTLOriginMake(_rect.m_x, _rect.m_y, z)
|
, MTLOriginMake(_rect.m_x, _rect.m_y, zz)
|
||||||
);
|
);
|
||||||
release(tempBuffer);
|
release(tempBuffer);
|
||||||
}
|
}
|
||||||
@ -2812,11 +2817,18 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
SwapChainMtl::~SwapChainMtl()
|
SwapChainMtl::~SwapChainMtl()
|
||||||
{
|
{
|
||||||
MTL_RELEASE(m_backBufferDepth);
|
if(m_drawable != nil) {
|
||||||
if (BX_ENABLED(BX_PLATFORM_IOS) )
|
release(m_drawable);
|
||||||
{
|
m_drawable = nil;
|
||||||
MTL_RELEASE(m_backBufferStencil);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MTL_RELEASE(m_backBufferDepth);
|
||||||
|
MTL_RELEASE(m_backBufferStencil);
|
||||||
|
if (NULL != m_backBufferColorMsaa)
|
||||||
|
{
|
||||||
|
MTL_RELEASE(m_backBufferColorMsaa);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwapChainMtl::init(void* _nwh)
|
void SwapChainMtl::init(void* _nwh)
|
||||||
@ -2856,11 +2868,19 @@ namespace bgfx { namespace mtl
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
NSWindow* nsWindow = (NSWindow*)_nwh;
|
NSWindow* nsWindow = (NSWindow*)_nwh;
|
||||||
|
CALayer* layer = nsWindow.contentView.layer;
|
||||||
|
if(NULL != layer && [layer isKindOfClass:NSClassFromString(@"CAMetalLayer")])
|
||||||
|
{
|
||||||
|
m_metalLayer = (CAMetalLayer*)layer;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
[nsWindow.contentView setWantsLayer:YES];
|
[nsWindow.contentView setWantsLayer:YES];
|
||||||
m_metalLayer = [CAMetalLayer layer];
|
m_metalLayer = [CAMetalLayer layer];
|
||||||
[nsWindow.contentView setLayer:m_metalLayer];
|
[nsWindow.contentView setLayer:m_metalLayer];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif // BX_PLATFORM_*
|
#endif // BX_PLATFORM_*
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2877,7 +2897,7 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
void SwapChainMtl::resize(FrameBufferMtl &_frameBuffer, uint32_t _width, uint32_t _height, uint32_t _flags)
|
void SwapChainMtl::resize(FrameBufferMtl &_frameBuffer, uint32_t _width, uint32_t _height, uint32_t _flags)
|
||||||
{
|
{
|
||||||
int sampleCount = s_msaa[(_flags&BGFX_RESET_MSAA_MASK)>>BGFX_RESET_MSAA_SHIFT];
|
const int32_t sampleCount = s_msaa[(_flags&BGFX_RESET_MSAA_MASK)>>BGFX_RESET_MSAA_SHIFT];
|
||||||
|
|
||||||
#if BX_PLATFORM_OSX > 101300
|
#if BX_PLATFORM_OSX > 101300
|
||||||
m_metalLayer.displaySyncEnabled = 0 != (_flags&BGFX_RESET_VSYNC);
|
m_metalLayer.displaySyncEnabled = 0 != (_flags&BGFX_RESET_VSYNC);
|
||||||
@ -2940,7 +2960,7 @@ namespace bgfx { namespace mtl
|
|||||||
m_backBufferStencil = s_renderMtl->m_device.newTextureWithDescriptor(desc);
|
m_backBufferStencil = s_renderMtl->m_device.newTextureWithDescriptor(desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( sampleCount > 1 )
|
if (sampleCount > 1)
|
||||||
{
|
{
|
||||||
if (NULL != m_backBufferColorMsaa)
|
if (NULL != m_backBufferColorMsaa)
|
||||||
{
|
{
|
||||||
@ -2954,10 +2974,10 @@ namespace bgfx { namespace mtl
|
|||||||
bx::HashMurmur2A murmur;
|
bx::HashMurmur2A murmur;
|
||||||
murmur.begin();
|
murmur.begin();
|
||||||
murmur.add(1);
|
murmur.add(1);
|
||||||
murmur.add((uint32_t)m_metalLayer.pixelFormat);
|
murmur.add( (uint32_t)m_metalLayer.pixelFormat);
|
||||||
murmur.add((uint32_t)m_backBufferDepth.pixelFormat());
|
murmur.add( (uint32_t)m_backBufferDepth.pixelFormat());
|
||||||
murmur.add((uint32_t)m_backBufferStencil.pixelFormat());
|
murmur.add( (uint32_t)m_backBufferStencil.pixelFormat());
|
||||||
murmur.add((uint32_t)sampleCount);
|
murmur.add( (uint32_t)sampleCount);
|
||||||
_frameBuffer.m_pixelFormatHash = murmur.end();
|
_frameBuffer.m_pixelFormatHash = murmur.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3040,8 +3060,10 @@ namespace bgfx { namespace mtl
|
|||||||
{
|
{
|
||||||
BX_UNUSED(_format, _depthFormat);
|
BX_UNUSED(_format, _depthFormat);
|
||||||
m_swapChain = BX_NEW(g_allocator, SwapChainMtl);
|
m_swapChain = BX_NEW(g_allocator, SwapChainMtl);
|
||||||
|
m_num = 0;
|
||||||
m_width = _width;
|
m_width = _width;
|
||||||
m_height = _height;
|
m_height = _height;
|
||||||
|
m_nwh = _nwh;
|
||||||
m_denseIdx = _denseIdx;
|
m_denseIdx = _denseIdx;
|
||||||
|
|
||||||
m_swapChain->init(_nwh);
|
m_swapChain->init(_nwh);
|
||||||
@ -3060,6 +3082,7 @@ namespace bgfx { namespace mtl
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_num = 0;
|
m_num = 0;
|
||||||
|
m_nwh = NULL;
|
||||||
m_depthHandle.idx = kInvalidHandle;
|
m_depthHandle.idx = kInvalidHandle;
|
||||||
|
|
||||||
uint16_t denseIdx = m_denseIdx;
|
uint16_t denseIdx = m_denseIdx;
|
||||||
@ -3467,6 +3490,7 @@ namespace bgfx { namespace mtl
|
|||||||
PrimInfo prim = s_primInfo[primIndex];
|
PrimInfo prim = s_primInfo[primIndex];
|
||||||
|
|
||||||
RenderCommandEncoder rce;
|
RenderCommandEncoder rce;
|
||||||
|
PipelineStateMtl* currentPso = NULL;
|
||||||
|
|
||||||
bool wasCompute = false;
|
bool wasCompute = false;
|
||||||
bool viewHasScissor = false;
|
bool viewHasScissor = false;
|
||||||
@ -3587,11 +3611,13 @@ namespace bgfx { namespace mtl
|
|||||||
{
|
{
|
||||||
desc.loadAction = MTLLoadActionLoad;
|
desc.loadAction = MTLLoadActionLoad;
|
||||||
}
|
}
|
||||||
|
|
||||||
desc.storeAction = desc.texture.sampleCount > 1 ? MTLStoreActionMultisampleResolve : MTLStoreActionStore;
|
desc.storeAction = desc.texture.sampleCount > 1 ? MTLStoreActionMultisampleResolve : MTLStoreActionStore;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderPassDepthAttachmentDescriptor depthAttachment = renderPassDescriptor.depthAttachment;
|
RenderPassDepthAttachmentDescriptor depthAttachment = renderPassDescriptor.depthAttachment;
|
||||||
|
|
||||||
if (NULL != depthAttachment.texture)
|
if (NULL != depthAttachment.texture)
|
||||||
{
|
{
|
||||||
depthAttachment.clearDepth = clr.m_depth;
|
depthAttachment.clearDepth = clr.m_depth;
|
||||||
@ -3606,6 +3632,7 @@ namespace bgfx { namespace mtl
|
|||||||
}
|
}
|
||||||
|
|
||||||
RenderPassStencilAttachmentDescriptor stencilAttachment = renderPassDescriptor.stencilAttachment;
|
RenderPassStencilAttachmentDescriptor stencilAttachment = renderPassDescriptor.stencilAttachment;
|
||||||
|
|
||||||
if (NULL != stencilAttachment.texture)
|
if (NULL != stencilAttachment.texture)
|
||||||
{
|
{
|
||||||
stencilAttachment.clearStencil = clr.m_stencil;
|
stencilAttachment.clearStencil = clr.m_stencil;
|
||||||
@ -3631,6 +3658,7 @@ namespace bgfx { namespace mtl
|
|||||||
}
|
}
|
||||||
|
|
||||||
RenderPassDepthAttachmentDescriptor depthAttachment = renderPassDescriptor.depthAttachment;
|
RenderPassDepthAttachmentDescriptor depthAttachment = renderPassDescriptor.depthAttachment;
|
||||||
|
|
||||||
if (NULL != depthAttachment.texture)
|
if (NULL != depthAttachment.texture)
|
||||||
{
|
{
|
||||||
depthAttachment.loadAction = MTLLoadActionLoad;
|
depthAttachment.loadAction = MTLLoadActionLoad;
|
||||||
@ -3638,6 +3666,7 @@ namespace bgfx { namespace mtl
|
|||||||
}
|
}
|
||||||
|
|
||||||
RenderPassStencilAttachmentDescriptor stencilAttachment = renderPassDescriptor.stencilAttachment;
|
RenderPassStencilAttachmentDescriptor stencilAttachment = renderPassDescriptor.stencilAttachment;
|
||||||
|
|
||||||
if (NULL != stencilAttachment.texture)
|
if (NULL != stencilAttachment.texture)
|
||||||
{
|
{
|
||||||
stencilAttachment.loadAction = MTLLoadActionLoad;
|
stencilAttachment.loadAction = MTLLoadActionLoad;
|
||||||
@ -3896,11 +3925,11 @@ namespace bgfx { namespace mtl
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RenderPipelineState pso = NULL;
|
currentPso = NULL;
|
||||||
|
|
||||||
if (0 < numStreams)
|
if (0 < numStreams)
|
||||||
{
|
{
|
||||||
pso = getPipelineState(
|
currentPso = getPipelineState(
|
||||||
newFlags
|
newFlags
|
||||||
, draw.m_rgba
|
, draw.m_rgba
|
||||||
, fbh
|
, fbh
|
||||||
@ -3911,13 +3940,13 @@ namespace bgfx { namespace mtl
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NULL == pso)
|
if (NULL == currentPso)
|
||||||
{
|
{
|
||||||
currentProgram = BGFX_INVALID_HANDLE;
|
currentProgram = BGFX_INVALID_HANDLE;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
rce.setRenderPipelineState(pso);
|
rce.setRenderPipelineState(currentPso->m_rps);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isValid(draw.m_instanceDataBuffer) )
|
if (isValid(draw.m_instanceDataBuffer) )
|
||||||
@ -3932,40 +3961,38 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
if (isValid(currentProgram) )
|
if (isValid(currentProgram) )
|
||||||
{
|
{
|
||||||
ProgramMtl& program = m_program[currentProgram.idx];
|
const uint32_t vertexUniformBufferSize = currentPso->m_vshConstantBufferSize;
|
||||||
|
const uint32_t fragmentUniformBufferSize = currentPso->m_fshConstantBufferSize;
|
||||||
uint32_t vertexUniformBufferSize = program.m_vshConstantBufferSize;
|
|
||||||
uint32_t fragmentUniformBufferSize = program.m_fshConstantBufferSize;
|
|
||||||
|
|
||||||
if (0 != vertexUniformBufferSize)
|
if (0 != vertexUniformBufferSize)
|
||||||
{
|
{
|
||||||
m_uniformBufferVertexOffset = BX_ALIGN_MASK(m_uniformBufferVertexOffset, program.m_vshConstantBufferAlignmentMask);
|
m_uniformBufferVertexOffset = BX_ALIGN_MASK(m_uniformBufferVertexOffset, currentPso->m_vshConstantBufferAlignmentMask);
|
||||||
rce.setVertexBuffer(m_uniformBuffer, m_uniformBufferVertexOffset, 0);
|
rce.setVertexBuffer(m_uniformBuffer, m_uniformBufferVertexOffset, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_uniformBufferFragmentOffset = m_uniformBufferVertexOffset + vertexUniformBufferSize;
|
m_uniformBufferFragmentOffset = m_uniformBufferVertexOffset + vertexUniformBufferSize;
|
||||||
if (0 != fragmentUniformBufferSize)
|
if (0 != fragmentUniformBufferSize)
|
||||||
{
|
{
|
||||||
m_uniformBufferFragmentOffset = BX_ALIGN_MASK(m_uniformBufferFragmentOffset, program.m_fshConstantBufferAlignmentMask);
|
m_uniformBufferFragmentOffset = BX_ALIGN_MASK(m_uniformBufferFragmentOffset, currentPso->m_fshConstantBufferAlignmentMask);
|
||||||
rce.setFragmentBuffer(m_uniformBuffer, m_uniformBufferFragmentOffset, 0);
|
rce.setFragmentBuffer(m_uniformBuffer, m_uniformBufferFragmentOffset, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (constantsChanged)
|
if (constantsChanged)
|
||||||
{
|
{
|
||||||
UniformBuffer* vcb = program.m_vshConstantBuffer;
|
UniformBuffer* vcb = currentPso->m_vshConstantBuffer;
|
||||||
if (NULL != vcb)
|
if (NULL != vcb)
|
||||||
{
|
{
|
||||||
commit(*vcb);
|
commit(*vcb);
|
||||||
}
|
}
|
||||||
|
|
||||||
UniformBuffer* fcb = program.m_fshConstantBuffer;
|
UniformBuffer* fcb = currentPso->m_fshConstantBuffer;
|
||||||
if (NULL != fcb)
|
if (NULL != fcb)
|
||||||
{
|
{
|
||||||
commit(*fcb);
|
commit(*fcb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewState.setPredefined<4>(this, view, program, _render, draw);
|
viewState.setPredefined<4>(this, view, *currentPso, _render, draw);
|
||||||
|
|
||||||
m_uniformBufferFragmentOffset += fragmentUniformBufferSize;
|
m_uniformBufferFragmentOffset += fragmentUniformBufferSize;
|
||||||
m_uniformBufferVertexOffset = m_uniformBufferFragmentOffset;
|
m_uniformBufferVertexOffset = m_uniformBufferFragmentOffset;
|
||||||
@ -3973,14 +4000,12 @@ namespace bgfx { namespace mtl
|
|||||||
|
|
||||||
if (isValid(currentProgram) )
|
if (isValid(currentProgram) )
|
||||||
{
|
{
|
||||||
ProgramMtl& program = m_program[currentProgram.idx];
|
for (uint32_t sampler = 0, numSamplers = currentPso->m_samplerCount; sampler < numSamplers; ++sampler)
|
||||||
|
|
||||||
for (uint32_t sampler = 0; sampler < program.m_samplerCount; ++sampler)
|
|
||||||
{
|
{
|
||||||
SamplerInfo& samplerInfo = program.m_samplers[sampler];
|
const SamplerInfo& samplerInfo = currentPso->m_samplers[sampler];
|
||||||
|
|
||||||
UniformHandle handle = samplerInfo.m_uniform;
|
UniformHandle handle = samplerInfo.m_uniform;
|
||||||
int stage = *((int*)m_uniforms[handle.idx]);
|
int stage = *( (int*)m_uniforms[handle.idx]);
|
||||||
|
|
||||||
const Binding& bind = renderBind.m_bind[stage];
|
const Binding& bind = renderBind.m_bind[stage];
|
||||||
Binding& current = currentBind.m_bind[stage];
|
Binding& current = currentBind.m_bind[stage];
|
||||||
|
@ -258,6 +258,60 @@ namespace bgfx { namespace glsl
|
|||||||
parse = eol.getPtr() + 1;
|
parse = eol.getPtr() + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bx::StringView mainEntry("xlatMtlShaderOutput xlatMtlMain (");
|
||||||
|
parse = bx::strFind(optimizedShader, mainEntry);
|
||||||
|
end = parse;
|
||||||
|
if (!parse.isEmpty())
|
||||||
|
{
|
||||||
|
parse.set(parse.getPtr() + mainEntry.getLength(), optShader.getTerm());
|
||||||
|
end = bx::strFind(parse, "{");
|
||||||
|
}
|
||||||
|
|
||||||
|
while (parse.getPtr() < end.getPtr()
|
||||||
|
&& !parse.isEmpty())
|
||||||
|
{
|
||||||
|
parse.set(bx::strLTrimSpace(parse).getPtr(), optShader.getTerm());
|
||||||
|
const bx::StringView textureNameMark("[[texture(");
|
||||||
|
const bx::StringView textureName = bx::strFind(parse, textureNameMark);
|
||||||
|
|
||||||
|
if (!textureName.isEmpty())
|
||||||
|
{
|
||||||
|
Uniform un;
|
||||||
|
un.type = nameToUniformTypeEnum("int"); // int for sampler
|
||||||
|
const char* varNameEnd = textureName.getPtr() - 1;
|
||||||
|
parse.set(parse.getPtr(), varNameEnd - 1);
|
||||||
|
const char* varNameBeg = parse.getPtr();
|
||||||
|
for (int ii = parse.getLength() - 1; 0 <= ii; --ii)
|
||||||
|
{
|
||||||
|
if (varNameBeg[ii] == ' ')
|
||||||
|
{
|
||||||
|
parse.set(varNameBeg + ii + 1, varNameEnd);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
char uniformName[256];
|
||||||
|
bx::strCopy(uniformName, parse.getLength() + 1, parse);
|
||||||
|
un.name = uniformName;
|
||||||
|
const char* regIndexBeg = textureName.getPtr() + textureNameMark.getLength();
|
||||||
|
bx::StringView regIndex = bx::strFind(regIndexBeg, ")");
|
||||||
|
|
||||||
|
regIndex.set(regIndexBeg, regIndex.getPtr());
|
||||||
|
uint32_t tmp;
|
||||||
|
bx::fromString(&tmp, regIndex);
|
||||||
|
un.regIndex = uint16_t(tmp);
|
||||||
|
un.num = 1;
|
||||||
|
un.regCount = 1;
|
||||||
|
|
||||||
|
uniforms.push_back(un);
|
||||||
|
|
||||||
|
parse = regIndex.getPtr() + 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
parse = textureName;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t count = (uint16_t)uniforms.size();
|
uint16_t count = (uint16_t)uniforms.size();
|
||||||
|
@ -5,11 +5,15 @@
|
|||||||
|
|
||||||
#include <bgfx_shader.sh>
|
#include <bgfx_shader.sh>
|
||||||
|
|
||||||
uniform vec4 u_params;
|
uniform vec4 u_params0;
|
||||||
#define u_textureLod u_params.x
|
#define u_textureLod u_params0.x
|
||||||
#define u_textureLayer u_params.y
|
#define u_textureLayer u_params0.y
|
||||||
#define u_inLinear u_params.z
|
#define u_inLinear u_params0.z
|
||||||
#define u_ev u_params.w
|
#define u_ev u_params0.w
|
||||||
|
|
||||||
|
uniform vec4 u_params1;
|
||||||
|
#define u_outputFormat u_params1.x
|
||||||
|
#define u_sdrWhiteNits u_params1.y
|
||||||
|
|
||||||
vec3 toLinear(vec3 _rgb)
|
vec3 toLinear(vec3 _rgb)
|
||||||
{
|
{
|
||||||
@ -21,8 +25,107 @@ vec3 toGamma(vec3 _rgb)
|
|||||||
return pow(abs(_rgb), vec3_splat(1.0/2.2) );
|
return pow(abs(_rgb), vec3_splat(1.0/2.2) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vec3 applyExposure(vec3 _rgb)
|
||||||
|
{
|
||||||
|
vec3 rgb = mix(toLinear(_rgb.xyz), _rgb.xyz, u_inLinear);
|
||||||
|
return (rgb * pow(2.0, u_ev) );
|
||||||
|
}
|
||||||
|
|
||||||
vec4 toEv(vec4 _color)
|
vec4 toEv(vec4 _color)
|
||||||
{
|
{
|
||||||
vec3 rgb = mix(toLinear(_color.xyz), _color.xyz, u_inLinear);
|
return vec4(toGamma(applyExposure(_color.xyz) ), _color.w);
|
||||||
return vec4(toGamma(rgb * pow(2.0, u_ev) ), _color.w);
|
}
|
||||||
|
|
||||||
|
float toSrgbGamma(float _val)
|
||||||
|
{
|
||||||
|
if (_val <= 0.0031308)
|
||||||
|
{
|
||||||
|
return 12.92 * _val;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 1.055 * pow(_val, (1.0/2.4) ) - 0.055;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 toSrgbGamma(vec3 _rgb)
|
||||||
|
{
|
||||||
|
_rgb.x = toSrgbGamma(_rgb.x);
|
||||||
|
_rgb.y = toSrgbGamma(_rgb.y);
|
||||||
|
_rgb.z = toSrgbGamma(_rgb.z);
|
||||||
|
return _rgb;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 toXyzFromSrgb(vec3 _rgb)
|
||||||
|
{
|
||||||
|
mat3 toXYZ = mat3(
|
||||||
|
0.4125564, 0.3575761, 0.1804375,
|
||||||
|
0.2126729, 0.7151522, 0.0721750,
|
||||||
|
0.0193339, 0.1191920, 0.9503041
|
||||||
|
);
|
||||||
|
return mul(toXYZ, _rgb);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 toRec2020FromXyz(vec3 _xyz)
|
||||||
|
{
|
||||||
|
mat3 toRec2020 = mat3(
|
||||||
|
1.7166512, -0.3556708, -0.2533663,
|
||||||
|
-0.6666844, 1.6164812, 0.0157685,
|
||||||
|
0.0176399, -0.0427706, 0.9421031
|
||||||
|
);
|
||||||
|
return mul(toRec2020, _xyz);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vec3 toPqOetf(vec3 _color)
|
||||||
|
{
|
||||||
|
// reference PQ OETF will yield reference OOTF when
|
||||||
|
// displayed on a reference monitor employing EOTF
|
||||||
|
|
||||||
|
float m1 = 0.1593017578125;
|
||||||
|
float m2 = 78.84375;
|
||||||
|
float c1 = 0.8359375;
|
||||||
|
float c2 = 18.8515625;
|
||||||
|
float c3 = 18.6875;
|
||||||
|
|
||||||
|
vec3 Ym1 = pow(_color.xyz * (1.0/10000.0), vec3_splat(m1) );
|
||||||
|
_color = pow((c1 + c2*Ym1) / (vec3_splat(1.0) + c3*Ym1), vec3_splat(m2) );
|
||||||
|
|
||||||
|
return _color;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 toOutput(vec4 _color, float _outputFormat, float _sdrWhiteNits)
|
||||||
|
{
|
||||||
|
// assumed that _color is linear with sRGB/rec709 primaries
|
||||||
|
// and 1.0 is SDR white point
|
||||||
|
|
||||||
|
vec3 outColor = vec3_splat(0.0);
|
||||||
|
|
||||||
|
if (_outputFormat < 0.5)
|
||||||
|
{
|
||||||
|
// output == 0 -> sRGB/rec709, apply gamma
|
||||||
|
// values over 1.0 will saturate
|
||||||
|
outColor = toSrgbGamma(saturate(_color.xyz));
|
||||||
|
}
|
||||||
|
else if (_outputFormat < 1.5)
|
||||||
|
{
|
||||||
|
// output == 1 -> scRGB, remains linear.
|
||||||
|
// values over 1.0 will appear as HDR
|
||||||
|
outColor = _color.xyz;
|
||||||
|
}
|
||||||
|
else if (_outputFormat < 2.5)
|
||||||
|
{
|
||||||
|
// output == 2 -> PQ
|
||||||
|
|
||||||
|
// change primaries from sRGB/rec709 to rec2020
|
||||||
|
vec3 _xyz = toXyzFromSrgb(_color.xyz);
|
||||||
|
outColor = toRec2020FromXyz(_xyz);
|
||||||
|
|
||||||
|
// if 1.0 is SDR white, should map to 80 nits
|
||||||
|
// but that could lead to dim results as SDR
|
||||||
|
// monitors tend to be brighter than standard
|
||||||
|
outColor = toPqOetf(outColor * _sdrWhiteNits);
|
||||||
|
}
|
||||||
|
|
||||||
|
return vec4(outColor, _color.w);
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -12,5 +12,8 @@ SAMPLER2D(s_texColor, 0);
|
|||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 color = texture2DLod(s_texColor, v_texcoord0.xy, u_textureLod);
|
vec4 color = texture2DLod(s_texColor, v_texcoord0.xy, u_textureLod);
|
||||||
gl_FragColor = toEv(color * v_color0);
|
color.xyz = applyExposure(color.xyz);
|
||||||
|
color *= v_color0;
|
||||||
|
|
||||||
|
gl_FragColor = toOutput(color, u_outputFormat, u_sdrWhiteNits);
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -12,5 +12,7 @@ SAMPLER3D(s_texColor, 0);
|
|||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 color = texture3DLod(s_texColor, vec3(v_texcoord0.xy, u_textureLayer), u_textureLod);
|
vec4 color = texture3DLod(s_texColor, vec3(v_texcoord0.xy, u_textureLayer), u_textureLod);
|
||||||
gl_FragColor = toEv(color * v_color0);
|
color.xyz = applyExposure(color.xyz);
|
||||||
|
color *= v_color0;
|
||||||
|
gl_FragColor = toOutput(color, u_outputFormat, u_sdrWhiteNits);
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -16,5 +16,8 @@ void main()
|
|||||||
dir = normalize(mul(u_mtx, vec4(dir, 0.0) ).xyz);
|
dir = normalize(mul(u_mtx, vec4(dir, 0.0) ).xyz);
|
||||||
|
|
||||||
vec4 color = textureCubeLod(s_texColor, dir, u_textureLod);
|
vec4 color = textureCubeLod(s_texColor, dir, u_textureLod);
|
||||||
gl_FragColor = toEv(color * v_color0);
|
color.xyz = applyExposure(color.xyz);
|
||||||
|
color *= v_color0;
|
||||||
|
|
||||||
|
gl_FragColor = toOutput(color, u_outputFormat, u_sdrWhiteNits);
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -12,5 +12,8 @@ SAMPLERCUBE(s_texColor, 0);
|
|||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 color = textureCubeLod(s_texColor, v_texcoord0, u_textureLod);
|
vec4 color = textureCubeLod(s_texColor, v_texcoord0, u_textureLod);
|
||||||
gl_FragColor = toEv(color * v_color0);
|
color.xyz = applyExposure(color.xyz);
|
||||||
|
color *= v_color0;
|
||||||
|
|
||||||
|
gl_FragColor = toOutput(color, u_outputFormat, u_sdrWhiteNits);
|
||||||
}
|
}
|
||||||
|
@ -1,292 +1,303 @@
|
|||||||
static const uint8_t fs_texture_msdf_glsl[483] =
|
static const uint8_t fs_texture_msdf_glsl[605] =
|
||||||
{
|
{
|
||||||
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u
|
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u
|
||||||
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_
|
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // _params0.......s
|
||||||
0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xb0, 0x01, // texColor........
|
0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x29, // _texColor......)
|
||||||
0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, // ..varying vec3 v
|
0x02, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // ...varying highp
|
||||||
0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif
|
0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec3 v_texcoord
|
||||||
0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // orm vec4 u_param
|
0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.uniform highp
|
||||||
0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, // s;.uniform sampl
|
0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, // vec4 u_params0;
|
||||||
0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // er2D s_texColor;
|
0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // .uniform sampler
|
||||||
0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{.
|
0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, // 2D s_texColor;.v
|
||||||
0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // vec3 tmpvar_1;
|
0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{.
|
||||||
0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, // . tmpvar_1 = te
|
0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // lowp vec3 tmpvar
|
||||||
0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, // xture2DLod (s_te
|
0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, // _1;. tmpvar_1 =
|
||||||
0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // xColor, v_texcoo
|
0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x20, 0x20, // texture2DLod
|
||||||
0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // rd0.xy, u_params
|
0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, // (s_texColor, v_
|
||||||
0x2e, 0x78, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // .x).xyz;. float
|
0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x75, 0x5f, // texcoord0.xy, u_
|
||||||
0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_2;. tmp
|
0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, // params0.x).xyz;.
|
||||||
0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x6d, 0x69, // var_2 = (max (mi
|
0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // lowp float tmp
|
||||||
0x6e, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x74, // n (tmpvar_1.x, t
|
0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_2;. tmpvar_
|
||||||
0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x20, // mpvar_1.y), min
|
0x32, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x74, // 2 = (max (min (t
|
||||||
0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // (. max (tmpva
|
0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_1.x, tmpva
|
||||||
0x72, 0x5f, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1.x, tmpvar_1.
|
0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x0a, 0x20, 0x20, // r_1.y), min (.
|
||||||
0x79, 0x29, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // y). , tmpvar_1.
|
0x20, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // max (tmpvar_1.
|
||||||
0x7a, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, // z)) - 0.5);. gl
|
0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x0a, 0x20, // x, tmpvar_1.y).
|
||||||
0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, // _FragColor = vec
|
0x20, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x29, 0x29, 0x20, // , tmpvar_1.z))
|
||||||
0x34, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // 4(clamp (((tmpva
|
0x2d, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, // - 0.5);. lowp f
|
||||||
0x72, 0x5f, 0x32, 0x20, 0x2f, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, // r_2 / . (abs(
|
0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, // loat tmpvar_3;.
|
||||||
0x64, 0x46, 0x64, 0x78, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x20, // dFdx(tmpvar_2))
|
0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, // tmpvar_3 = clam
|
||||||
0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // + abs(dFdy(tmpva
|
0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x2f, 0x20, // p (((tmpvar_2 /
|
||||||
0x72, 0x5f, 0x32, 0x29, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, // r_2))). ) + 0.5
|
0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x74, // . (abs(dFdx(t
|
||||||
0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x7d, // ), 0.0, 1.0));.}
|
0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, // mpvar_2)) + abs(
|
||||||
0x0a, 0x0a, 0x00, // ...
|
0x64, 0x46, 0x64, 0x79, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x29, // dFdy(tmpvar_2)))
|
||||||
|
0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, // . ) + 0.5), 0.0
|
||||||
|
0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, // , 1.0);. medium
|
||||||
|
0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, // p vec4 tmpvar_4;
|
||||||
|
0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x76, 0x65, // . tmpvar_4 = ve
|
||||||
|
0x63, 0x34, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, // c4(tmpvar_3);.
|
||||||
|
0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, // gl_FragColor = t
|
||||||
|
0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // mpvar_4;.}...
|
||||||
};
|
};
|
||||||
static const uint8_t fs_texture_msdf_spv[1817] =
|
static const uint8_t fs_texture_msdf_spv[1834] =
|
||||||
{
|
{
|
||||||
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u
|
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x75, // FSH............u
|
||||||
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0xf4, 0x06, 0x00, // _params.........
|
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x04, 0x07, // _params0........
|
||||||
0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x03, 0x01, 0x00, // ...#............
|
0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x04, 0x01, // ....#...........
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, // ................
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, // ................
|
||||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, // .....GLSL.std.45
|
0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, // ......GLSL.std.4
|
||||||
0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // 0...............
|
0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // 50..............
|
||||||
0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai
|
0x00, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma
|
||||||
0x6e, 0x00, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, // n...............
|
0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xa4, 0x00, // in..............
|
||||||
0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, // ................
|
0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................
|
||||||
0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // ................
|
0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, // ................
|
||||||
0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // .main...........
|
0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, // ..main..........
|
||||||
0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, 0x00, // .BgfxSampler2D..
|
0x00, 0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, // ..BgfxSampler2D.
|
||||||
0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, // .............m_s
|
0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, // ..............m_
|
||||||
0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // ampler..........
|
0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, // sampler.........
|
||||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, // .....m_texture..
|
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, // ......m_texture.
|
||||||
0x00, 0x05, 0x00, 0x05, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....-...s_texCo
|
0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......-...s_texC
|
||||||
0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, // lor....../...s_t
|
0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x73, 0x5f, // olor....../...s_
|
||||||
0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, // exColorSampler..
|
0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, // texColorSampler.
|
||||||
0x00, 0x05, 0x00, 0x07, 0x00, 0x32, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....2...s_texCo
|
0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x32, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......2...s_texC
|
||||||
0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, // lorTexture......
|
0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // olorTexture.....
|
||||||
0x00, 0x70, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, // .p...$Global....
|
0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, // ..p...$Global...
|
||||||
0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // .p.......u_param
|
0x06, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // ..p.......u_para
|
||||||
0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // s........r......
|
0x6d, 0x73, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, // ms0.......r.....
|
||||||
0x00, 0x05, 0x00, 0x05, 0x00, 0x95, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // .........v_color
|
0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x95, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ..........v_colo
|
||||||
0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, // 0............v_t
|
0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x99, 0x00, 0x00, 0x00, 0x76, 0x5f, // r0............v_
|
||||||
0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0xa4, 0x00, 0x00, // excoord0........
|
0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0xa4, 0x00, // texcoord0.......
|
||||||
0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, // .bgfx_FragData0.
|
0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, // ..bgfx_FragData0
|
||||||
0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...2..."......
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...2...".....
|
||||||
0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...2...!......
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...2...!.....
|
||||||
0x00, 0x48, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .H...p.......#..
|
0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...p.......#.
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....G...p......
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, // ......G...p.....
|
||||||
0x00, 0x47, 0x00, 0x04, 0x00, 0x72, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...r..."......
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x72, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...r...".....
|
||||||
0x00, 0x47, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G..............
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x72, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...r...!.....
|
||||||
0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .G..............
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G.............
|
||||||
0x00, 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G..............
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, // ..G.............
|
||||||
0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, // .........!......
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G.............
|
||||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, // ................
|
0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, // ..........!.....
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, // ..... ..........
|
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, // ................
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, // ...... .........
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, // ................
|
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||||
0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, // ................
|
||||||
0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................
|
0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, // ................
|
||||||
0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................
|
0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, // ................
|
||||||
0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // . ........... ..
|
0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, // ................
|
||||||
0x00, 0x2c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .,...........;..
|
0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, // .. ........... .
|
||||||
0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .,...-....... ..
|
0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..,...........;.
|
||||||
0x00, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .............;..
|
0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, // ..,...-....... .
|
||||||
0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ...../....... ..
|
0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;.
|
||||||
0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .1...........;..
|
0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, // ....../....... .
|
||||||
0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // .1...2..........
|
0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..1...........;.
|
||||||
0x00, 0x35, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .5... .......+..
|
0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, // ..1...2.........
|
||||||
0x00, 0x35, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, // .5...:..........
|
0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..5... .......+.
|
||||||
0x00, 0x3e, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, // .>...........R..
|
0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, // ..5...:.........
|
||||||
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, // . .......+...R..
|
0x03, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x52, 0x00, // ..>...........R.
|
||||||
0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .S.......+......
|
0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x52, 0x00, // .. .......+...R.
|
||||||
0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, // .g.......,......
|
0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..S.......+.....
|
||||||
0x00, 0x6b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, // .k...g...g...g..
|
0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, // ..g.......,.....
|
||||||
0x00, 0x67, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, // .g...+.......m..
|
0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x67, 0x00, // ..k...g...g...g.
|
||||||
0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, // ....?,.......n..
|
0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6d, 0x00, // ..g...+.......m.
|
||||||
0x00, 0x6d, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, // .m...m...m...m..
|
0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x6e, 0x00, // .....?,.......n.
|
||||||
0x00, 0x1e, 0x00, 0x03, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .....p....... ..
|
0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6d, 0x00, // ..m...m...m...m.
|
||||||
0x00, 0x71, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .q.......p...;..
|
0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, // ......p....... .
|
||||||
0x00, 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .q...r....... ..
|
0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..q.......p...;.
|
||||||
0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .y...........+..
|
0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, // ..q...r....... .
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x00, 0x04, // ............? ..
|
0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..y...........+.
|
||||||
0x00, 0x94, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .............;..
|
0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x00, // .............? .
|
||||||
0x00, 0x94, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. ..
|
0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;.
|
||||||
0x00, 0x98, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // ......... ...;..
|
0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. .
|
||||||
0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. ..
|
0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3b, 0x00, // .......... ...;.
|
||||||
0x00, 0xa3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .............;..
|
0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. .
|
||||||
0x00, 0xa3, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, // .............6..
|
0x04, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;.
|
||||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................
|
0x04, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, // ..............6.
|
||||||
0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, // .........=......
|
0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................
|
||||||
0x00, 0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, // .0.../...=......
|
0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, // ..........=.....
|
||||||
0x00, 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, // .3...2...P......
|
0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ..0.../...=.....
|
||||||
0x00, 0x34, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, // .4...0...3...>..
|
0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, // ..3...2...P.....
|
||||||
0x00, 0x2d, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, // .-...4...=... ..
|
0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..4...0...3...>.
|
||||||
0x00, 0x9a, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, // .........=......
|
0x03, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, // ..-...4...=... .
|
||||||
0x00, 0xc7, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // .....-...Q......
|
0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, // ..........=.....
|
||||||
0x00, 0x01, 0x01, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .............Q..
|
0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, // ......-...Q.....
|
||||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................
|
0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q.
|
||||||
0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, // .O..............
|
0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||||
0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, // .............A..
|
0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x9a, 0x00, // ..O.............
|
||||||
0x00, 0x79, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, // .y.......r...:..
|
0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, // ..............A.
|
||||||
0x00, 0x53, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, // .S...=..........
|
0x06, 0x00, 0x79, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3a, 0x00, // ..y.......r...:.
|
||||||
0x00, 0xca, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x3e, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, // .....V...>......
|
0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xcc, 0x00, // ..S...=.........
|
||||||
0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, // .........X......
|
0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x3e, 0x00, 0x00, 0x00, 0xe8, 0x00, // ......V...>.....
|
||||||
0x00, 0xea, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................
|
0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, // ..........X.....
|
||||||
0x00, 0xcb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, // .....Q..........
|
0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x02, 0x00, // ................
|
||||||
0x00, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // .........Q......
|
0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xee, 0x00, // ......Q.........
|
||||||
0x00, 0xef, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, // ................
|
0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q.....
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, // .............%..
|
0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, // ................
|
||||||
0x00, 0xed, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // .........Q......
|
0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, // ..............%.
|
||||||
0x00, 0xf2, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .............Q..
|
0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, // ..........Q.....
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................
|
0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q.
|
||||||
0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................
|
0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||||
0x00, 0x28, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .(...........Q..
|
0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................
|
0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x51, 0x00, // ..(...........Q.
|
||||||
0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................
|
0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x02, 0x00, // ................
|
||||||
0x00, 0x25, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, // .%..............
|
0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, // .............(..
|
0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x0c, 0x00, // ..%.............
|
||||||
0x00, 0xf0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // ................
|
0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, // ..............(.
|
||||||
0x00, 0xd0, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x04, // ................
|
0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, // ................
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, // ................
|
0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0xd1, 0x00, // ................
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, // ................
|
0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x88, 0x00, // ................
|
||||||
0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, // ................
|
0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xd4, 0x00, // ................
|
||||||
0x00, 0x82, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, // ................
|
0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd5, 0x00, // ................
|
||||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, // .....+.......g..
|
0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd7, 0x00, // ................
|
||||||
0x00, 0x6d, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, // .m...P..........
|
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x67, 0x00, // ......+.......g.
|
||||||
0x00, 0xd6, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, // ................
|
0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xd9, 0x00, // ..m...P.........
|
||||||
0x00, 0x0c, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................
|
0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xd7, 0x00, // ................
|
||||||
0x00, 0x2e, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, // .....k...n......
|
0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||||
0x00, 0x3e, 0x00, 0x03, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, // .>..............
|
0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xd9, 0x00, // ......k...n.....
|
||||||
0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, // .8.......
|
0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xfd, 0x00, // ..>.............
|
||||||
|
0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, // ..8.......
|
||||||
};
|
};
|
||||||
static const uint8_t fs_texture_msdf_dx9[499] =
|
static const uint8_t fs_texture_msdf_dx9[500] =
|
||||||
{
|
{
|
||||||
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s
|
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s
|
||||||
0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x08, // _texColor0......
|
0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x09, // _texColor0......
|
||||||
0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, // u_params........
|
0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0xc0, // u_params0.......
|
||||||
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ........,.CTAB..
|
0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, // .........,.CTAB.
|
||||||
0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, // ................
|
0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, // ................
|
||||||
0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, // ......|...D.....
|
0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, // .......|...D....
|
||||||
0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, // ......P.......`.
|
0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, // .......P.......`
|
||||||
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........l.....
|
0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, // ...........l....
|
||||||
0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, // ..s_texColor....
|
0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, // ...s_texColor...
|
||||||
0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_
|
0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, // ...............u
|
||||||
0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, // params..........
|
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, // _params0........
|
||||||
0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0
|
0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, // ...........ps_3_
|
||||||
0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H
|
0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, // 0.Microsoft (R)
|
||||||
0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi
|
0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, // HLSL Shader Comp
|
||||||
0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, // ler 10.1..Q.....
|
0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, // iler 10.1..Q....
|
||||||
0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, // .....?..........
|
0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x00, // ......?.........
|
||||||
0x00, 0x3f, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x90, 0x1f, 0x00, // .?..............
|
0x00, 0x00, 0x3f, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x90, 0x1f, // ..?.............
|
||||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, // ................
|
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, // ................
|
||||||
0x07, 0x80, 0x01, 0x00, 0xd0, 0xa0, 0x00, 0x00, 0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, // ................
|
0x00, 0x07, 0x80, 0x01, 0x00, 0xd0, 0xa0, 0x00, 0x00, 0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, // ................
|
||||||
0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, // ......_.........
|
0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, // ......._........
|
||||||
0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, // ................
|
0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, 0x00, // ................
|
||||||
0x55, 0x81, 0x00, 0x00, 0x00, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, // U.....X.........
|
0x00, 0x55, 0x81, 0x00, 0x00, 0x00, 0x80, 0x58, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x80, 0x00, // .U.....X........
|
||||||
0xff, 0x80, 0x00, 0x00, 0xe1, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x0a, 0x00, 0x00, 0x03, 0x01, 0x00, // ................
|
0x00, 0xff, 0x80, 0x00, 0x00, 0xe1, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x0a, 0x00, 0x00, 0x03, 0x01, // ................
|
||||||
0x01, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0x55, 0x80, 0x0b, 0x00, 0x00, 0x03, 0x02, 0x00, // ........U.......
|
0x00, 0x01, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, 0x55, 0x80, 0x0b, 0x00, 0x00, 0x03, 0x02, // .........U......
|
||||||
0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // ................
|
0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, // ................
|
||||||
0x01, 0x80, 0x02, 0x00, 0x00, 0x80, 0x01, 0x00, 0xaa, 0xa0, 0x5b, 0x00, 0x00, 0x02, 0x00, 0x00, // ..........[.....
|
0x00, 0x01, 0x80, 0x02, 0x00, 0x00, 0x80, 0x01, 0x00, 0xaa, 0xa0, 0x5b, 0x00, 0x00, 0x02, 0x00, // ...........[....
|
||||||
0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x5c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ................
|
0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x5c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, // ................
|
||||||
0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x00, 0x00, // ................
|
0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0xaa, 0x8b, 0x00, // ................
|
||||||
0x55, 0x8b, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x04, 0x00, // U...........U...
|
0x00, 0x55, 0x8b, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x55, 0x80, 0x04, // .U...........U..
|
||||||
0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, // ............U...
|
0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, // .............U..
|
||||||
0xff, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, // ................
|
0x00, 0xff, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x80, 0xff, // ................
|
||||||
0x00, 0x00, 0x00, // ...
|
0xff, 0x00, 0x00, 0x00, // ....
|
||||||
};
|
};
|
||||||
static const uint8_t fs_texture_msdf_dx11[674] =
|
static const uint8_t fs_texture_msdf_dx11[675] =
|
||||||
{
|
{
|
||||||
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u
|
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u
|
||||||
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_
|
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // _params0.......s
|
||||||
0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x6c, 0x02, // texColor0.....l.
|
0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x6c, // _texColor0.....l
|
||||||
0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xde, 0xd6, 0xcf, 0x5a, 0x51, 0xb1, 0xc9, 0x93, 0x7e, 0x1e, // ..DXBC...ZQ...~.
|
0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0xde, 0xd6, 0xcf, 0x5a, 0x51, 0xb1, 0xc9, 0x93, 0x7e, // ...DXBC...ZQ...~
|
||||||
0x77, 0x4e, 0x30, 0x56, 0xcd, 0x6a, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x03, 0x00, // wN0V.j....l.....
|
0x1e, 0x77, 0x4e, 0x30, 0x56, 0xcd, 0x6a, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x03, // .wN0V.j....l....
|
||||||
0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS
|
0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, // ...,...........I
|
||||||
0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNl...........P.
|
0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, // SGNl...........P
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................
|
||||||
0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||||
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, // ..............b.
|
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, // ...............b
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, // ................
|
||||||
0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO
|
0x00, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, // .......SV_POSITI
|
||||||
0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, // N.COLOR.TEXCOORD
|
0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, // ON.COLOR.TEXCOOR
|
||||||
0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,.........
|
0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, // D..OSGN,........
|
||||||
0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. .............
|
0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ... ............
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, // ...........SV_TA
|
||||||
0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x90, 0x01, 0x00, 0x00, 0x40, 0x00, // GET...SHDR....@.
|
0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x90, 0x01, 0x00, 0x00, 0x40, // RGET...SHDR....@
|
||||||
0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..d...Y...F. ...
|
0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, // ...d...Y...F. ..
|
||||||
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, // ......Z....`....
|
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, // .......Z....`...
|
||||||
0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, // ..X....p......UU
|
0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, // ...X....p......U
|
||||||
0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, // ..b...2.......e.
|
0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, // U..b...2.......e
|
||||||
0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, // ... ......h.....
|
0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, // .... ......h....
|
||||||
0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, // ..H...........F.
|
0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...H...........F
|
||||||
0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, // ......F~.......`
|
0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......F~.......
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ .......
|
0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // `........ ......
|
||||||
0x00, 0x00, 0x34, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..4.............
|
0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ...4............
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, // ..............3.
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, // ...............3
|
||||||
0x00, 0x07, 0x52, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x06, 0x10, 0x00, 0x00, 0x00, // ..R.......V.....
|
0x00, 0x00, 0x07, 0x52, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x06, 0x10, 0x00, 0x00, // ...R.......V....
|
||||||
0x00, 0x00, 0x06, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x07, 0x12, 0x00, // ..........4.....
|
0x00, 0x00, 0x00, 0x06, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x07, 0x12, // ...........4....
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, // ......*.........
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // .......*........
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, // ................
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, // ................
|
||||||
0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, // ...........@....
|
0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, // ............@...
|
||||||
0x00, 0xbf, 0x0b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, // ......".........
|
0x00, 0x00, 0xbf, 0x0b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ......."........
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, // ..........B.....
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x00, // ...........B....
|
||||||
0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x22, 0x00, // ..............".
|
0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x22, // ..............."
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, // ......*.........
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, // .......*........
|
||||||
0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, // ................
|
0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, // ................
|
||||||
0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, // ................
|
0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................
|
||||||
0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, // ................
|
0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, // ................
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, // ...............@
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // ................
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x20, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, // .....?6 ... ....
|
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x20, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x00, // @.....?6 ... ...
|
||||||
0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, // ..........>.....
|
0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, // ...........>....
|
||||||
0x10, 0x00, // ..
|
0x00, 0x10, 0x00, // ...
|
||||||
};
|
};
|
||||||
static const uint8_t fs_texture_msdf_mtl[879] =
|
static const uint8_t fs_texture_msdf_mtl[914] =
|
||||||
{
|
{
|
||||||
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x03, // FSH.............
|
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u
|
||||||
0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac
|
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // _params0.......s
|
||||||
0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct
|
0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x5e, // _texColor......^
|
||||||
0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp
|
0x03, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, // ...using namespa
|
||||||
0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, // ut {. float3 v_
|
0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // ce metal;.struct
|
||||||
0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, // texcoord0;.};.st
|
0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, // xlatMtlShaderIn
|
||||||
0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ruct xlatMtlShad
|
0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, // put {. float3 v
|
||||||
0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // erOutput {. flo
|
0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, // _texcoord0;.};.s
|
||||||
0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // at4 gl_FragColor
|
0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // truct xlatMtlSha
|
||||||
0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ;.};.struct xlat
|
0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // derOutput {. fl
|
||||||
0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // MtlShaderUniform
|
0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, // oat4 gl_FragColo
|
||||||
0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, // {. float4 u_pa
|
0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // r;.};.struct xla
|
||||||
0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, // rams;.};.fragmen
|
0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, // tMtlShaderUnifor
|
||||||
0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // t xlatMtlShaderO
|
0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, // m {. float4 u_p
|
||||||
0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // utput xlatMtlMai
|
0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, // arams0;.};.fragm
|
||||||
0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // n (xlatMtlShader
|
0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // ent xlatMtlShade
|
||||||
0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, // Input _mtl_i [[s
|
0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // rOutput xlatMtlM
|
||||||
0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, // tage_in]], const
|
0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ain (xlatMtlShad
|
||||||
0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // ant xlatMtlShade
|
0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, // erInput _mtl_i [
|
||||||
0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // rUniform& _mtl_u
|
0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, // [stage_in]], con
|
||||||
0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, // [[buffer(0)]].
|
0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // stant xlatMtlSha
|
||||||
0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, // , texture2d<f
|
0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // derUniform& _mtl
|
||||||
0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // loat> s_texColor
|
0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, // _u [[buffer(0)]]
|
||||||
0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, // [[texture(0)]],
|
0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, // . , texture2d
|
||||||
0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, // sampler _mtlsmp
|
0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // <float> s_texCol
|
||||||
0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, // _s_texColor [[sa
|
0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, // or [[texture(0)]
|
||||||
0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // mpler(0)]]).{.
|
0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, // ], sampler _mtls
|
||||||
0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, // xlatMtlShaderOut
|
0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, // mp_s_texColor [[
|
||||||
0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // put _mtl_o;. fl
|
0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, // sampler(0)]]).{.
|
||||||
0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // oat3 tmpvar_1 =
|
0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // xlatMtlShaderO
|
||||||
0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // 0;. tmpvar_1 =
|
0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, // utput _mtl_o;.
|
||||||
0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, // s_texColor.sampl
|
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, // float3 tmpvar_1
|
||||||
0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // e(_mtlsmp_s_texC
|
0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, // = 0;. tmpvar_1
|
||||||
0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x5f, // olor, (float2)(_
|
0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, // = s_texColor.sam
|
||||||
0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // mtl_i.v_texcoord
|
0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, // ple(_mtlsmp_s_te
|
||||||
0x30, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, // 0.xy), level(_mt
|
0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, // xColor, (float2)
|
||||||
0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x29, // l_u.u_params.x))
|
0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // (_mtl_i.v_texcoo
|
||||||
0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, // .xyz;. float tm
|
0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, // rd0.xy), level(_
|
||||||
0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // pvar_2 = 0;. tm
|
0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, // mtl_u.u_params0.
|
||||||
0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x6d, // pvar_2 = (max (m
|
0x78, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // x)).xyz;. float
|
||||||
0x69, 0x6e, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x2c, 0x20, // in (tmpvar_1.x,
|
0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, // tmpvar_2 = 0;.
|
||||||
0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x6d, 0x69, 0x6e, // tmpvar_1.y), min
|
0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x78, // tmpvar_2 = (max
|
||||||
0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // (. max (tmpv
|
0x20, 0x28, 0x6d, 0x69, 0x6e, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // (min (tmpvar_1.
|
||||||
0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // ar_1.x, tmpvar_1
|
0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x2c, 0x20, // x, tmpvar_1.y),
|
||||||
0x2e, 0x79, 0x29, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // .y). , tmpvar_1
|
0x6d, 0x69, 0x6e, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x28, 0x74, // min (. max (t
|
||||||
0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, // .z)) - 0.5);. _
|
0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_1.x, tmpva
|
||||||
0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, // mtl_o.gl_FragCol
|
0x72, 0x5f, 0x31, 0x2e, 0x79, 0x29, 0x0a, 0x20, 0x20, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // r_1.y). , tmpva
|
||||||
0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x63, 0x6c, 0x61, 0x6d, // or = float4(clam
|
0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x0a, // r_1.z)) - 0.5);.
|
||||||
0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x2f, 0x20, // p (((tmpvar_2 /
|
0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, // _mtl_o.gl_Frag
|
||||||
0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x66, 0x64, 0x78, 0x28, 0x74, // . (abs(dfdx(t
|
0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x63, // Color = float4(c
|
||||||
0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, // mpvar_2)) + abs(
|
0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // lamp (((tmpvar_2
|
||||||
0x64, 0x66, 0x64, 0x79, 0x28, 0x2d, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, // dfdy(-tmpvar_2))
|
0x20, 0x2f, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x66, 0x64, // / . (abs(dfd
|
||||||
0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x2c, 0x20, 0x30, 0x2e, // ). ) + 0.5), 0.
|
0x78, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, // x(tmpvar_2)) + a
|
||||||
0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, // 0, 1.0));. retu
|
0x62, 0x73, 0x28, 0x64, 0x66, 0x64, 0x79, 0x28, 0x2d, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // bs(dfdy(-tmpvar_
|
||||||
0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // rn _mtl_o;.}...
|
0x32, 0x29, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x2c, // 2))). ) + 0.5),
|
||||||
|
0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, // 0.0, 1.0));. r
|
||||||
|
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, // eturn _mtl_o;.}.
|
||||||
|
0x0a, 0x00, // ..
|
||||||
};
|
};
|
||||||
extern const uint8_t* fs_texture_msdf_pssl;
|
extern const uint8_t* fs_texture_msdf_pssl;
|
||||||
extern const uint32_t fs_texture_msdf_pssl_size;
|
extern const uint32_t fs_texture_msdf_pssl_size;
|
||||||
|
@ -1,301 +1,310 @@
|
|||||||
static const uint8_t fs_texture_sdf_glsl[575] =
|
static const uint8_t fs_texture_sdf_glsl[658] =
|
||||||
{
|
{
|
||||||
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u
|
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u
|
||||||
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_
|
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // _params0.......s
|
||||||
0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x02, // texColor........
|
0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x5e, // _texColor......^
|
||||||
0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, // ..varying vec3 v
|
0x02, 0x00, 0x00, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // ...varying highp
|
||||||
0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // _texcoord0;.unif
|
0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec3 v_texcoord
|
||||||
0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // orm vec4 u_param
|
0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // 0;.uniform highp
|
||||||
0x73, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, // s;.uniform sampl
|
0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, // vec4 u_params0;
|
||||||
0x65, 0x72, 0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, // er2D s_texColor;
|
0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, // .uniform sampler
|
||||||
0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{.
|
0x32, 0x44, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, // 2D s_texColor;.v
|
||||||
0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // vec4 tmpvar_1;
|
0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // oid main ().{.
|
||||||
0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x65, // . tmpvar_1 = te
|
0x6c, 0x6f, 0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // lowp vec4 tmpvar
|
||||||
0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, // xture2DLod (s_te
|
0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, // _1;. tmpvar_1 =
|
||||||
0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // xColor, v_texcoo
|
0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x4c, 0x6f, 0x64, 0x20, 0x20, 0x20, // texture2DLod
|
||||||
0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, // rd0.xy, u_params
|
0x20, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x5f, // (s_texColor, v_
|
||||||
0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // .x);. float tmp
|
0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x75, 0x5f, // texcoord0.xy, u_
|
||||||
0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_2;. tmpvar_
|
0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, // params0.x);. lo
|
||||||
0x32, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x74, 0x6d, // 2 = (abs(dFdx(tm
|
0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // wp float tmpvar_
|
||||||
0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, // pvar_1.x)) + abs
|
0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, // 2;. tmpvar_2 =
|
||||||
0x28, 0x64, 0x46, 0x64, 0x79, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // (dFdy(tmpvar_1.x
|
0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, 0x78, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // (abs(dFdx(tmpvar
|
||||||
0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, // )));. float edg
|
0x5f, 0x31, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x46, 0x64, // _1.x)) + abs(dFd
|
||||||
0x65, 0x30, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x20, // e0_3;. edge0_3
|
0x79, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x29, 0x29, 0x29, 0x3b, // y(tmpvar_1.x)));
|
||||||
0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // = (0.5 - tmpvar_
|
0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, // . lowp float ed
|
||||||
0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, // 2);. float tmpv
|
0x67, 0x65, 0x30, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, // ge0_3;. edge0_3
|
||||||
0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, // ar_4;. tmpvar_4
|
0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // = (0.5 - tmpvar
|
||||||
0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, // = clamp (((tmpv
|
0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, // _2);. lowp floa
|
||||||
0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, // ar_1.x - edge0_3
|
0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // t tmpvar_4;. tm
|
||||||
0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, // ) / (. (0.5 +
|
0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, // pvar_4 = clamp (
|
||||||
0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, // tmpvar_2). -
|
0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x65, // ((tmpvar_1.x - e
|
||||||
0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, // edge0_3)), 0.0,
|
0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, // dge0_3) / (.
|
||||||
0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, // 1.0);. gl_FragC
|
0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, // (0.5 + tmpvar_2)
|
||||||
0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x63, 0x6c, 0x61, 0x6d, // olor = vec4(clam
|
0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x29, 0x29, 0x2c, // . - edge0_3)),
|
||||||
0x70, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x2a, 0x20, 0x28, // p ((tmpvar_4 * (
|
0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, // 0.0, 1.0);. lo
|
||||||
0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, // tmpvar_4 * .
|
0x77, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, // wp vec4 tmpvar_5
|
||||||
0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, // (3.0 - (2.0 * tm
|
0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x76, // ;. tmpvar_5 = v
|
||||||
0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x30, // pvar_4)). )), 0
|
0x65, 0x63, 0x34, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, // ec4(clamp ((tmpv
|
||||||
0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .0, 1.0));.}...
|
0x61, 0x72, 0x5f, 0x34, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, // ar_4 * (tmpvar_4
|
||||||
|
0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, // * . (3.0 - (
|
||||||
|
0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, // 2.0 * tmpvar_4))
|
||||||
|
0x0a, 0x20, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, // . )), 0.0, 1.0)
|
||||||
|
0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, // );. gl_FragColo
|
||||||
|
0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x7d, 0x0a, // r = tmpvar_5;.}.
|
||||||
|
0x0a, 0x00, // ..
|
||||||
};
|
};
|
||||||
static const uint8_t fs_texture_sdf_spv[1637] =
|
static const uint8_t fs_texture_sdf_spv[1654] =
|
||||||
{
|
{
|
||||||
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x75, // FSH............u
|
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x75, // FSH............u
|
||||||
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x40, 0x06, 0x00, // _params......@..
|
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0x50, 0x06, // _params0......P.
|
||||||
0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xe2, 0x00, 0x00, // ...#............
|
0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0xe3, 0x00, // ....#...........
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, // ................
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, // ................
|
||||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, // .....GLSL.std.45
|
0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, // ......GLSL.std.4
|
||||||
0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // 0...............
|
0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // 50..............
|
||||||
0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, // .............mai
|
0x00, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, // ..............ma
|
||||||
0x6e, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, // n...............
|
0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x90, 0x00, // in..............
|
||||||
0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, // ................
|
0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, // ................
|
||||||
0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, // ................
|
0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, // ................
|
||||||
0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // .main...........
|
0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, // ..main..........
|
||||||
0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, 0x00, // .BgfxSampler2D..
|
0x00, 0x00, 0x42, 0x67, 0x66, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x00, // ..BgfxSampler2D.
|
||||||
0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x73, // .............m_s
|
0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, // ..............m_
|
||||||
0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x00, // ampler..........
|
0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, // sampler.........
|
||||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, // .....m_texture..
|
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, // ......m_texture.
|
||||||
0x00, 0x05, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .....)...s_texCo
|
0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ......)...s_texC
|
||||||
0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, // lor......+...s_t
|
0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x73, 0x5f, // olor......+...s_
|
||||||
0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x00, // exColorSampler..
|
0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, // texColorSampler.
|
||||||
0x00, 0x05, 0x00, 0x07, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, // .........s_texCo
|
0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // ..........s_texC
|
||||||
0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, // lorTexture......
|
0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, // olorTexture.....
|
||||||
0x00, 0x58, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, 0x06, // .X...$Global....
|
0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x00, 0x06, 0x00, // ..X...$Global...
|
||||||
0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, // .X.......u_param
|
0x06, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, // ..X.......u_para
|
||||||
0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // s........Z......
|
0x6d, 0x73, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, // ms0.......Z.....
|
||||||
0x00, 0x05, 0x00, 0x05, 0x00, 0x81, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, // .........v_color
|
0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x81, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ..........v_colo
|
||||||
0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x85, 0x00, 0x00, 0x00, 0x76, 0x5f, 0x74, // 0............v_t
|
0x72, 0x30, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x85, 0x00, 0x00, 0x00, 0x76, 0x5f, // r0............v_
|
||||||
0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x90, 0x00, 0x00, // excoord0........
|
0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, 0x90, 0x00, // texcoord0.......
|
||||||
0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, 0x00, // .bgfx_FragData0.
|
0x00, 0x00, 0x62, 0x67, 0x66, 0x78, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x30, // ..bgfx_FragData0
|
||||||
0x00, 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G......."......
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G.......".....
|
||||||
0x00, 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G.......!......
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G.......!.....
|
||||||
0x00, 0x48, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, // .H...X.......#..
|
0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, // ..H...X.......#.
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // .....G...X......
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x02, 0x00, // ......G...X.....
|
||||||
0x00, 0x47, 0x00, 0x04, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G...Z..."......
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...Z...".....
|
||||||
0x00, 0x47, 0x00, 0x04, 0x00, 0x81, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G..............
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G...Z...!.....
|
||||||
0x00, 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // .G..............
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x81, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G.............
|
||||||
0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .G..............
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, // ..G.............
|
||||||
0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, // .........!......
|
0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, // ..G.............
|
||||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, // ................
|
0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, // ..........!.....
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, // ..... ..........
|
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, // ................
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x08, 0x00, // ...... .........
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, // ................
|
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||||
0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, // ................
|
||||||
0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................
|
0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x00, // ................
|
||||||
0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, // ................
|
0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, // ................
|
||||||
0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // . ........... ..
|
0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, // ................
|
||||||
0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .(...........;..
|
0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, // .. ........... .
|
||||||
0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .(...)....... ..
|
0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..(...........;.
|
||||||
0x00, 0x2a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .*...........;..
|
0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, // ..(...)....... .
|
||||||
0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .*...+....... ..
|
0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..*...........;.
|
||||||
0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .-...........;..
|
0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, // ..*...+....... .
|
||||||
0x00, 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // .-..............
|
0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..-...........;.
|
||||||
0x00, 0x31, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .1... .......+..
|
0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, // ..-.............
|
||||||
0x00, 0x31, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, // .1...6..........
|
0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..1... .......+.
|
||||||
0x00, 0x3a, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // .:.......+......
|
0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, // ..1...6.........
|
||||||
0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, // .O.......,......
|
0x03, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, // ..:.......+.....
|
||||||
0x00, 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, // .S...O...O...O..
|
0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, // ..O.......,.....
|
||||||
0x00, 0x4f, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, // .O...+.......U..
|
0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4f, 0x00, // ..S...O...O...O.
|
||||||
0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, // ....?,.......V..
|
0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x55, 0x00, // ..O...+.......U.
|
||||||
0x00, 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, // .U...U...U...U..
|
0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x56, 0x00, // .....?,.......V.
|
||||||
0x00, 0x1e, 0x00, 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .....X....... ..
|
0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, // ..U...U...U...U.
|
||||||
0x00, 0x59, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .Y.......X...;..
|
0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, // ......X....... .
|
||||||
0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, // .Y...Z..........
|
0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..Y.......X...;.
|
||||||
0x00, 0x61, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .a... .......+..
|
0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, // ..Y...Z.........
|
||||||
0x00, 0x61, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // .a...b....... ..
|
0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..a... .......+.
|
||||||
0x00, 0x63, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, // .c...........+..
|
0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, // ..a...b....... .
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x00, 0x04, // .....l......? ..
|
0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, // ..c...........+.
|
||||||
0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .............;..
|
0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x00, // ......l......? .
|
||||||
0x00, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. ..
|
0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;.
|
||||||
0x00, 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // ......... ...;..
|
0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. .
|
||||||
0x00, 0x84, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, // ............. ..
|
0x04, 0x00, 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3b, 0x00, // .......... ...;.
|
||||||
0x00, 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, // .............;..
|
0x04, 0x00, 0x84, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, // .............. .
|
||||||
0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, // .............6..
|
0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3b, 0x00, // ..............;.
|
||||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // ................
|
0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, // ..............6.
|
||||||
0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, // .........=......
|
0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................
|
||||||
0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, // .,...+...=......
|
0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, // ..........=.....
|
||||||
0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, // ./.......P......
|
0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x08, 0x00, // ..,...+...=.....
|
||||||
0x00, 0x30, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, // .0...,.../...>..
|
0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x09, 0x00, // ../.......P.....
|
||||||
0x00, 0x29, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, // .)...0...=... ..
|
0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..0...,.../...>.
|
||||||
0x00, 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, // .........=......
|
0x03, 0x00, 0x29, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, // ..)...0...=... .
|
||||||
0x00, 0xb3, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, // .....)...Q......
|
0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, // ..........=.....
|
||||||
0x00, 0xe0, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, // .............Q..
|
0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, // ......)...Q.....
|
||||||
0x00, 0x08, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................
|
0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, // ..............Q.
|
||||||
0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, // .O..............
|
0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||||
0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, // .............A..
|
0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x86, 0x00, // ..O.............
|
||||||
0x00, 0x63, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, // .c.......Z...6..
|
0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, // ..............A.
|
||||||
0x00, 0x62, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, // .b...=..........
|
0x06, 0x00, 0x63, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x36, 0x00, // ..c.......Z...6.
|
||||||
0x00, 0xb6, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, // .....V...:......
|
0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb8, 0x00, // ..b...=.........
|
||||||
0x00, 0xe1, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, // .........X......
|
0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x56, 0x00, 0x05, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xd6, 0x00, // ......V...:.....
|
||||||
0x00, 0xd8, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................
|
0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x58, 0x00, 0x07, 0x00, 0x0e, 0x00, // ..........X.....
|
||||||
0x00, 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, // .....Q..........
|
0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x02, 0x00, // ................
|
||||||
0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, // ................
|
0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xba, 0x00, // ......Q.........
|
||||||
0x00, 0xbb, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, // ................
|
0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x04, 0x00, 0x07, 0x00, // ................
|
||||||
0x00, 0xbe, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, // .....l..........
|
0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x07, 0x00, // ................
|
||||||
0x00, 0x07, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, // .........l......
|
0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x81, 0x00, // ......l.........
|
||||||
0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................
|
0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xbc, 0x00, // ..........l.....
|
||||||
0x00, 0x31, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, // .1..............
|
0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||||
0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................
|
0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xba, 0x00, // ..1.............
|
||||||
0x00, 0x2b, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, // .+.......O...U..
|
0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||||
0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, // .P..............
|
0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x55, 0x00, // ..+.......O...U.
|
||||||
0x00, 0xc4, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, // ................
|
0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc5, 0x00, // ..P.............
|
||||||
0x00, 0x0e, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, // ................
|
0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x0c, 0x00, // ................
|
||||||
0x00, 0x53, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, // .S...V.......>..
|
0x08, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, // ................
|
||||||
0x00, 0x90, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, // .............8..
|
0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..S...V.......>.
|
||||||
0x00, 0x00, 0x00, 0x10, 0x00, // .....
|
0x03, 0x00, 0x90, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, // ..............8.
|
||||||
|
0x01, 0x00, 0x00, 0x00, 0x10, 0x00, // ......
|
||||||
};
|
};
|
||||||
static const uint8_t fs_texture_sdf_dx9[535] =
|
static const uint8_t fs_texture_sdf_dx9[536] =
|
||||||
{
|
{
|
||||||
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s
|
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x73, // FSH............s
|
||||||
0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x08, // _texColor0......
|
0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x09, // _texColor0......
|
||||||
0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0xe4, 0x01, // u_params........
|
0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x01, 0x00, 0x00, 0x01, 0x00, 0xe4, // u_params0.......
|
||||||
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ........,.CTAB..
|
0x01, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, // .........,.CTAB.
|
||||||
0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, // ................
|
0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, // ................
|
||||||
0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, // ......|...D.....
|
0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, // .......|...D....
|
||||||
0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, // ......P.......`.
|
0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, // .......P.......`
|
||||||
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........l.....
|
0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, // ...........l....
|
||||||
0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, // ..s_texColor....
|
0x00, 0x00, 0x00, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0x04, // ...s_texColor...
|
||||||
0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_
|
0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, // ...............u
|
||||||
0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0xab, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, // params..........
|
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x00, 0xab, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, // _params0........
|
||||||
0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, // ..........ps_3_0
|
0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, // ...........ps_3_
|
||||||
0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H
|
0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, // 0.Microsoft (R)
|
||||||
0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi
|
0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, // HLSL Shader Comp
|
||||||
0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, 0x00, // ler 10.1..Q.....
|
0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x01, // iler 10.1..Q....
|
||||||
0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, // .....?.......?..
|
0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, // ......?.......?.
|
||||||
0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, // ..Q.............
|
0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0xc0, 0x00, // ...Q............
|
||||||
0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, // @@..............
|
0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x05, // .@@.............
|
||||||
0x00, 0x80, 0x00, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, // ................
|
0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, // ................
|
||||||
0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xd0, 0xa0, 0x00, 0x00, // ................
|
0x08, 0x0f, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, 0xd0, 0xa0, 0x00, // ................
|
||||||
0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x5f, 0x00, // .............._.
|
0x00, 0xc4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x5f, // ..............._
|
||||||
0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x5b, 0x00, // ..............[.
|
0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x08, 0xe4, 0xa0, 0x5b, // ...............[
|
||||||
0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x5c, 0x00, 0x00, 0x02, 0x00, 0x00, // ................
|
0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x5c, 0x00, 0x00, 0x02, 0x00, // ................
|
||||||
0x04, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // ................
|
0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, // ................
|
||||||
0xaa, 0x8b, 0x00, 0x00, 0x55, 0x8b, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, // ....U...........
|
0x00, 0xaa, 0x8b, 0x00, 0x00, 0x55, 0x8b, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, // .....U..........
|
||||||
0x55, 0x80, 0x01, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // U...............
|
0x00, 0x55, 0x80, 0x01, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, // .U..............
|
||||||
0x55, 0x81, 0x01, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x05, 0x80, 0x00, 0x00, // U...............
|
0x00, 0x55, 0x81, 0x01, 0x00, 0xaa, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x05, 0x80, 0x00, // .U..............
|
||||||
0x55, 0x81, 0x00, 0x00, 0xe4, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, // U...............
|
0x00, 0x55, 0x81, 0x00, 0x00, 0xe4, 0x80, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, // .U..............
|
||||||
0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, 0x00, // ............U...
|
0x00, 0xaa, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x55, 0x80, 0x00, // .............U..
|
||||||
0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, // ................
|
0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x80, 0x02, // ................
|
||||||
0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ....U...........
|
0x00, 0x00, 0xa0, 0x02, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, // .....U..........
|
||||||
0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, // ................
|
0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, // ................
|
||||||
0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x1f, 0x80, 0x00, 0x00, // ....U...........
|
0x00, 0x00, 0x80, 0x00, 0x00, 0x55, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x1f, 0x80, 0x00, // .....U..........
|
||||||
0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // .......
|
0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ........
|
||||||
};
|
};
|
||||||
static const uint8_t fs_texture_sdf_dx11[778] =
|
static const uint8_t fs_texture_sdf_dx11[779] =
|
||||||
{
|
{
|
||||||
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x75, // FSH............u
|
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u
|
||||||
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, 0x5f, // _params.......s_
|
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // _params0.......s
|
||||||
0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xd4, 0x02, // texColor0.......
|
0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0xd4, // _texColor0......
|
||||||
0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x03, 0x0d, 0x91, 0x21, 0x8e, 0x75, 0xa6, 0x21, 0xba, 0xe2, // ..DXBC...!.u.!..
|
0x02, 0x00, 0x00, 0x44, 0x58, 0x42, 0x43, 0x03, 0x0d, 0x91, 0x21, 0x8e, 0x75, 0xa6, 0x21, 0xba, // ...DXBC...!.u.!.
|
||||||
0x0d, 0xbb, 0xa4, 0xa3, 0xae, 0x51, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x03, 0x00, // .....Q..........
|
0xe2, 0x0d, 0xbb, 0xa4, 0xa3, 0xae, 0x51, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x03, // ......Q.........
|
||||||
0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...........IS
|
0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x49, // ...,...........I
|
||||||
0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, // GNl...........P.
|
0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, // SGNl...........P
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................
|
||||||
0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||||
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, // ..............b.
|
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, // ...............b
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, // ................
|
||||||
0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO
|
0x00, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, // .......SV_POSITI
|
||||||
0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, // N.COLOR.TEXCOORD
|
0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, // ON.COLOR.TEXCOOR
|
||||||
0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,.........
|
0x44, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, // D..OSGN,........
|
||||||
0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // .. .............
|
0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // ... ............
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, // ..........SV_TAR
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, // ...........SV_TA
|
||||||
0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xf8, 0x01, 0x00, 0x00, 0x40, 0x00, // GET...SHDR....@.
|
0x52, 0x47, 0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xf8, 0x01, 0x00, 0x00, 0x40, // RGET...SHDR....@
|
||||||
0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..~...Y...F. ...
|
0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, // ...~...Y...F. ..
|
||||||
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, // ......Z....`....
|
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, // .......Z....`...
|
||||||
0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, // ..X....p......UU
|
0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, // ...X....p......U
|
||||||
0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, // ..b...2.......e.
|
0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, // U..b...2.......e
|
||||||
0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, // ... ......h.....
|
0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, // .... ......h....
|
||||||
0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, // ..H...........F.
|
0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...H...........F
|
||||||
0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, // ......F~.......`
|
0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......F~.......
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ .......
|
0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // `........ ......
|
||||||
0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, // ......".........
|
0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ......."........
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, // ..........B.....
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x00, // ...........B....
|
||||||
0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x22, 0x00, // ..............".
|
0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x22, // ..............."
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, // ......*.........
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, // .......*........
|
||||||
0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||||
0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, // ..B.............
|
0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, // ...B............
|
||||||
0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, // ...@.....?....".
|
0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x22, // ....@.....?...."
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........A.....
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // ...........A....
|
||||||
0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x52, 0x00, // ...@.....?....R.
|
0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x52, // ....@.....?....R
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, // ......V...A.....
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, // .......V...A....
|
||||||
0x00, 0x00, 0x06, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, 0x00, // ..............".
|
0x00, 0x00, 0x00, 0x06, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0x22, // ..............."
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, // .......@.....?..
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, // ........@.....?.
|
||||||
0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, // .?...?...?*.....
|
0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x2a, 0x00, 0x10, 0x00, 0x00, // ..?...?...?*....
|
||||||
0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, // ..8 ............
|
0x00, 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, // ...8 ...........
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, // ..............2.
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, // ...............2
|
||||||
0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, // ..".............
|
0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ..."............
|
||||||
0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, // ...@.......@....
|
0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00, // ....@.......@...
|
||||||
0x40, 0x40, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, // @@8.............
|
0x00, 0x40, 0x40, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // .@@8............
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, // ..............8.
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ...............8
|
||||||
0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, // ................
|
0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, // ................
|
||||||
0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x0a, 0xf2, 0x20, // ..........3....
|
0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x0a, 0xf2, // ...........3....
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, // ...............@
|
0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // ...............
|
||||||
0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, // .....?...?...?..
|
0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, // @.....?...?...?.
|
||||||
0x80, 0x3f, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // .?>.......
|
0x00, 0x80, 0x3f, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, // ..?>.......
|
||||||
};
|
};
|
||||||
static const uint8_t fs_texture_sdf_mtl[979] =
|
static const uint8_t fs_texture_sdf_mtl[1014] =
|
||||||
{
|
{
|
||||||
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, // FSH.............
|
0x46, 0x53, 0x48, 0x06, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x75, // FSH............u
|
||||||
0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac
|
0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x73, // _params0.......s
|
||||||
0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct
|
0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xc2, // _texColor.......
|
||||||
0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp
|
0x03, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, // ...using namespa
|
||||||
0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, // ut {. float3 v_
|
0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // ce metal;.struct
|
||||||
0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, // texcoord0;.};.st
|
0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, // xlatMtlShaderIn
|
||||||
0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ruct xlatMtlShad
|
0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, // put {. float3 v
|
||||||
0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // erOutput {. flo
|
0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, // _texcoord0;.};.s
|
||||||
0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // at4 gl_FragColor
|
0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // truct xlatMtlSha
|
||||||
0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ;.};.struct xlat
|
0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // derOutput {. fl
|
||||||
0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // MtlShaderUniform
|
0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, // oat4 gl_FragColo
|
||||||
0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, 0x61, // {. float4 u_pa
|
0x72, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, // r;.};.struct xla
|
||||||
0x72, 0x61, 0x6d, 0x73, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, // rams;.};.fragmen
|
0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, // tMtlShaderUnifor
|
||||||
0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // t xlatMtlShaderO
|
0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x70, // m {. float4 u_p
|
||||||
0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, // utput xlatMtlMai
|
0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, // arams0;.};.fragm
|
||||||
0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // n (xlatMtlShader
|
0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // ent xlatMtlShade
|
||||||
0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, // Input _mtl_i [[s
|
0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // rOutput xlatMtlM
|
||||||
0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, // tage_in]], const
|
0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ain (xlatMtlShad
|
||||||
0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // ant xlatMtlShade
|
0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, // erInput _mtl_i [
|
||||||
0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // rUniform& _mtl_u
|
0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, // [stage_in]], con
|
||||||
0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x0a, 0x20, // [[buffer(0)]].
|
0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // stant xlatMtlSha
|
||||||
0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, // , texture2d<f
|
0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // derUniform& _mtl
|
||||||
0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // loat> s_texColor
|
0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, // _u [[buffer(0)]]
|
||||||
0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x2c, // [[texture(0)]],
|
0x0a, 0x20, 0x20, 0x2c, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, // . , texture2d
|
||||||
0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, // sampler _mtlsmp
|
0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // <float> s_texCol
|
||||||
0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x73, 0x61, // _s_texColor [[sa
|
0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x30, 0x29, 0x5d, // or [[texture(0)]
|
||||||
0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, // mpler(0)]]).{.
|
0x5d, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x73, // ], sampler _mtls
|
||||||
0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, // xlatMtlShaderOut
|
0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, // mp_s_texColor [[
|
||||||
0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // put _mtl_o;. fl
|
0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, // sampler(0)]]).{.
|
||||||
0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // oat4 tmpvar_1 =
|
0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, // xlatMtlShaderO
|
||||||
0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, // 0;. tmpvar_1 =
|
0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, // utput _mtl_o;.
|
||||||
0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, // s_texColor.sampl
|
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, // float4 tmpvar_1
|
||||||
0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, // e(_mtlsmp_s_texC
|
0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, // = 0;. tmpvar_1
|
||||||
0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x5f, // olor, (float2)(_
|
0x3d, 0x20, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, 0x6d, // = s_texColor.sam
|
||||||
0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // mtl_i.v_texcoord
|
0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, 0x65, // ple(_mtlsmp_s_te
|
||||||
0x30, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, 0x6d, 0x74, // 0.xy), level(_mt
|
0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, // xColor, (float2)
|
||||||
0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x78, 0x29, 0x29, // l_u.u_params.x))
|
0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // (_mtl_i.v_texcoo
|
||||||
0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ;. float tmpvar
|
0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x5f, // rd0.xy), level(_
|
||||||
0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // _2 = 0;. tmpvar
|
0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x30, 0x2e, // mtl_u.u_params0.
|
||||||
0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x66, 0x64, 0x78, 0x28, 0x74, // _2 = (abs(dfdx(t
|
0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, // x));. float tmp
|
||||||
0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, // mpvar_1.x)) + ab
|
0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // var_2 = 0;. tmp
|
||||||
0x73, 0x28, 0x64, 0x66, 0x64, 0x79, 0x28, 0x2d, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // s(dfdy(-tmpvar_1
|
0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x64, 0x66, 0x64, // var_2 = (abs(dfd
|
||||||
0x2e, 0x78, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, // .x)));. float e
|
0x78, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x29, 0x29, 0x20, 0x2b, // x(tmpvar_1.x)) +
|
||||||
0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, // dge0_3 = 0;. ed
|
0x20, 0x61, 0x62, 0x73, 0x28, 0x64, 0x66, 0x64, 0x79, 0x28, 0x2d, 0x74, 0x6d, 0x70, 0x76, 0x61, // abs(dfdy(-tmpva
|
||||||
0x67, 0x65, 0x30, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, // ge0_3 = (0.5 - t
|
0x72, 0x5f, 0x31, 0x2e, 0x78, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // r_1.x)));. floa
|
||||||
0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // mpvar_2);. floa
|
0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, // t edge0_3 = 0;.
|
||||||
0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, // t tmpvar_4 = 0;.
|
0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, // edge0_3 = (0.5
|
||||||
0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, // tmpvar_4 = cla
|
0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, // - tmpvar_2);. f
|
||||||
0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // mp (((tmpvar_1.x
|
0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, // loat tmpvar_4 =
|
||||||
0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x0a, // - edge0_3) / (.
|
0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, // 0;. tmpvar_4 =
|
||||||
0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // (0.5 + tmpva
|
0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // clamp (((tmpvar_
|
||||||
0x72, 0x5f, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // r_2). - edge0_
|
0x31, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x33, 0x29, 0x20, 0x2f, // 1.x - edge0_3) /
|
||||||
0x33, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // 3)), 0.0, 1.0);.
|
0x20, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, // (. (0.5 + tm
|
||||||
0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, // _mtl_o.gl_Frag
|
0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, // pvar_2). - edg
|
||||||
0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x63, // Color = float4(c
|
0x65, 0x30, 0x5f, 0x33, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, // e0_3)), 0.0, 1.0
|
||||||
0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, // lamp ((tmpvar_4
|
0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, // );. _mtl_o.gl_F
|
||||||
0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x2a, 0x20, 0x0a, 0x20, // * (tmpvar_4 * .
|
0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // ragColor = float
|
||||||
0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, // (3.0 - (2.0 *
|
0x34, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x28, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // 4(clamp ((tmpvar
|
||||||
0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, // tmpvar_4)). ))
|
0x5f, 0x34, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x2a, // _4 * (tmpvar_4 *
|
||||||
0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, // , 0.0, 1.0));.
|
0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x32, 0x2e, // . (3.0 - (2.
|
||||||
0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, // return _mtl_o;.}
|
0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x29, 0x0a, 0x20, // 0 * tmpvar_4)).
|
||||||
0x0a, 0x0a, 0x00, // ...
|
0x20, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, // )), 0.0, 1.0));
|
||||||
|
0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // . return _mtl_o
|
||||||
|
0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}...
|
||||||
};
|
};
|
||||||
extern const uint8_t* fs_texture_sdf_pssl;
|
extern const uint8_t* fs_texture_sdf_pssl;
|
||||||
extern const uint32_t fs_texture_sdf_pssl_size;
|
extern const uint32_t fs_texture_sdf_pssl_size;
|
||||||
|
@ -114,6 +114,18 @@ struct Geometry
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct Output
|
||||||
|
{
|
||||||
|
enum Enum
|
||||||
|
{
|
||||||
|
sRGB,
|
||||||
|
scRGB,
|
||||||
|
HDR10,
|
||||||
|
|
||||||
|
Count
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
static const InputBinding s_bindingApp[] =
|
static const InputBinding s_bindingApp[] =
|
||||||
{
|
{
|
||||||
{ entry::Key::KeyQ, entry::Modifier::None, 1, NULL, "exit" },
|
{ entry::Key::KeyQ, entry::Modifier::None, 1, NULL, "exit" },
|
||||||
@ -217,6 +229,7 @@ struct View
|
|||||||
{
|
{
|
||||||
View()
|
View()
|
||||||
: m_cubeMapGeo(Geometry::Quad)
|
: m_cubeMapGeo(Geometry::Quad)
|
||||||
|
, m_outputFormat(Output::sRGB)
|
||||||
, m_fileIndex(0)
|
, m_fileIndex(0)
|
||||||
, m_scaleFn(0)
|
, m_scaleFn(0)
|
||||||
, m_mip(0)
|
, m_mip(0)
|
||||||
@ -586,6 +599,46 @@ struct View
|
|||||||
m_cubeMapGeo = Geometry::Enum( (m_cubeMapGeo + 1) % Geometry::Count);
|
m_cubeMapGeo = Geometry::Enum( (m_cubeMapGeo + 1) % Geometry::Count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (0 == bx::strCmp(_argv[1], "output") )
|
||||||
|
{
|
||||||
|
Output::Enum outputPrev = m_outputFormat;
|
||||||
|
if (_argc >= 3)
|
||||||
|
{
|
||||||
|
if (0 == bx::strCmp(_argv[2], "srgb") )
|
||||||
|
{
|
||||||
|
m_outputFormat = Output::sRGB;
|
||||||
|
}
|
||||||
|
else if (0 == bx::strCmp(_argv[2], "scrgb") )
|
||||||
|
{
|
||||||
|
m_outputFormat = Output::scRGB;
|
||||||
|
}
|
||||||
|
else if (0 == bx::strCmp(_argv[2], "hdr10") )
|
||||||
|
{
|
||||||
|
m_outputFormat = Output::HDR10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_outputFormat = Output::Enum( (m_outputFormat + 1) % Output::Count);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (outputPrev != m_outputFormat)
|
||||||
|
{
|
||||||
|
bgfx::TextureFormat::Enum format = bgfx::TextureFormat::RGBA8;
|
||||||
|
uint32_t formatFlag = 0;
|
||||||
|
if (Output::scRGB == m_outputFormat)
|
||||||
|
{
|
||||||
|
format = bgfx::TextureFormat::RGBA16F;
|
||||||
|
}
|
||||||
|
else if (Output::HDR10 == m_outputFormat)
|
||||||
|
{
|
||||||
|
format = bgfx::TextureFormat::RGB10A2;
|
||||||
|
formatFlag = BGFX_RESET_HDR10;
|
||||||
|
}
|
||||||
|
|
||||||
|
bgfx::reset(m_width, m_height, BGFX_RESET_VSYNC | formatFlag, format);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (0 == bx::strCmp(_argv[1], "help") )
|
else if (0 == bx::strCmp(_argv[1], "help") )
|
||||||
{
|
{
|
||||||
m_help ^= true;
|
m_help ^= true;
|
||||||
@ -748,6 +801,7 @@ struct View
|
|||||||
|
|
||||||
bgfx::TextureInfo m_textureInfo;
|
bgfx::TextureInfo m_textureInfo;
|
||||||
Geometry::Enum m_cubeMapGeo;
|
Geometry::Enum m_cubeMapGeo;
|
||||||
|
Output::Enum m_outputFormat;
|
||||||
uint32_t m_fileIndex;
|
uint32_t m_fileIndex;
|
||||||
uint32_t m_scaleFn;
|
uint32_t m_scaleFn;
|
||||||
uint32_t m_mip;
|
uint32_t m_mip;
|
||||||
@ -1217,7 +1271,8 @@ int _main_(int _argc, char** _argv)
|
|||||||
|
|
||||||
bgfx::UniformHandle s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1);
|
bgfx::UniformHandle s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1);
|
||||||
bgfx::UniformHandle u_mtx = bgfx::createUniform("u_mtx", bgfx::UniformType::Mat4);
|
bgfx::UniformHandle u_mtx = bgfx::createUniform("u_mtx", bgfx::UniformType::Mat4);
|
||||||
bgfx::UniformHandle u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4);
|
bgfx::UniformHandle u_params0 = bgfx::createUniform("u_params0", bgfx::UniformType::Vec4);
|
||||||
|
bgfx::UniformHandle u_params1 = bgfx::createUniform("u_params1", bgfx::UniformType::Vec4);
|
||||||
|
|
||||||
bgfx::ShaderHandle vsTexture = bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_texture");
|
bgfx::ShaderHandle vsTexture = bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_texture");
|
||||||
bgfx::ShaderHandle fsTexture = bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_texture");
|
bgfx::ShaderHandle fsTexture = bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_texture");
|
||||||
@ -1440,6 +1495,31 @@ int _main_(int _argc, char** _argv)
|
|||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ImGui::BeginMenu("Output") )
|
||||||
|
{
|
||||||
|
const bool hdrCap = (bgfx::getCaps()->supported & BGFX_CAPS_HDR10);
|
||||||
|
|
||||||
|
if (ImGui::MenuItem("sRGB", NULL, Output::sRGB == view.m_outputFormat) )
|
||||||
|
{
|
||||||
|
cmdExec("view output srgb");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hdrCap)
|
||||||
|
{
|
||||||
|
if (ImGui::MenuItem("scRGB", NULL, Output::scRGB == view.m_outputFormat) )
|
||||||
|
{
|
||||||
|
cmdExec("view output scrgb");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ImGui::MenuItem("HDR10", NULL, Output::HDR10 == view.m_outputFormat) )
|
||||||
|
{
|
||||||
|
cmdExec("view output hdr10");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::EndMenu();
|
||||||
|
}
|
||||||
|
|
||||||
bool sdf = view.m_sdf;
|
bool sdf = view.m_sdf;
|
||||||
if (ImGui::MenuItem("SDF", NULL, &sdf) )
|
if (ImGui::MenuItem("SDF", NULL, &sdf) )
|
||||||
{
|
{
|
||||||
@ -2023,7 +2103,10 @@ int _main_(int _argc, char** _argv)
|
|||||||
params[1] = layer.getValue()/float(bx::max(1, view.m_textureInfo.depth >> view.m_mip) );
|
params[1] = layer.getValue()/float(bx::max(1, view.m_textureInfo.depth >> view.m_mip) );
|
||||||
}
|
}
|
||||||
|
|
||||||
bgfx::setUniform(u_params, params);
|
bgfx::setUniform(u_params0, params);
|
||||||
|
|
||||||
|
float params1[4] = { float(view.m_outputFormat), 80.0f, 0.0, 0.0f };
|
||||||
|
bgfx::setUniform(u_params1, params1);
|
||||||
|
|
||||||
const uint32_t textureFlags = 0
|
const uint32_t textureFlags = 0
|
||||||
| BGFX_SAMPLER_U_CLAMP
|
| BGFX_SAMPLER_U_CLAMP
|
||||||
@ -2103,7 +2186,8 @@ int _main_(int _argc, char** _argv)
|
|||||||
bgfx::destroy(checkerBoard);
|
bgfx::destroy(checkerBoard);
|
||||||
bgfx::destroy(s_texColor);
|
bgfx::destroy(s_texColor);
|
||||||
bgfx::destroy(u_mtx);
|
bgfx::destroy(u_mtx);
|
||||||
bgfx::destroy(u_params);
|
bgfx::destroy(u_params0);
|
||||||
|
bgfx::destroy(u_params1);
|
||||||
bgfx::destroy(textureProgram);
|
bgfx::destroy(textureProgram);
|
||||||
bgfx::destroy(textureArrayProgram);
|
bgfx::destroy(textureArrayProgram);
|
||||||
bgfx::destroy(textureCubeProgram);
|
bgfx::destroy(textureCubeProgram);
|
||||||
|
@ -1,36 +1,39 @@
|
|||||||
static const uint8_t vs_texture_glsl[396] =
|
static const uint8_t vs_texture_glsl[438] =
|
||||||
{
|
{
|
||||||
0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u
|
0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u
|
||||||
0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj..
|
0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj..
|
||||||
0x00, 0x00, 0x01, 0x00, 0x63, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // ....c...attribut
|
0x00, 0x00, 0x01, 0x00, 0x8d, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // ........attribut
|
||||||
0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // e vec4 a_color0;
|
0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, // e highp vec4 a_c
|
||||||
0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // .attribute vec3
|
0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // olor0;.attribute
|
||||||
0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr
|
0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, // highp vec3 a_po
|
||||||
0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // ibute vec3 a_tex
|
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // sition;.attribut
|
||||||
0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // coord0;.varying
|
0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x74, // e highp vec3 a_t
|
||||||
0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v
|
0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // excoord0;.varyin
|
||||||
0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec3 v_te
|
0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // g highp vec4 v_c
|
||||||
0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord0;.uniform
|
0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // olor0;.varying h
|
||||||
0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie
|
0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec3 v_texc
|
||||||
0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main
|
0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, // oord0;.uniform h
|
||||||
0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // ().{. vec4 tmp
|
0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // ighp mat4 u_mode
|
||||||
0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_
|
0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // lViewProj;.void
|
||||||
0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, // 1.zw = vec2(0.0,
|
0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, // main ().{. high
|
||||||
0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 1.0);. tmpvar_
|
0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // p vec4 tmpvar_1;
|
||||||
0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // 1.xy = a_positio
|
0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, // . tmpvar_1.zw =
|
||||||
0x6e, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, // n.xy;. gl_Posit
|
0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // vec2(0.0, 1.0);
|
||||||
0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, // ion = (u_modelVi
|
0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, // . tmpvar_1.xy =
|
||||||
0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // ewProj * tmpvar_
|
0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x3b, 0x0a, // a_position.xy;.
|
||||||
0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // 1);. v_texcoord
|
0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, // gl_Position =
|
||||||
0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, // 0 = a_texcoord0;
|
0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // (u_modelViewProj
|
||||||
0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, // . v_color0 = a_
|
0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, // * tmpvar_1);.
|
||||||
0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // color0;.}...
|
0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, // v_texcoord0 = a_
|
||||||
|
0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, // texcoord0;. v_c
|
||||||
|
0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // olor0 = a_color0
|
||||||
|
0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // ;.}...
|
||||||
};
|
};
|
||||||
static const uint8_t vs_texture_spv[1266] =
|
static const uint8_t vs_texture_spv[1282] =
|
||||||
{
|
{
|
||||||
0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u
|
0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u
|
||||||
0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj..
|
0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj..
|
||||||
0x00, 0x00, 0x04, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, // ..........#.....
|
0x00, 0x00, 0x04, 0x00, 0xd0, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, // ..........#.....
|
||||||
0x07, 0x00, 0x08, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, // ................
|
0x07, 0x00, 0x08, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, // ................
|
||||||
0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, // ............GLSL
|
0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, // ............GLSL
|
||||||
0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, // .std.450........
|
0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, // .std.450........
|
||||||
@ -59,6 +62,7 @@ static const uint8_t vs_texture_spv[1266] =
|
|||||||
0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, // %...............
|
0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, // %...............
|
||||||
0x47, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // G...%.......G...
|
0x47, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // G...%.......G...
|
||||||
0x27, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // '...".......G...
|
0x27, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // '...".......G...
|
||||||
|
0x27, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // '...!.......G...
|
||||||
0x3d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // =...........G...
|
0x3d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // =...........G...
|
||||||
0x41, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // A...........G...
|
0x41, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // A...........G...
|
||||||
0x44, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // D...........G...
|
0x44, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // D...........G...
|
||||||
@ -173,57 +177,58 @@ static const uint8_t vs_texture_dx11[586] =
|
|||||||
0x02, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, // ....F.......>...
|
0x02, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, // ....F.......>...
|
||||||
0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ........@.
|
0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, 0x40, 0x00, // ........@.
|
||||||
};
|
};
|
||||||
static const uint8_t vs_texture_mtl[775] =
|
static const uint8_t vs_texture_mtl[797] =
|
||||||
{
|
{
|
||||||
0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0xf4, 0x02, // VSH.............
|
0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u
|
||||||
0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac
|
0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj..
|
||||||
0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct
|
0x00, 0x00, 0x01, 0x00, 0xf4, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, // ........using na
|
||||||
|
0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, // mespace metal;.s
|
||||||
|
0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // truct xlatMtlSha
|
||||||
|
0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // derInput {. flo
|
||||||
|
0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, // at4 a_color0 [[a
|
||||||
|
0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, // ttribute(0)]];.
|
||||||
|
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // float3 a_positi
|
||||||
|
0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, // on [[attribute(1
|
||||||
|
0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, // )]];. float3 a_
|
||||||
|
0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, // texcoord0 [[attr
|
||||||
|
0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, // ibute(2)]];.};.s
|
||||||
|
0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // truct xlatMtlSha
|
||||||
|
0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // derOutput {. fl
|
||||||
|
0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // oat4 gl_Position
|
||||||
|
0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, // [[position]];.
|
||||||
|
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // float4 v_color0
|
||||||
|
0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // ;. float3 v_tex
|
||||||
|
0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // coord0;.};.struc
|
||||||
|
0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, // t xlatMtlShaderU
|
||||||
|
0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // niform {. float
|
||||||
|
0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // 4x4 u_modelViewP
|
||||||
|
0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, // roj;.};.vertex x
|
||||||
|
0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, // latMtlShaderOutp
|
||||||
|
0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, // ut xlatMtlMain (
|
||||||
0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp
|
0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp
|
||||||
0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // ut {. float4 a_
|
0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, // ut _mtl_i [[stag
|
||||||
0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // color0 [[attribu
|
0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, // e_in]], constant
|
||||||
0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // te(0)]];. float
|
0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, // xlatMtlShaderUn
|
||||||
0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, // 3 a_position [[a
|
0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, // iform& _mtl_u [[
|
||||||
0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, // ttribute(1)]];.
|
0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, // buffer(0)]]).{.
|
||||||
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // float3 a_texcoo
|
0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, // xlatMtlShaderOu
|
||||||
0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // rd0 [[attribute(
|
0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, // tput _mtl_o;. f
|
||||||
0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // 2)]];.};.struct
|
0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, // loat4 tmpvar_1 =
|
||||||
0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, // xlatMtlShaderOut
|
0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, // 0;. tmpvar_1.z
|
||||||
0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, // put {. float4 g
|
0x77, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, // w = float2(0.0,
|
||||||
0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, // l_Position [[pos
|
0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // 1.0);. tmpvar_1
|
||||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // ition]];. float
|
0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, // .xy = _mtl_i.a_p
|
||||||
0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // 4 v_color0;. fl
|
0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, // osition.xy;. _m
|
||||||
0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // oat3 v_texcoord0
|
0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // tl_o.gl_Position
|
||||||
0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ;.};.struct xlat
|
0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // = (_mtl_u.u_mod
|
||||||
0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // MtlShaderUniform
|
0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // elViewProj * tmp
|
||||||
0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, // {. float4x4 u_
|
0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // var_1);. _mtl_o
|
||||||
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, // modelViewProj;.}
|
0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x5f, // .v_texcoord0 = _
|
||||||
0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ;.vertex xlatMtl
|
0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // mtl_i.a_texcoord
|
||||||
0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, // ShaderOutput xla
|
0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, // 0;. _mtl_o.v_co
|
||||||
0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // tMtlMain (xlatMt
|
0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, // lor0 = _mtl_i.a_
|
||||||
0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, // lShaderInput _mt
|
0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, // color0;. return
|
||||||
0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, // l_i [[stage_in]]
|
0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _mtl_o;.}...
|
||||||
0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // , constant xlatM
|
|
||||||
0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, // tlShaderUniform&
|
|
||||||
0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, // _mtl_u [[buffer
|
|
||||||
0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // (0)]]).{. xlatM
|
|
||||||
0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, // tlShaderOutput _
|
|
||||||
0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // mtl_o;. float4
|
|
||||||
0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_1 = 0;.
|
|
||||||
0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x66, 0x6c, // tmpvar_1.zw = fl
|
|
||||||
0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, // oat2(0.0, 1.0);.
|
|
||||||
0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, // tmpvar_1.xy =
|
|
||||||
0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // _mtl_i.a_positio
|
|
||||||
0x6e, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, // n.xy;. _mtl_o.g
|
|
||||||
0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, // l_Position = (_m
|
|
||||||
0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // tl_u.u_modelView
|
|
||||||
0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, // Proj * tmpvar_1)
|
|
||||||
0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, // ;. _mtl_o.v_tex
|
|
||||||
0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, // coord0 = _mtl_i.
|
|
||||||
0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, // a_texcoord0;. _
|
|
||||||
0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, // mtl_o.v_color0 =
|
|
||||||
0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // _mtl_i.a_color0
|
|
||||||
0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // ;. return _mtl_
|
|
||||||
0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // o;.}...
|
|
||||||
};
|
};
|
||||||
extern const uint8_t* vs_texture_pssl;
|
extern const uint8_t* vs_texture_pssl;
|
||||||
extern const uint32_t vs_texture_pssl_size;
|
extern const uint32_t vs_texture_pssl_size;
|
||||||
|
@ -1,35 +1,38 @@
|
|||||||
static const uint8_t vs_texture_cube_glsl[382] =
|
static const uint8_t vs_texture_cube_glsl[424] =
|
||||||
{
|
{
|
||||||
0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u
|
0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u
|
||||||
0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj..
|
0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj..
|
||||||
0x00, 0x00, 0x01, 0x00, 0x55, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // ....U...attribut
|
0x00, 0x00, 0x01, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // ........attribut
|
||||||
0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // e vec4 a_color0;
|
0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, // e highp vec4 a_c
|
||||||
0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, // .attribute vec3
|
0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // olor0;.attribute
|
||||||
0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, // a_position;.attr
|
0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, // highp vec3 a_po
|
||||||
0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, // ibute vec3 a_tex
|
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // sition;.attribut
|
||||||
0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, // coord0;.varying
|
0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x74, // e highp vec3 a_t
|
||||||
0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, // vec4 v_color0;.v
|
0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, // excoord0;.varyin
|
||||||
0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, // arying vec3 v_te
|
0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // g highp vec4 v_c
|
||||||
0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // xcoord0;.uniform
|
0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, // olor0;.varying h
|
||||||
0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // mat4 u_modelVie
|
0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, // ighp vec3 v_texc
|
||||||
0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // wProj;.void main
|
0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, // oord0;.uniform h
|
||||||
0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // ().{. vec4 tmp
|
0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // ighp mat4 u_mode
|
||||||
0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_
|
0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, // lViewProj;.void
|
||||||
0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 1.w = 1.0;. tmp
|
0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, // main ().{. high
|
||||||
0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, // var_1.xyz = a_po
|
0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // p vec4 tmpvar_1;
|
||||||
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, // sition;. gl_Pos
|
0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, // . tmpvar_1.w =
|
||||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // ition = (u_model
|
0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // 1.0;. tmpvar_1.
|
||||||
0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ViewProj * tmpva
|
0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // xyz = a_position
|
||||||
0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // r_1);. v_texcoo
|
0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, // ;. gl_Position
|
||||||
0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // rd0 = a_texcoord
|
0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, // = (u_modelViewPr
|
||||||
0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, // 0;. v_color0 =
|
0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, // oj * tmpvar_1);.
|
||||||
0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // a_color0;.}...
|
0x20, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, // v_texcoord0 =
|
||||||
|
0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, // a_texcoord0;. v
|
||||||
|
0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // _color0 = a_colo
|
||||||
|
0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // r0;.}...
|
||||||
};
|
};
|
||||||
static const uint8_t vs_texture_cube_spv[1270] =
|
static const uint8_t vs_texture_cube_spv[1286] =
|
||||||
{
|
{
|
||||||
0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u
|
0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u
|
||||||
0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj..
|
0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj..
|
||||||
0x00, 0x00, 0x04, 0x00, 0xc4, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, // ..........#.....
|
0x00, 0x00, 0x04, 0x00, 0xd4, 0x04, 0x00, 0x00, 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, // ..........#.....
|
||||||
0x07, 0x00, 0x08, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, // ................
|
0x07, 0x00, 0x08, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, // ................
|
||||||
0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, // ............GLSL
|
0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, // ............GLSL
|
||||||
0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, // .std.450........
|
0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, // .std.450........
|
||||||
@ -58,6 +61,7 @@ static const uint8_t vs_texture_cube_spv[1270] =
|
|||||||
0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, // $...............
|
0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, // $...............
|
||||||
0x47, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // G...$.......G...
|
0x47, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // G...$.......G...
|
||||||
0x26, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // &...".......G...
|
0x26, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // &...".......G...
|
||||||
|
0x26, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // &...!.......G...
|
||||||
0x3c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // <...........G...
|
0x3c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // <...........G...
|
||||||
0x40, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // @...........G...
|
0x40, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // @...........G...
|
||||||
0x43, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // C...........G...
|
0x43, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, // C...........G...
|
||||||
@ -177,56 +181,57 @@ static const uint8_t vs_texture_cube_dx11[626] =
|
|||||||
0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, // ....>...........
|
0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x03, 0x05, 0x00, 0x01, 0x00, 0x10, 0x00, // ....>...........
|
||||||
0x40, 0x00, // @.
|
0x40, 0x00, // @.
|
||||||
};
|
};
|
||||||
static const uint8_t vs_texture_cube_mtl[759] =
|
static const uint8_t vs_texture_cube_mtl[781] =
|
||||||
{
|
{
|
||||||
0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0xe4, 0x02, // VSH.............
|
0x56, 0x53, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0f, 0x75, // VSH............u
|
||||||
0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, // ..using namespac
|
0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, // _modelViewProj..
|
||||||
0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // e metal;.struct
|
0x00, 0x00, 0x01, 0x00, 0xe4, 0x02, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, // ........using na
|
||||||
|
0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, // mespace metal;.s
|
||||||
|
0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // truct xlatMtlSha
|
||||||
|
0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // derInput {. flo
|
||||||
|
0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, // at4 a_color0 [[a
|
||||||
|
0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, // ttribute(0)]];.
|
||||||
|
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // float3 a_positi
|
||||||
|
0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, // on [[attribute(1
|
||||||
|
0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, // )]];. float3 a_
|
||||||
|
0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, // texcoord0 [[attr
|
||||||
|
0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, // ibute(2)]];.};.s
|
||||||
|
0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // truct xlatMtlSha
|
||||||
|
0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // derOutput {. fl
|
||||||
|
0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // oat4 gl_Position
|
||||||
|
0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, // [[position]];.
|
||||||
|
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // float4 v_color0
|
||||||
|
0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, // ;. float3 v_tex
|
||||||
|
0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, // coord0;.};.struc
|
||||||
|
0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, // t xlatMtlShaderU
|
||||||
|
0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // niform {. float
|
||||||
|
0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, // 4x4 u_modelViewP
|
||||||
|
0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, // roj;.};.vertex x
|
||||||
|
0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, // latMtlShaderOutp
|
||||||
|
0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, // ut xlatMtlMain (
|
||||||
0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp
|
0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp
|
||||||
0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, // ut {. float4 a_
|
0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, // ut _mtl_i [[stag
|
||||||
0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, // color0 [[attribu
|
0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, // e_in]], constant
|
||||||
0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // te(0)]];. float
|
0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, // xlatMtlShaderUn
|
||||||
0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, // 3 a_position [[a
|
0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, // iform& _mtl_u [[
|
||||||
0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, // ttribute(1)]];.
|
0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, // buffer(0)]]).{.
|
||||||
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // float3 a_texcoo
|
0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, // xlatMtlShaderOu
|
||||||
0x72, 0x64, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // rd0 [[attribute(
|
0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, // tput _mtl_o;. f
|
||||||
0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, // 2)]];.};.struct
|
0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, // loat4 tmpvar_1 =
|
||||||
0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, // xlatMtlShaderOut
|
0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, // 0;. tmpvar_1.w
|
||||||
0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, // put {. float4 g
|
0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // = 1.0;. tmpvar
|
||||||
0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, // l_Position [[pos
|
0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, // _1.xyz = _mtl_i.
|
||||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // ition]];. float
|
0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, // a_position;. _m
|
||||||
0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // 4 v_color0;. fl
|
0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // tl_o.gl_Position
|
||||||
0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // oat3 v_texcoord0
|
0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // = (_mtl_u.u_mod
|
||||||
0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ;.};.struct xlat
|
0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, // elViewProj * tmp
|
||||||
0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // MtlShaderUniform
|
0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // var_1);. _mtl_o
|
||||||
0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, // {. float4x4 u_
|
0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x5f, // .v_texcoord0 = _
|
||||||
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, // modelViewProj;.}
|
0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // mtl_i.a_texcoord
|
||||||
0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ;.vertex xlatMtl
|
0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, // 0;. _mtl_o.v_co
|
||||||
0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, // ShaderOutput xla
|
0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, // lor0 = _mtl_i.a_
|
||||||
0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // tMtlMain (xlatMt
|
0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, // color0;. return
|
||||||
0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, // lShaderInput _mt
|
0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _mtl_o;.}...
|
||||||
0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, // l_i [[stage_in]]
|
|
||||||
0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // , constant xlatM
|
|
||||||
0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, // tlShaderUniform&
|
|
||||||
0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, // _mtl_u [[buffer
|
|
||||||
0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // (0)]]).{. xlatM
|
|
||||||
0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, // tlShaderOutput _
|
|
||||||
0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // mtl_o;. float4
|
|
||||||
0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, // tmpvar_1 = 0;.
|
|
||||||
0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, // tmpvar_1.w = 1.0
|
|
||||||
0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, // ;. tmpvar_1.xyz
|
|
||||||
0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // = _mtl_i.a_posi
|
|
||||||
0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, // tion;. _mtl_o.g
|
|
||||||
0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, // l_Position = (_m
|
|
||||||
0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // tl_u.u_modelView
|
|
||||||
0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, // Proj * tmpvar_1)
|
|
||||||
0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, // ;. _mtl_o.v_tex
|
|
||||||
0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, // coord0 = _mtl_i.
|
|
||||||
0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x5f, // a_texcoord0;. _
|
|
||||||
0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x20, 0x3d, // mtl_o.v_color0 =
|
|
||||||
0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // _mtl_i.a_color0
|
|
||||||
0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // ;. return _mtl_
|
|
||||||
0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // o;.}...
|
|
||||||
};
|
};
|
||||||
extern const uint8_t* vs_texture_cube_pssl;
|
extern const uint8_t* vs_texture_cube_pssl;
|
||||||
extern const uint32_t vs_texture_cube_pssl_size;
|
extern const uint32_t vs_texture_cube_pssl_size;
|
||||||
|
Loading…
Reference in New Issue
Block a user