Stock.slang

Is there a way to use stock.slang in the same way as stock.glsl to define the internal resolution for the rest of the shader chain?

I remember doing this for gl but can’t do it with slang.

it should be exactly the same process, yes.

I completely forgot how to do this. I’m adding the stock.slang shader at the top of the gameboy preset and i’m getting nothing but a green screen:

shaders = "6"
shader0 = "../../shaders_slang/stock.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "PASS0"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "absolute"
scale_y0 = "1.000000"
shader1 = "../../shaders_slang/handheld/shaders/gameboy/shader-files/gb-pass0.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "../../shaders_slang/handheld/shaders/gameboy/shader-files/gb-pass1.slang"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = ""
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "../../shaders_slang/handheld/shaders/gameboy/shader-files/gb-pass2.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "../../shaders_slang/handheld/shaders/gameboy/shader-files/gb-pass3.slang"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "../../shaders_slang/handheld/shaders/gameboy/shader-files/gb-pass4.slang"
filter_linear5 = "false"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "false"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
parameters = "baseline_alpha;grey_balance;response_time;video_scale;blending_mode;adjacent_texel_alpha_blending;contrast;screen_light;pixel_opacity;bg_smoothing;shadow_opacity;shadow_offset_x;shadow_offset_y;screen_offset_x;screen_offset_y"
baseline_alpha = "0.100000"
grey_balance = "3.000000"
response_time = "0.333000"
video_scale = "3.000000"
blending_mode = "1.000000"
adjacent_texel_alpha_blending = "0.175500"
contrast = "0.950000"
screen_light = "1.000000"
pixel_opacity = "1.000000"
bg_smoothing = "0.750000"
shadow_opacity = "0.550000"
shadow_offset_x = "1.000000"
shadow_offset_y = "1.000000"
screen_offset_x = "0.000000"
screen_offset_y = "0.000000"
textures = "COLOR_PALETTE;BACKGROUND"
COLOR_PALETTE = "../../shaders_slang/handheld/shaders/gameboy/resources/palette.png"
COLOR_PALETTE_linear = "false"
COLOR_PALETTE_wrap_mode = "clamp_to_border"
COLOR_PALETTE_mipmap = "false"
BACKGROUND = "../../shaders_slang/handheld/shaders/gameboy/resources/background.png"
BACKGROUND_linear = "true"
BACKGROUND_wrap_mode = "clamp_to_border"
BACKGROUND_mipmap = "false"

I’m trying to create a gameboy shader for gameboy videos but these are higher res and makes the dots very small. I remember having the same issue years ago and fixed it by adding the stock shader but now i can’t do it.

scale_type_y0 = "absolute"

scale_y0 = "1.000000"

I believe that’s why you’re getting a green screen. That’s making your image 1 px tall. Absolute means “this many pixels”. So, if you know the resolution (160x144, in this case), you can make both the x and y axes scale by absolute to those pixel sizes, like this:

scale_type_x0 = "absolute"
scale_type_y0 = "absolute"
scale_x0 = 160.0
scale_y0 = 144.0

Ok did that but all i’m getting is still this

the pass alias also needs to follow the shader passes it works with. This seems to work for me:

shaders = 6

shader0 = ../stock.slang
scale_type0 = absolute
scale_x0 = 160.0
scale_y0 = 144.0
filter_linear0 = true

shader1 = shaders/gameboy/shader-files/gb-pass0.slang
filter_linear1 = false
scale_type1 = viewport
scale1 = 1.0
alias1 = "PASS0"

shader2 = shaders/gameboy/shader-files/gb-pass1.slang
filter_linear2 = false
scale_type2 = source
scale2 = 1.0
alias2 = "PASS1"

shader3 = shaders/gameboy/shader-files/gb-pass2.slang
filter_linear3 = false
scale_type3 = source
scale3 = 1.0
alias3 = "PASS2"

shader4 = shaders/gameboy/shader-files/gb-pass3.slang
filter_linear4 = false
scale_type4 = source
scale4 = 1.0
alias4 = "PASS3"

shader5 = shaders/gameboy/shader-files/gb-pass4.slang
filter_linear5 = false
scale_type5 = source
scale5 = 1.0
alias5 = "PASS4"


textures = COLOR_PALETTE;BACKGROUND
COLOR_PALETTE = shaders/gameboy/resources/palette.png
COLOR_PALETTE_linear = false
BACKGROUND = shaders/gameboy/resources/background.png
BACKGROUND_linear = true

change filter_linear0 from true to false if you want it sharper but more prone to uneven pixels

Doesn’t work for me. Now i’m getting the video without any shader effects, even though the shaders seem to be loaded.

Anyway, thanks for trying to help.

looks like this here:

1 Like

Ok i did the stupid thing and copied/pasted your code without changing the directories to match my paths.

Works now thanks!

1 Like