Help How do i make VHS effect

How do i make a VHS effect on roblox studio i have no clue

Thank you for helping me :grinning:

7 Likes

Well, for a convincing VHS effect, you’ll need the following:
ColorCorrection
Bloom
And some sort of Static overlay
Here is a table of images you can use for a static effect:

local StaticImages = {
	'rbxassetid://7472792778';
	'rbxassetid://10757636219';
	'rbxassetid://520992855';
	'rbxassetid://10195656966';
	'rbxassetid://4689700119';
	'rbxassetid://9470950';
	'rbxassetid://3203623798';
	'rbxassetid://2510585515';
}

And heres the values for the Bloom and ColorCorrection
(just enable them for the effect)
Screenshot (638)
Screenshot (639)

And this is what the effect looks like:

If this isnt what you want, then please go into further detail, im sure someone can make something.

24 Likes

Hello, It’s actually pretty simple, Grab a Static Image and on the ImageLabel set the ScaleType to “Tile” and here’s the code for it.
image

local StaticImage = script.Parent -- Path to the Image

game:GetService("RunService").Heartbeat:Connect(function()
	StaticImage.TileSize = UDim2.new(math.random(800, 1000) / 1000, 0, math.random(800, 1000) / 1000, 0)
end)

So we are pretty much changing the Tile Size to something random.

https://developer.roblox.com/en-us/api-reference/datatype/UDim2

https://developer.roblox.com/en-us/api-reference/event/RunService/Heartbeat

17 Likes

i dont remeber how to for loop in pair in table

local vhs = script.Parent.ImageLabel


local StaticImages = {
	'rbxassetid://7472792778';
	'rbxassetid://10757636219';
	'rbxassetid://520992855';
	'rbxassetid://10195656966';
	'rbxassetid://4689700119';
	'rbxassetid://9470950';
	'rbxassetid://3203623798';
	'rbxassetid://2510585515';
}


while true  do
	wait(0.1)
	for i,v in pairs(StaticImages) do
		vhs.Image = v
	end
end
3 Likes

You could also do:


local VHSImage = game.Players.LocalPlayer.PlayerGui.ScreenGui.VHS.VHSImage --(Replace VHS with the path from StarterGui to the ImageLabel that covers the screen)
local a = 0.01 -- Customizable delay between image switch
while task.wait(a) do
	VHSImage.Image = "rbxassetid://7472792778"
	task.wait(a)
	VHSImage.Image = "rbxassetid://10757636219"
	task.wait(a)
	VHSImage.Image = "rbxassetid://520992855"
	task.wait(a)
	VHSImage.Image = "rbxassetid://10195656966"
	task.wait(a)
	VHSImage.Image = "rbxassetid://4689700119"
	task.wait(a)
	VHSImage.Image = "rbxassetid://9470950"
	task.wait(a)
	VHSImage.Image = "rbxassetid://3203623798"
	task.wait(a)
	VHSImage.Image = "rbxassetid://2510585515"
end
3 Likes

Bumping this thread but, is there any way you could do something like this?

Video

Like the red, blue and green mix of the color correction just seems so old-like.

@toolinjection there is no way of doing this right now. I hope they add it. Would be very fun!

Wrong, It is possible and I have done it.

There is a very simple way of doing this effect ( chromatic aberration ).

First you need to understand how the effect works.

Basically the effect occurs when Red, green and blue are not positioned exactly on the same places. This leads to the colors flowing out as seen in that video.

With this in mind, you can adapt this idea onto roblox by making three Viewportframes, (Red, green and blue) and positioning them so that they are very slightly mis-aligned.

2 Likes

viewport frames dont have shadows or reflections so whats the use of making ur game looks worse?

I get it now thank you so much I’ll try this.

2 Likes

You can do it with CCE’s.

Link

Well i found out how to make the image change every 0.1 seconds! here’s the script:

local vhs = script.Parent


local StaticImages = {
	'rbxassetid://7472792778';
	'rbxassetid://10757636219';
	'rbxassetid://520992855';
	'rbxassetid://10195656966';
	'rbxassetid://4689700119';
	'rbxassetid://9470950';
	'rbxassetid://3203623798';
	'rbxassetid://2510585515';
}
while wait(0.1) do
script.Parent.Image =  StaticImages[math.random(1, #StaticImages)]
	vhs.Image = StaticImages[math.random(1, #StaticImages)]
end

by the way don’t forget to change the background transparency to 1 and the image transparency to 0.9 or 0.93

4 Likes

I know I’m a little late, but I have additional ways on how to refine this, giving this more of a 90’s VHS TV effect with adding an additional layer. making it more realistic too. Here is my hierarchy,

image

Make sure the frame “VHS effect” has the property “BackgroundTransparency” = 1

Here are the properties for the Film ImageLabel

Here are the properties for the Blue ImageLabel

Inside the LocalScript, paste the following code,

local StaticImages = {
	'rbxassetid://7472792778',
	'rbxassetid://10757636219',
	'rbxassetid://520992855',
	'rbxassetid://10195656966',
	'rbxassetid://4689700119',
	'rbxassetid://9470950',
	'rbxassetid://3203623798',
	'rbxassetid://2510585515',
}

local vhs = script.Parent
local blue = script.Parent.Parent.blue


game:GetService("TweenService"):Create(blue, TweenInfo.new(1, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut, 0, false, 0), {BackgroundTransparency = 0.75}):Play()

	while true do
	for _, image in pairs(StaticImages) do
		vhs.Image = image
		wait(0.05)  -- Adjust the delay as needed
	end
end

Your game should look something like this!

4 Likes

Replying to this 2yr old thread to say that this method works incredibly well for the static effect I was looking for! It creates a very fine, consistent static that doesn’t “blink” or “flicker” so wildly that it’s eyestrain-y (like how changing thru different img IDs felt), and the code feels much cleaner too.

1 Like