Is it possible to modify vertex with vert frag shader without using surface shader ?

I’m learning how shader are structured and I’m trying to understand how to move vertex information using a vertex and fragment shader (if it’s possible ?)

I found out how to do it using surface shader :

void vert (inout appdata_full v) {
	// Do whatever you want with the "vertex" property of v here
	v.vertex.z += _Amount;
// Surface shader function
void surf (Input IN, inout SurfaceOutput o) {
	o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;

But when using only vertex and fragment :

Any information given to a vertex shader not linked to a surface shader won’t move vertex around in Unity.

vert(appdata v) without the “inout” keyword won’t be able to modify the vertex given within the struct in the function parameter

How can I achieve this ?

I thought asking the fragment shader to return more than a color but couldn’t find any example on how to do it …

Thanks for the help !

Solution was simple but I couldn’t find any example that would suggest it :

I needed to compute the vertex first THEN give it to UnityObjectToClipPos() + * 3.;
o.pos = UnityObjectToClipPos(;

take a look at this page, the first code seen here should be sufficient to get you going with vert frag shaders: