- Home /
How to convert surface shader to Vertex/Fragment code?
I'm wondering how I can convert this surface shader code to Vertex/Fragment pragma:
Shader "Custom/Diamond Opaque Test" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_SpecColor ("Specular Color", Color) = (0.5,0.5,0.5,1)
_Shininess ("Shininess", Range (0.01, 1)) = 0.078125
_RimPower ("Rim Power", Range(0,8.0)) = 3.0
_ReflectColor ("Reflection Color", Color) = (1,1,1,0.5)
[NoScaleOffset] _Cube ("Cubemap", CUBE) = "" {}
}
SubShader {
CGPROGRAM
#pragma surface surf BlinnPhong
struct Input {
float3 worldRefl;
float3 viewDir;
};
samplerCUBE _Cube;
fixed4 _Color;
fixed4 _ReflectColor;
half _Shininess;
half _RimPower;
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = _Color.rgb;
o.Gloss = _Color.a;
o.Specular = _Shininess;
half rim = saturate(dot (normalize(IN.viewDir), o.Normal));
o.Emission = texCUBE (_Cube, IN.worldRefl).rgb * _ReflectColor.rgb * pow(rim,_RimPower);;
}
ENDCG
}
FallBack "Mobile/Diffuse"
}
The shader code above is the red gem on the left of the picture below:
My goal is to look similar to the gem on the right. I have a couple of challenges along the way. The gem on the left is opaque and accepts shadows. The gem on the right has front face transparency but not the back. This however does not accept shadows. I had to make the gem on the let BlinnPhong so it can cast and receive shadows.
Is it possible to create different controls for the front and back face transparency? Also is there a way for transparent objects to accept shadows? I wanted to add outlines to the gem so it can be seen farther away. Is there a way to add outlines within the same Pass or does it have to have its own separate Pass? Also, how can you darken the received shadow? Will all these demands tax the hell out of the GPU? The game is for a mobile platform.
I am a complete beginner in CG Programming. My first step is to figure out of the translate surface programming to vertex/fragment. Any examples would be extremely grateful.
I did purchase a couple of gem assets in the asset store, but some of them can cast shadows but can't receive or can't cast or receive at all. What gives? The gem shader on the right is from one of the purchased assets from the asset store. I don't want to share their shader script on this site without their permission.
Your answer
Follow this Question
Related Questions
Shader that renders fragment behind 0 Answers
Fragment shader with "return" in for loop crashes the game on Android 0 Answers
Prevent ColorMask obscuring parts of an object's mesh 0 Answers
Can you specify both Surface and Vertex/Fragment shaders? 3 Answers
How to add normal map to "color" shader? 0 Answers