macos stuff
parent
9499a5b9d9
commit
a739ca9b14
|
@ -14,3 +14,5 @@ demos/ports/doom/.doomrc
|
|||
*.sublime-workspace
|
||||
engine/v4k.html
|
||||
*.exe.manifest
|
||||
|
||||
v4k.osx
|
||||
|
|
|
@ -0,0 +1,272 @@
|
|||
#!/bin/bash
|
||||
|
||||
# linux + osx -----------------------------------------------------------------
|
||||
cd `dirname $0`
|
||||
|
||||
# copy demos to root folder. local changes are preserved
|
||||
# cp -n demos/*.c .
|
||||
|
||||
# rem tests
|
||||
# clang editor.c -I. -lm -lX11 -g -fsanitize=address,undefined && ./a.out
|
||||
# cl editor.c -I. -fsanitize=address /DEBUG /Zi && editor
|
||||
|
||||
# tidy environment
|
||||
if [ "$1" = "tidy" ]; then
|
||||
rm 0?-* 2> /dev/null
|
||||
rm v4k.o 2> /dev/null
|
||||
rm .art*.zip 2> /dev/null
|
||||
rm demos/lua/.art*.zip 2> /dev/null
|
||||
rm demos/lua/libv4k* 2> /dev/null
|
||||
rm demos/html5/.art*.zip 2> /dev/null
|
||||
rm v4k_*.* 2> /dev/null
|
||||
rm 3rd_*.* 2> /dev/null
|
||||
rm libv4k* 2> /dev/null
|
||||
rm -rf *.dSYM 2> /dev/null
|
||||
rm *.png 2> /dev/null
|
||||
rm *.mp4 2> /dev/null
|
||||
rm editor 2> /dev/null
|
||||
rm temp_* 2> /dev/null
|
||||
rm hello 2> /dev/null
|
||||
exit
|
||||
fi
|
||||
# shortcuts for split & join scripts
|
||||
if [ "$1" = "split" ]; then
|
||||
sh tools/split.bat
|
||||
exit
|
||||
fi
|
||||
if [ "$1" = "join" ]; then
|
||||
sh tools/join.bat
|
||||
exit
|
||||
fi
|
||||
# cook
|
||||
if [ "$1" = "cook" ]; then
|
||||
cc -o cook tools/cook.c -Iengine
|
||||
./cook
|
||||
exit
|
||||
fi
|
||||
# sync
|
||||
if [ "$1" = "sync" ]; then
|
||||
git reset --hard HEAD^1 && git pull
|
||||
sh MAKE.bat tidy
|
||||
exit
|
||||
fi
|
||||
|
||||
export dll=dll
|
||||
export build=dev
|
||||
export args=
|
||||
export cc=cc
|
||||
export app=$1
|
||||
|
||||
while [ $# -ge 1 ]; do
|
||||
if [ "$1" = "help" ]; then
|
||||
echo sh MAKE.bat
|
||||
echo sh MAKE.bat [gcc,clang,tcc] [dbg,dev,rel] [dll,static]
|
||||
echo sh MAKE.bat [tidy]
|
||||
echo sh MAKE.bat [split,join]
|
||||
echo sh MAKE.bat [cook]
|
||||
echo sh MAKE.bat [proj]
|
||||
exit
|
||||
fi
|
||||
if [ "$1" = "dll" ]; then
|
||||
export dll=dll
|
||||
fi
|
||||
if [ "$1" = "static" ]; then
|
||||
export dll=static
|
||||
fi
|
||||
if [ "$1" = "dbg" ]; then
|
||||
export build=dbg
|
||||
export flags="-O0 -g"
|
||||
fi
|
||||
if [ "$1" = "dev" ]; then
|
||||
export build=dev
|
||||
export flags="-O1 -g"
|
||||
fi
|
||||
if [ "$1" = "rel" ]; then
|
||||
export build=rel
|
||||
export flags="-O3 -DNDEBUG"
|
||||
fi
|
||||
if [ "$1" = "gcc" ]; then
|
||||
export cc=gcc
|
||||
fi
|
||||
if [ "$1" = "clang" ]; then
|
||||
export cc=clang
|
||||
fi
|
||||
if [ "$1" = "tcc" ]; then
|
||||
export cc="tcc -D__STDC_NO_VLA__"
|
||||
fi
|
||||
if [ "$1" = "proj" ]; then
|
||||
if [ "$(uname)" != "Darwin" ]; then
|
||||
chmod +x tools/premake5.linux
|
||||
tools/premake5.linux gmake
|
||||
tools/premake5.linux ninja
|
||||
exit
|
||||
fi
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
chmod +x tools/premake5.osx
|
||||
tools/premake5.osx xcode4
|
||||
tools/premake5.osx ninja
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
if [ "$1" = "--" ]; then
|
||||
shift
|
||||
export args=$*
|
||||
shift $#
|
||||
fi
|
||||
if [ $# -ge 1 ]; then
|
||||
shift
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$(uname)" != "Darwin" ]; then
|
||||
|
||||
# setup (ArchLinux)
|
||||
[ ! -f ".setup" ] && sudo pacman -S --noconfirm tcc && echo>.setup
|
||||
# setup (Debian, Ubuntu, etc)
|
||||
[ ! -f ".setup" ] && sudo apt-get -y update
|
||||
[ ! -f ".setup" ] && sudo apt-get -y install tcc libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev && echo>.setup # absolute minimum
|
||||
# sudo apt-get -y install clang xorg-dev # memorable, around 100 mib
|
||||
# sudo apt-get -y install clang xorg-dev libglfw3-dev libassimp-dev gcc # initial revision
|
||||
# sudo apt-get -y install ffmpeg || (sudo apt-get install snapd && sudo snap install ffmpeg) # variant
|
||||
|
||||
# pipeline
|
||||
#cc tools/ass2iqe.c -o tools/ass2iqe.linux -lm -ldl -lpthread -w -g -lassimp
|
||||
#cc tools/iqe2iqm.cpp -o tools/iqe2iqm.linux -lm -ldl -lpthread -w -g -lstdc++
|
||||
#cc tools/mid2wav.c -o tools/mid2wav.linux -lm -ldl -lpthread -w -g
|
||||
|
||||
# change permissions of precompiled tools binaries because of 'Permission denied' runtime error (@procedural)
|
||||
chmod +x tools/ass2iqe.linux
|
||||
chmod +x tools/cook.linux
|
||||
chmod +x tools/cuttlefish.linux
|
||||
chmod +x tools/ffmpeg.linux
|
||||
chmod +x tools/furnace.linux
|
||||
chmod +x tools/iqe2iqm.linux
|
||||
chmod +x tools/mid2wav.linux
|
||||
chmod +x tools/mod2wav.linux
|
||||
chmod +x tools/PVRTexToolCLI.linux
|
||||
chmod +x tools/sfxr2wav.linux
|
||||
chmod +x tools/xlsx2ini.linux
|
||||
chmod +x tools/premake5.linux
|
||||
chmod +x tools/ninja.linux
|
||||
chmod +x demos/lua/luajit.linux
|
||||
|
||||
export args="-lm -ldl -lpthread -lX11 -w -Iengine/ $args"
|
||||
echo build=$build, type=$dll, cc=$cc, args=$args
|
||||
|
||||
# framework (as dynamic library)
|
||||
if [ "$dll" = "dll" ]; then
|
||||
echo libv4k.so && $cc -o libv4k.so engine/v4k.c -shared -fPIC $flags $args
|
||||
cp libv4k.so demos/lua/
|
||||
export import="libv4k.so -Wl,-rpath,./"
|
||||
else
|
||||
# framework (static)
|
||||
echo v4k && $cc -c engine/v4k.c -w $flags $args
|
||||
export import=v4k.o
|
||||
fi
|
||||
|
||||
# editor
|
||||
echo editor && $cc -o editor tools/editor/editor.c $flags $import $args &
|
||||
|
||||
# demos
|
||||
echo hello && $cc -o hello hello.c $flags $args &
|
||||
echo 00-loop && $cc -o 00-loop demos/00-loop.c $flags $import $args &
|
||||
echo 00-script && $cc -o 00-script demos/00-script.c $flags $import $args &
|
||||
echo 01-demo2d && $cc -o 01-demo2d demos/01-demo2d.c $flags $import $args &
|
||||
echo 01-ui && $cc -o 01-ui demos/01-ui.c $flags $import $args &
|
||||
echo 01-easing && $cc -o 01-easing demos/01-easing.c $flags $import $args &
|
||||
echo 01-font && $cc -o 01-font demos/01-font.c $flags $import $args &
|
||||
echo 02-ddraw && $cc -o 02-ddraw demos/02-ddraw.c $flags $import $args &
|
||||
echo 02-frustum && $cc -o 02-frustum demos/02-frustum.c $flags $import $args &
|
||||
echo 03-anims && $cc -o 03-anims demos/03-anims.c $flags $import $args &
|
||||
echo 04-actor && $cc -o 04-actor demos/04-actor.c $flags $import $args &
|
||||
echo 06-scene && $cc -o 06-scene demos/06-scene.c $flags $import $args &
|
||||
echo 07-netsync && $cc -o 07-netsync demos/07-netsync.c $flags $import $args &
|
||||
echo 06-material && $cc -o 06-material demos/06-material.c $flags $import $args &
|
||||
echo 07-network && $cc -o 07-network demos/07-network.c $flags $import $args &
|
||||
echo 08-audio && $cc -o 08-audio demos/08-audio.c $flags $import $args &
|
||||
echo 08-video && $cc -o 08-video demos/08-video.c $flags $import $args &
|
||||
echo 09-cubemap && $cc -o 09-cubemap demos/09-cubemap.c $flags $import $args &
|
||||
echo 09-shadertoy && $cc -o 09-shadertoy demos/09-shadertoy.c $flags $import $args
|
||||
fi
|
||||
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
# setup (osx)
|
||||
export SDKROOT=$(xcrun --show-sdk-path)
|
||||
# brew install glfw
|
||||
|
||||
# pipeline
|
||||
#cc tools/ass2iqe.c -o tools/ass2iqe.osx -w -g -lassimp
|
||||
#cc tools/iqe2iqm.cpp -o tools/iqe2iqm.osx -w -g -lstdc++
|
||||
#cc tools/mid2wav.c -o tools/mid2wav.osx -w -g
|
||||
|
||||
# change permissions of precompiled tools binaries because of 'Permission denied' runtime error (@procedural)
|
||||
chmod +x tools/ass2iqe.osx
|
||||
chmod +x tools/cook.osx
|
||||
chmod +x tools/cuttlefish.osx
|
||||
chmod +x tools/ffmpeg.osx
|
||||
chmod +x tools/furnace.osx
|
||||
chmod +x tools/iqe2iqm.osx
|
||||
chmod +x tools/mid2wav.osx
|
||||
chmod +x tools/mod2wav.osx
|
||||
chmod +x tools/PVRTexToolCLI.osx
|
||||
chmod +x tools/sfxr2wav.osx
|
||||
chmod +x tools/xlsx2ini.osx
|
||||
chmod +x tools/premake5.osx
|
||||
chmod +x tools/ninja.osx
|
||||
chmod +x demos/lua/luajit.osx
|
||||
|
||||
export args="-w -Iengine/ -framework cocoa -framework iokit -framework CoreFoundation -framework CoreAudio -framework AudioToolbox $args"
|
||||
echo build=$build, type=$dll, cc=$cc, args=$args
|
||||
|
||||
# User-defined apps
|
||||
if [ -n "$app" ]; then
|
||||
echo "$app" && $cc -ObjC "$app" engine/v4k.c $args -o "v4k.osx" || rc=1
|
||||
fi
|
||||
|
||||
# if [ "$run" == "yes" ]; then
|
||||
# exename="$1.osx"
|
||||
# if [ -n "$other" ]; then
|
||||
# exename=$(basename "$other" .exe)
|
||||
# fi
|
||||
# echo "run $exename $run_args"
|
||||
# ./"$exename" $run_args || rc=1
|
||||
# fi
|
||||
|
||||
|
||||
# # framework (as dynamic library)
|
||||
# if [ "$dll" = "dll" ]; then
|
||||
# echo libv4k && cc -ObjC -dynamiclib -o libv4k.dylib engine/v4k.c $flags $args
|
||||
# cp libv4k.dylib demos/lua
|
||||
# export import=libv4k.dylib
|
||||
# else
|
||||
# # framework
|
||||
# echo v4k && cc -c -ObjC engine/v4k.c $flags $args
|
||||
# export import=v4k.o
|
||||
# fi
|
||||
|
||||
# # editor
|
||||
# echo editor && cc -o editor tools/editor/editor.c $import $flags $args &
|
||||
|
||||
# # demos
|
||||
# echo hello && cc -o hello -ObjC hello.c $flags $args &
|
||||
# echo 00-loop && cc -o 00-loop demos/00-loop.c $import $flags $args &
|
||||
# echo 00-script && cc -o 00-script demos/00-script.c $import $flags $args &
|
||||
# echo 01-demo2d && cc -o 01-demo2d demos/01-demo2d.c $import $flags $args &
|
||||
# echo 01-ui && cc -o 01-ui demos/01-ui.c $import $flags $args &
|
||||
# echo 01-easing && cc -o 01-easing demos/01-easing.c $import $flags $args &
|
||||
# echo 01-font && cc -o 01-font demos/01-font.c $import $flags $args &
|
||||
# echo 02-ddraw && cc -o 02-ddraw demos/02-ddraw.c $import $flags $args &
|
||||
# echo 02-frustum && cc -o 02-frustum demos/02-frustum.c $import $flags $args &
|
||||
# echo 03-anims && cc -o 03-anims demos/03-anims.c $import $flags $args &
|
||||
# echo 04-actor && cc -o 04-actor demos/04-actor.c $import $flags $args &
|
||||
# echo 06-scene && cc -o 06-scene demos/06-scene.c $import $flags $args &
|
||||
# echo 07-netsync && cc -o 07-netsync demos/07-netsync.c $import $flags $args &
|
||||
# echo 06-material && cc -o 06-material demos/06-material.c $import $flags $args &
|
||||
# echo 07-network && cc -o 07-network demos/07-network.c $import $flags $args &
|
||||
# echo 08-audio && cc -o 08-audio demos/08-audio.c $import $flags $args &
|
||||
# echo 08-video && cc -o 08-video demos/08-video.c $import $flags $args &
|
||||
# echo 09-cubemap && cc -o 09-cubemap demos/09-cubemap.c $import $flags $args &
|
||||
# echo 09-shadertoy && cc -o 09-shadertoy demos/09-shadertoy.c $import $flags $args
|
||||
fi
|
||||
|
||||
exit
|
2
_mirror
2
_mirror
|
@ -1 +1 @@
|
|||
Subproject commit 27e24e603f1d1405c74c3fc9b241ed6c26185ba2
|
||||
Subproject commit be43196a3d33412a5dbad92983af7e149b1b066d
|
|
@ -1,7 +1,7 @@
|
|||
// uniform mat4 view = mat4(1.0);
|
||||
uniform vec3 lightPos = vec3(1.0);
|
||||
uniform float doTexture = 1.;
|
||||
#if VSMCUBE
|
||||
#ifdef VSMCUBE
|
||||
uniform samplerCube shadowMap; // VSMCUBE
|
||||
#else
|
||||
uniform sampler2D shadowMap; // !VSMCUBE
|
||||
|
@ -23,7 +23,7 @@ struct light {
|
|||
);
|
||||
|
||||
// From http://fabiensanglard.net/shadowmappingVSM/index.php
|
||||
#if VSMCUBE
|
||||
#ifdef VSMCUBE
|
||||
float chebyshevUpperBound(float distance, vec3 dir) {
|
||||
distance = distance/20 ;
|
||||
vec2 moments = texture(shadowMap, dir).rg;
|
||||
|
@ -60,7 +60,7 @@ struct light {
|
|||
// Convert to eye-space
|
||||
vec3 light = vec3(view * vec4(light0.position, 1.0));
|
||||
|
||||
#if VSMCUBE
|
||||
#ifdef VSMCUBE
|
||||
// Vectors
|
||||
vec3 fragmentToLight = light - fragment;
|
||||
vec3 fragmentToLightDir = normalize(fragmentToLight);
|
||||
|
@ -82,7 +82,7 @@ struct light {
|
|||
#endif
|
||||
|
||||
vec4 diffColor = vec4(1,1,1,1);
|
||||
#if VSMCUBE
|
||||
#ifdef VSMCUBE
|
||||
if(doTexture != 0) diffColor = vec4(vec3(texture(shadowMap, -fragmentToLight_world.xyz).r), 1.0);
|
||||
#else
|
||||
if(doTexture != 0) diffColor = vec4(vec3(texture(shadowMap, vec2(uv.x, 1.0 - uv.y)).r), 1.0);
|
||||
|
@ -109,4 +109,4 @@ struct light {
|
|||
#endif
|
||||
return vec4(clamp(vec3(total_lighting), 0., 1.), 1.0);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ in vec4 v_position;
|
|||
out vec4 outColor;
|
||||
|
||||
void main() {
|
||||
#if VSMCUBE
|
||||
#ifdef VSMCUBE
|
||||
float depth = length( vec3(v_position) ) / 20;
|
||||
#else
|
||||
float depth = v_position.z / v_position.w;
|
||||
|
@ -16,4 +16,4 @@ void main() {
|
|||
float dy = dFdy(depth);
|
||||
moment2 += 0.25*(dx*dx+dy*dy);
|
||||
outColor = vec4( moment1, moment2, 0.0, 0.0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,9 +7,9 @@ out vec4 v_position;
|
|||
|
||||
void main() {
|
||||
gl_Position = cameraToShadowProjector * model * vec4(position, 1.0);
|
||||
#if VSMCUBE
|
||||
#ifdef VSMCUBE
|
||||
v_position = cameraToShadowView * model * vec4(position, 1.0);
|
||||
#else
|
||||
v_position = gl_Position;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
#define BQ_WEBSOCKET_IMPLEMENTATION // websocket
|
||||
#define XML_C // xml
|
||||
#ifdef __APPLE__
|
||||
#define MA_NO_RUNTIME_LINKING // miniaudio
|
||||
#define _GLFW_COCOA // glfw osx
|
||||
#elif defined _WIN32
|
||||
#define _GLFW_WIN32 // glfw win32
|
||||
|
|
|
@ -13980,6 +13980,7 @@ int gladLoadGL( GLADloadfunc load) {
|
|||
#define BQ_WEBSOCKET_IMPLEMENTATION // websocket
|
||||
#define XML_C // xml
|
||||
#ifdef __APPLE__
|
||||
#define MA_NO_RUNTIME_LINKING // miniaudio
|
||||
#define _GLFW_COCOA // glfw osx
|
||||
#elif defined _WIN32
|
||||
#define _GLFW_WIN32 // glfw win32
|
||||
|
|
Loading…
Reference in New Issue