I made a really simple module for making gradient parts (Using surface gui). Currently works only on basic parts with block shape.
Showcase:
How it works:
local GradientPart = require(game.ReplicatedStorage.GradientPart)
GradientPart.GradientPart(workspace.Part,ColorSequence,Enum.NormalId.Top,false)
--[[
The first value is the object (the part)
The second value is the Color Sequence
The third value is the face the gradient should begin from
The fourth value is an Boolean value which tells if the Gradients should be paranted to the Part or no
(true == Parent to part)
]]
it uses surface gui with frames in it. The frames have ui gradient which are the objects that change the color. Depending on the side, the Ui gradient will be rotated and colored with the given color.
About the performance.
it won’t affect it if it’s for 1 time use (like making it just black white part). About the constant changing of the color sequence, i would recommend using it on the client since the constant looping can indeed make some regional serger performance issues