fruit moment

This commit is contained in:
lachrymal 2023-04-06 19:50:37 -04:00
parent 0b6096afd5
commit 93b8864834
8 changed files with 62 additions and 45 deletions

View file

@ -3,11 +3,11 @@
#include "Graphics.h" #include "Graphics.h"
#include "Track.h" #include "Track.h"
#include <SDL2/SDL.h> #include <SDL.h>
#include <SDL2/SDL_main.h> #include <SDL_main.h>
#include <SDL2/SDL_timer.h> #include <SDL_timer.h>
#include <bx/math.h> #include <bx/math.h>
#include <SDL2/SDL_syswm.h> #include <SDL_syswm.h>
#include <bgfx/bgfx.h> #include <bgfx/bgfx.h>
#include <bgfx/platform.h> #include <bgfx/platform.h>
@ -114,6 +114,7 @@ namespace ADVect {
bgfxInit.platformData.nwh = wmi.info.win.window; bgfxInit.platformData.nwh = wmi.info.win.window;
#elif BX_PLATFORM_OSX #elif BX_PLATFORM_OSX
bgfxInit.platformData.nwh = wmi.info.cocoa.window; bgfxInit.platformData.nwh = wmi.info.cocoa.window;
bgfx::renderFrame();
#elif BX_PLATFORM_LINUX #elif BX_PLATFORM_LINUX
bgfxInit.platformData.ndt = wmi.info.x11.display; bgfxInit.platformData.ndt = wmi.info.x11.display;
bgfxInit.platformData.nwh = (void*)(uintptr_t)wmi.info.x11.window; bgfxInit.platformData.nwh = (void*)(uintptr_t)wmi.info.x11.window;
@ -270,7 +271,8 @@ namespace ADVect {
} }
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
std::filesystem::current_path("E:\\Archive\\Projects\\NouVeL\\ADVect\\runtime"); // std::filesystem::current_path("E:\\Archive\\Projects\\NouVeL\\ADVect\\runtime");
std::filesystem::current_path("/Users/lachrymal/Projects/NouVeL/ADVect/runtime/");
NVL::Environment::ENVIRONMENT.enter({ NVL::Environment::ENVIRONMENT.enter({
{ {
@ -311,8 +313,10 @@ int main(int argc, char* argv[]) {
}*/ }*/
if (name == "BG") if (name == "BG")
bg.change(current_time, ADVect::Graphics::GetImageTextureFromFile(NVL::to_std_string(std::get<NVL::String>(NVL::Environment::Variable(args[1]).value))), 200); bg.change(current_time, ADVect::Graphics::GetImageTextureFromFile(NVL::to_std_string(std::get<NVL::String>(NVL::Environment::Variable(args[1]).value))), 200);
// bg.current = ADVect::Graphics::GetImageTextureFromFile(NVL::to_std_string(std::get<NVL::String>(NVL::Environment::Variable(args[1]).value)));
else if (name == "Avatar") else if (name == "Avatar")
avatar.change(current_time, ADVect::Graphics::GetImageTextureFromFile(NVL::to_std_string(std::get<NVL::String>(NVL::Environment::Variable(args[1]).value))), 200); avatar.change(current_time, ADVect::Graphics::GetImageTextureFromFile(NVL::to_std_string(std::get<NVL::String>(NVL::Environment::Variable(args[1]).value))), 200);
// avatar.current = ADVect::Graphics::GetImageTextureFromFile(NVL::to_std_string(std::get<NVL::String>(NVL::Environment::Variable(args[1]).value)));
else if (name == "BGDialogue") else if (name == "BGDialogue")
dialogue_bg.current = ADVect::Graphics::GetImageTextureFromFile(NVL::to_std_string(std::get<NVL::String>(NVL::Environment::Variable(args[1]).value))); dialogue_bg.current = ADVect::Graphics::GetImageTextureFromFile(NVL::to_std_string(std::get<NVL::String>(NVL::Environment::Variable(args[1]).value)));
else else

View file

@ -14,6 +14,10 @@ add_subdirectory("ext/bgfx")
if (WIN32) if (WIN32)
include_directories("include_windows") include_directories("include_windows")
target_link_libraries (Game PRIVATE ${PROJECT_SOURCE_DIR}/lib/SDL2.lib ${PROJECT_SOURCE_DIR}/lib/SDL2main.lib NVL freetype bgfx bx) target_link_libraries (Game PRIVATE ${PROJECT_SOURCE_DIR}/lib/SDL2.lib ${PROJECT_SOURCE_DIR}/lib/SDL2main.lib NVL freetype bgfx bx)
elseif (APPLE)
set_target_properties(Game PROPERTIES XCODE_ATTRIBUTE_ENABLE_BITCODE "NO")
find_package(SDL2 REQUIRED)
target_link_libraries (Game PRIVATE NVL freetype bgfx bx SDL2::SDL2)
else () else ()
find_package(SDL2 REQUIRED) find_package(SDL2 REQUIRED)
target_link_libraries (Game PRIVATE NVL freetype bgfx bx SDL2::SDL2 SDL2::SDL2main) target_link_libraries (Game PRIVATE NVL freetype bgfx bx SDL2::SDL2 SDL2::SDL2main)

View file

@ -1,6 +1,6 @@
#pragma once #pragma once
#include <SDL2/SDL.h> #include <SDL.h>
#include <bgfx/bgfx.h> #include <bgfx/bgfx.h>

View file

@ -36,21 +36,28 @@ namespace ADVect {
template <typename T, bool UsePointer, bool IsNamed, bool IsVisual, bool IsVisualFill, bool HasTransition> template <typename T, bool UsePointer, bool IsNamed, bool IsVisual, bool IsVisualFill, bool HasTransition>
struct Track { struct Track {
std::conditional_t<UsePointer, T*, T> current{}; std::conditional_t<UsePointer, T*, T> current{};
[[no_unique_address]] std::conditional_t<IsNamed, std::string, std::monostate> name{}; // [[no_unique_address]] std::conditional_t<IsNamed, std::string, std::monostate> name{};
std::conditional_t<IsNamed, std::string, std::monostate> name{};
// Visual // Visual
[[no_unique_address]] std::conditional_t<IsVisual, i32, std::monostate> pos_x{}, pos_y{}; // [[no_unique_address]] std::conditional_t<IsVisual, i32, std::monostate> pos_x{}, pos_y{};
[[no_unique_address]] std::conditional_t<IsVisual, u32, std::monostate> w{}, h{}; // [[no_unique_address]] std::conditional_t<IsVisual, u32, std::monostate> w{}, h{};
[[no_unique_address]] std::conditional_t<IsVisual, f32, std::monostate> opacity{}; // [[no_unique_address]] std::conditional_t<IsVisual, f32, std::monostate> opacity{};
std::conditional_t<IsVisual, i32, std::monostate> pos_x{}, pos_y{};
std::conditional_t<IsVisual, u32, std::monostate> w{}, h{};
std::conditional_t<IsVisual, f32, std::monostate> opacity{};
// TODO other transforms // TODO other transforms
// Fill // Fill
static_assert(IsVisual || !IsVisualFill, "Track cannot have fill unless visual"); static_assert(IsVisual || !IsVisualFill, "Track cannot have fill unless visual");
[[no_unique_address]] std::conditional_t<IsVisualFill, u32, std::monostate> fill{}; // [[no_unique_address]] std::conditional_t<IsVisualFill, u32, std::monostate> fill{};
std::conditional_t<IsVisualFill, u32, std::monostate> fill{};
// Transition, with assumption that we need to access the original when transition is underway // Transition, with assumption that we need to access the original when transition is underway
[[no_unique_address]] std::conditional_t<HasTransition, std::conditional_t<UsePointer, T*, T>, std::monostate> next{}; // [[no_unique_address]] std::conditional_t<HasTransition, std::conditional_t<UsePointer, T*, T>, std::monostate> next{};
[[no_unique_address]] std::conditional_t<HasTransition, Varying<f32>, std::monostate> transition{}; // [[no_unique_address]] std::conditional_t<HasTransition, Varying<f32>, std::monostate> transition{};
std::conditional_t<HasTransition, std::conditional_t<UsePointer, T*, T>, std::monostate> next{};
std::conditional_t<HasTransition, Varying<f32>, std::monostate> transition{};
void check(u64 current_time) requires HasTransition { void check(u64 current_time) requires HasTransition {
if constexpr (UsePointer) { if constexpr (UsePointer) {
if (next != nullptr && transition.check(current_time)) { if (next != nullptr && transition.check(current_time)) {
@ -126,7 +133,7 @@ namespace ADVect {
ADVect::Graphics::DrawTextureImageAlpha(*t.next, t.pos_x, t.pos_y, t.transition.get(current_time)); ADVect::Graphics::DrawTextureImageAlpha(*t.next, t.pos_x, t.pos_y, t.transition.get(current_time));
} }
else { else {
ADVect::Graphics::DrawTextureImage(*t.current, t.pos_x, t.pos_y); ADVect::Graphics::DrawTextureImageAlpha(*t.current, t.pos_x, t.pos_y, 1.0f);
} }
} }
} }

View file

@ -1,5 +1,5 @@
BEGIN Inferno BEGIN Inferno
ImageTrack BG //ImageTrack BG
Show BG "image.png" Show BG "image.png"
<<- <<-
[] []

View file

@ -1,6 +1,6 @@
BEGIN Inferno BEGIN Inferno
ImageTrack BG // ImageTrack BG
Show BG "image.png" Show BG "image.png"
<<- <<-

View file

@ -1,4 +1,4 @@
BEGIN Scene1 BEGIN Scene1
Show BG "image.png" Show BG "image.png"
Show BGDialogue "grad.png" Show BGDialogue "grad.png"
@ -23,8 +23,7 @@ After the login screen comes up, type in the password "G00gle."
When the system reboots, you will see a prompt asking you to install a new program. When the system reboots, you will see a prompt asking you to install a new program.
Type "Y" and press ENTER. Type "Y" and press ENTER.
The Google search engine will come up. Type in "www.yahoo.com" and hit ENTER. The Google search engine will come up. Type in "www.yahoo.com" and hit ENTER.
A window will appear saying "You have successfully installed Google Chrome." Click OK. A window will appear saying "You have successfully installed Google Chrome." Click OK. A new browser will open. Log in to your Yahoo mail account.
A new browser will open. Log in to your Yahoo mail account.
Go to your inbox and click on the link to download the latest version of Google Chrome. Go to your inbox and click on the link to download the latest version of Google Chrome.
Install the update. Install the update.

View file

@ -1,33 +1,36 @@
import subprocess, os import subprocess, os
SHADERC = "..\\out\\install\\x64-Debug\\bin\\shaderc" #SHADERC = "..\\out\\install\\x64-Debug\\bin\\shaderc"
OUT = "..\\out\\build\\x64-Debug\\ADVect\\shaders\\" SHADERC = "/Users/lachrymal/Projects/NouVeL/build/ADVect/ext/bgfx/Debug/shaderc"
#OUT = "..\\out\\build\\x64-Debug\\ADVect\\shaders\\"
# OUT = "..\\build\\ADVect\\shaders\\" # OUT = "..\\build\\ADVect\\shaders\\"
OUT = "/Users/lachrymal/Projects/NouVeL/ADVect/runtime/shaders/"
P = lambda location, frag, vert: { 'location': location, 'frag': frag, 'vert': vert } P = lambda location, platform, frag, vert: { 'location': location, 'platform': platform, 'frag': frag, 'vert': vert }
plats = [ plats = [
P('glsl', '140', '140'), # P('glsl', 'windows', '140', '140'),
P('dx11', 'ps_5_0', 'vs_5_0'), # P('dx11', 'windows', 'ps_5_0', 'vs_5_0'),
P('spirv', 'spirv', 'spirv') # P('spirv', 'windows', 'spirv', 'spirv'),
P('metal', 'osx', 'metal', 'metal')
] ]
for root, dirs, _ in os.walk('shaders'): for root, dirs, _ in os.walk('shaders'):
for name in dirs: for name in dirs:
for config in plats: for config in plats:
subprocess.run([SHADERC, "-f", os.path.join(root, name, name + '.frag'), subprocess.run([SHADERC, "-f", os.path.join(root, name, name + '.frag'),
"--type", "fragment" "--type", "fragment",
"--platform", "windows", "--platform", config['platform'],
"--profile", config['frag'], "--profile", config['frag'],
"--varyingdef", os.path.join(root, name, "varying.def.sc"), "--varyingdef", os.path.join(root, name, "varying.def.sc"),
"-i", "ext\\bgfx\\bgfx\\examples\\common", "-i", "/Users/lachrymal/Projects/NouVeL/ADVect/ext/bgfx/bgfx/examples/common",
"-i", "ext\\bgfx\\bgfx\\src", "-i", "/Users/lachrymal/Projects/NouVeL/ADVect/ext/bgfx/bgfx/src",
"-o", OUT + config['location'] + "\\" + name + ".frag.bin"]) "-o", OUT + config['location'] + "\\" + name + ".frag.bin"])
subprocess.run([SHADERC, "-f", os.path.join(root, name, name + '.vert'), subprocess.run([SHADERC, "-f", os.path.join(root, name, name + '.vert'),
"--type", "vertex" "--type", "vertex",
"--platform", "windows", "--platform", config['platform'],
"--profile", config['vert'], "--profile", config['vert'],
"--varyingdef", os.path.join(root, name, "varying.def.sc"), "--varyingdef", os.path.join(root, name, "varying.def.sc"),
"-i", "ext\\bgfx\\bgfx\\examples\\common", "-i", "/Users/lachrymal/Projects/NouVeL/ADVect/ext/bgfx/bgfx/examples/common",
"-i", "ext\\bgfx\\bgfx\\src", "-i", "/Users/lachrymal/Projects/NouVeL/ADVect/ext/bgfx/bgfx/src",
"-o", OUT + config['location'] + "\\" + name + ".vert.bin"]) "-o", OUT + config['location'] + "\\" + name + ".vert.bin"])