summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
Diffstat (limited to 'src/render')
-rw-r--r--src/render/meson.build56
-rw-r--r--src/render/shaders/vr_video.h16
2 files changed, 38 insertions, 34 deletions
diff --git a/src/render/meson.build b/src/render/meson.build
index d342312..ee0017a 100644
--- a/src/render/meson.build
+++ b/src/render/meson.build
@@ -23,15 +23,11 @@ elif get_option('renderer') == 'libplacebo'
'xxhash=auto'
]
- if get_option('renderer-api') == 'vulkan' or get_option('renderer-api') == 'dx11'
+ if renderer_api == 'vulkan' or renderer_api == 'dx11'
if get_option('renderer-compiler') == 'shaderc'
shaderc_found = false
if 'shaderc' not in get_option('force_fallback_for') and get_option('wrap_mode') != 'forcefallback'
- if is_windows
- shaderc = dependency('shaderc_combined', required: false, allow_fallback: false)
- else
- shaderc = dependency('shaderc', required: false, allow_fallback: false)
- endif
+ shaderc = dependency('shaderc', required: false, allow_fallback: false)
shaderc_found = shaderc.found()
endif
if shaderc_found
@@ -39,30 +35,35 @@ elif get_option('renderer') == 'libplacebo'
else
shaderc_opts = cmake.subproject_options()
shaderc_opts.set_override_option('warning_level', '0') # Doesn't work.
- reltype = is_minsize ? 'MinSizeRel' : 'Release'
- shaderc_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : reltype })
+ shaderc_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : cmake_reltype })
+ shaderc_opts.add_cmake_defines({ 'BUILD_SHARED_LIBS': false })
shaderc_opts.add_cmake_defines({ 'SHADERC_SKIP_INSTALL': true })
shaderc_opts.add_cmake_defines({ 'SHADERC_SKIP_TESTS': true })
shaderc_opts.add_cmake_defines({ 'SHADERC_SKIP_EXAMPLES': true })
shaderc_opts.add_cmake_defines({ 'SHADERC_SKIP_COPYRIGHT_CHECK': true })
+ shaderc_opts.add_cmake_defines({ 'SHADERC_ENABLE_HLSL': false })
+ # glslang & spirv-tools
+ shaderc_opts.add_cmake_defines({ 'ENABLE_RTTI': false })
# glslang
shaderc_opts.add_cmake_defines({ 'ENABLE_GLSLANG_BINARIES': false })
+ shaderc_opts.add_cmake_defines({ 'ENABLE_GLSLANG_JS': false })
shaderc_opts.add_cmake_defines({ 'ENABLE_HLSL': false })
- shaderc_opts.add_cmake_defines({ 'ENABLE_SPVREMAPPER': false })
shaderc_opts.add_cmake_defines({ 'ENABLE_EXCEPTIONS': false })
spirv_optimizer = true
shaderc_opts.add_cmake_defines({ 'ENABLE_OPT': spirv_optimizer })
# spirv-tools
+ shaderc_opts.add_cmake_defines({ 'SPIRV_ALLOW_TIMERS': false })
+ shaderc_opts.add_cmake_defines({ 'SPIRV_COLOR_TERMINAL': false })
shaderc_opts.add_cmake_defines({ 'ENABLE_EXCEPTIONS_ON_MSVC': false })
shaderc_proj = cmake.subproject('shaderc', options: shaderc_opts)
shaderc = shaderc_proj.dependency('shaderc')
meson.override_dependency('shaderc', declare_dependency(dependencies: shaderc, version: '2026.2'))
render_deps += [
shaderc_proj.dependency('shaderc_util'),
- shaderc_proj.dependency('glslang'),
shaderc_proj.dependency('MachineIndependent'),
shaderc_proj.dependency('OSDependent'),
shaderc_proj.dependency('GenericCodeGen'),
+ shaderc_proj.dependency('glslang'),
shaderc_proj.dependency('SPIRV'),
shaderc_proj.dependency('SPIRV-Tools-static')
]
@@ -72,17 +73,21 @@ elif get_option('renderer') == 'libplacebo'
endif
libplacebo_opts += ['shaderc=enabled', 'glslang=disabled']
else
- glslang = dependency('glslang', required: false, allow_fallback: false)
- if glslang.found()
+ glslang_found = false
+ if 'glslang' not in get_option('force_fallback_for') and get_option('wrap_mode') != 'forcefallback'
+ glslang = dependency('glslang', required: false, allow_fallback: false)
+ glslang_found = glslang.found()
+ endif
+ if glslang_found
render_deps += [glslang]
else
# Currently does not build.
- prefer_static = get_option('prefer_static')
+ spirv_headers_proj = cmake.subproject('SPIRV-Headers')
+ spirv_headers = spirv_headers_proj.dependency('SPIRV-Headers')
spirv_optimizer = false
if spirv_optimizer
- spirv_headers_proj = cmake.subproject('SPIRV-Headers')
- spirv_headers = spirv_headers_proj.dependency('SPIRV-Headers')
spirv_tools_opts = cmake.subproject_options()
+ spirv_tools_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : cmake_reltype })
spirv_tools_opts.add_cmake_defines({ 'SPIRV-Headers_SOURCE_DIR': meson.source_root() + '/subprojects/SPIRV-Headers-b824a46' })
spirv_tools_opts.add_cmake_defines({ 'ENABLE_EXCEPTIONS_ON_MSVC': false })
spirv_tools_proj = cmake.subproject('SPIRV-Tools', options: spirv_tools_opts)
@@ -91,8 +96,7 @@ elif get_option('renderer') == 'libplacebo'
endif
glslang_opts = cmake.subproject_options()
glslang_opts.set_override_option('warning_level', '0')
- reltype = is_minsize ? 'MinSizeRel' : 'Release'
- glslang_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : reltype })
+ glslang_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : cmake_reltype })
glslang_opts.add_cmake_defines({ 'ENABLE_GLSLANG_BINARIES': false })
glslang_opts.add_cmake_defines({ 'ENABLE_HLSL': false })
glslang_opts.add_cmake_defines({ 'ENABLE_SPVREMAPPER': false })
@@ -100,24 +104,25 @@ elif get_option('renderer') == 'libplacebo'
glslang_opts.add_cmake_defines({ 'ENABLE_OPT': spirv_optimizer })
glslang_opts.add_cmake_defines({ 'ALLOW_EXTERNAL_SPIRV_TOOLS': spirv_optimizer })
glslang_proj = cmake.subproject('glslang', options: glslang_opts)
- spirv = glslang_proj.dependency('SPIRV')
glslang = glslang_proj.dependency('glslang')
glslang_default_resource_limits = glslang_proj.dependency('glslang-default-resource-limits')
- meson.override_dependency('SPIRV', spirv, static: prefer_static)
+ spirv = glslang_proj.dependency('SPIRV')
+ prefer_static = get_option('prefer_static')
meson.override_dependency('glslang', glslang, static: prefer_static)
meson.override_dependency('glslang-default-resource-limits', glslang_default_resource_limits, static: prefer_static)
+ meson.override_dependency('SPIRV', spirv, static: prefer_static)
render_deps += [
glslang_proj.dependency('MachineIndependent'),
glslang_proj.dependency('OSDependent'),
glslang_proj.dependency('GenericCodeGen'),
- spirv,
glslang,
- glslang_default_resource_limits
+ glslang_default_resource_limits,
+ spirv,
+ spirv_headers
]
if spirv_optimizer
render_deps += [
spirv_tools,
- spirv_headers,
spirv_tools_opt
]
endif
@@ -128,12 +133,11 @@ elif get_option('renderer') == 'libplacebo'
libplacebo_opts += ['glslang=disabled', 'shaderc=disabled']
endif
- if get_option('renderer-api') == 'vulkan'
+ if renderer_api == 'vulkan'
libplacebo_opts += ['vulkan=enabled', 'd3d11=disabled', 'opengl=disabled']
- elif get_option('renderer-api') == 'dx11'
+ elif renderer_api == 'dx11'
spirv_cross_opts = cmake.subproject_options()
- reltype = is_minsize ? 'MinSizeRel' : 'Release'
- spirv_cross_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : reltype })
+ spirv_cross_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : cmake_reltype })
spirv_cross_opts.add_cmake_defines({ 'SPIRV_CROSS_CLI': false })
spirv_cross_opts.add_cmake_defines({ 'SPIRV_CROSS_ENABLE_TESTS': false })
spirv_cross_opts.add_cmake_defines({ 'SPIRV_CROSS_ENABLE_MSL': false })
diff --git a/src/render/shaders/vr_video.h b/src/render/shaders/vr_video.h
index c892601..2dc54bd 100644
--- a/src/render/shaders/vr_video.h
+++ b/src/render/shaders/vr_video.h
@@ -33,18 +33,18 @@ static char vr_video_shader[] = \
"vec4 hook() {"
" float yaw = M_PI*mouse_x;"
" float pitch = M_PI*(-0.5+mouse_y);"
-" float roll = M_PI*0.0;"
-" float t = tan(fov/2.0);"
+" float roll = M_PI*0.;"
+" float t = tan(fov/2.);"
" float c = cos(pitch);"
" float s = sin(pitch);"
" float r = target_size.y/target_size.x;"
" float sR = sin(roll);"
" float cR = cos(roll);"
-" mat3 m = mat3(2.0*t*cR, 2.0*sR*t*r, -t*(cR+sR*r), -2.0*sR*t*c, 2.0*cR*t*c*r, t*c*(sR-cR*r)-s, -2.0*sR*t*s, 2.0*cR*t*s*r, t*s*(sR-cR*r)+c);"
-" vec3 p = vec3(HOOKED_pos, 1.0)*m;"
-" float theta = atan(p.x, p.z)+yaw;"
-" float phi = atan(p.y, length(p.xz))+M_PI/2.0;"
-" float x = fract(theta/(2.0*M_PI));"
+" mat3 m = mat3(2.*t*cR,2.*sR*t*r,-t*(cR+sR*r),-2.*sR*t*c,2.*cR*t*c*r,t*c*(sR-cR*r)-s,-2.*sR*t*s,2.*cR*t*s*r,t*s*(sR-cR*r)+c);"
+" vec3 p = vec3(HOOKED_pos,1.)*m;"
+" float theta = atan(p.x,p.z)+yaw;"
+" float phi = atan(p.y,length(p.xz))+M_PI/2.;"
+" float x = fract(theta/(2.*M_PI));"
" float y = phi/M_PI;" // Range: [M_PI, 2.0*M_PI] = Right eye 180 degrees. float(max(theta, mode-1.0) > 0.0) = Always true except mode = 0.0 and theta < 0.0.
-" return HOOKED_tex(vec2(x, y))*clamp(abs((1.0-mode)-(step(M_PI, theta)-step(2.0*M_PI, theta)))*float(max(theta, mode-1.0)>=0.0), 0.0, 1.0);"
+" return HOOKED_tex(vec2(x,y))*clamp(abs((1.-mode)-(step(M_PI,theta)-step(2.*M_PI,theta)))*float(max(theta,mode-1.)>=0.),0.,1.);"
"}";