This is a shader-compatible utility mod for Modpacks.

On a "minecraft:fishing_rod" item with the following data:
cfru:["minecraft:fishing_hook"],cfru_linecolor:"#ffffff",cfru_replacement:["minecraft:beacon"],cfru_scale:1.3f}
1.20 give command:
/give @s fishing_rod{cfru_replacement:["minecraft:beacon"],cfru_scale:1.3f,cfru_linecolor:"#ffffff",cfru:["minecraft:fishing_hook"]}
1.21 give command:
/give @p fishing_rod[custom_data={cfru_replacement:["minecraft:beacon"],cfru_scale:1.3f,cfru_linecolor:"#ffffff",cfru:["minecraft:fishing_hook"]}] 1
these parameters woul turn into visuals:
cfru:["minecraft:fishing_hook"]
try to replace an entity called "minecraft:fishing_hook"
Note that from 1.20 to 1.21 the fishing hook entity ID got renamed from "minecraft:fishing_bobber" to "minecraft:fishing_hook"
cfru_replacement:["minecraft:beacon"]
replace the hook with a item render of "minecraft:beacon". If unset the hook becomes invisible.
cfru_linecolor:"#ffffff"
turn the line of the cast fishing rod white. Also accepts minecraft colors like "white". Defaults to the default black of the fishing line. Setting the parameter literally empty (cfru_linecolor:""), turns the fishing line invisible.
cfru_scale:1.3f
affects the 3D scale of the item from cfru_replacement:[]. Defaults to 1.0 scale. Does not enlarge the fishing hook.
{cfru_scale:1.3f,cfru_linecolor:"",cfru:["minecraft:fishing_hook"]} has an invisible fishing line and no hook replacement.

{cfru_scale:0.2f,cfru_linecolor:"",cfru:["minecraft:fishing_hook"],cfru_replacement:["minecraft:beacon"]} has a small beacon as a hook and still an invisible fishing line

cfru_scale:2f,cfru_linecolor:"white",cfru:["minecraft:fishing_hook"],cfru_replacement:["minecraft:ender_pearl"] has a large ender pearl as a hook and a white fishing line

I have yet to find an incompatability with shaders or any other render rendering/performance mod.