mirror of
				https://github.com/DerTyp7/grow-ai-unity.git
				synced 2025-10-31 05:17:08 +01:00 
			
		
		
		
	init
This commit is contained in:
		
							
								
								
									
										101
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,101 @@ | ||||
| void VertShader(inout appdata_full v, out Input data) | ||||
| { | ||||
| 	v.vertex.x += _VertexOffsetX; | ||||
| 	v.vertex.y += _VertexOffsetY; | ||||
|  | ||||
| 	UNITY_INITIALIZE_OUTPUT(Input, data); | ||||
|  | ||||
| 	float bold = step(v.texcoord1.y, 0); | ||||
|  | ||||
| 	// Generate normal for backface | ||||
| 	float3 view = ObjSpaceViewDir(v.vertex); | ||||
| 	v.normal *= sign(dot(v.normal, view)); | ||||
|  | ||||
| #if USE_DERIVATIVE | ||||
| 	data.param.y = 1; | ||||
| #else | ||||
| 	float4 vert = v.vertex; | ||||
| 	float4 vPosition = UnityObjectToClipPos(vert); | ||||
| 	float2 pixelSize = vPosition.w; | ||||
|  | ||||
| 	pixelSize /= float2(_ScaleX, _ScaleY) * mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy); | ||||
| 	float scale = rsqrt(dot(pixelSize, pixelSize)); | ||||
| 	scale *= abs(v.texcoord1.y) * _GradientScale * (_Sharpness + 1); | ||||
| 	scale = lerp(scale * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(v.normal.xyz), normalize(WorldSpaceViewDir(vert))))); | ||||
| 	data.param.y = scale; | ||||
| #endif | ||||
|  | ||||
| 	data.param.x = (lerp(_WeightNormal, _WeightBold, bold) / 4.0 + _FaceDilate) * _ScaleRatioA * 0.5; //  | ||||
|  | ||||
| 	v.texcoord1.xy = UnpackUV(v.texcoord1.x); | ||||
| 	data.viewDirEnv = mul((float3x3)_EnvMatrix, WorldSpaceViewDir(v.vertex)); | ||||
| } | ||||
|  | ||||
| void PixShader(Input input, inout SurfaceOutput o) | ||||
| { | ||||
|  | ||||
| #if USE_DERIVATIVE | ||||
| 	float2 pixelSize = float2(ddx(input.uv_MainTex.y), ddy(input.uv_MainTex.y)); | ||||
| 	pixelSize *= _TextureWidth * .75; | ||||
| 	float scale = rsqrt(dot(pixelSize, pixelSize)) * _GradientScale * (_Sharpness + 1); | ||||
| #else | ||||
| 	float scale = input.param.y; | ||||
| #endif | ||||
|  | ||||
| 	// Signed distance | ||||
| 	float c = tex2D(_MainTex, input.uv_MainTex).a; | ||||
| 	float sd = (.5 - c - input.param.x) * scale + .5; | ||||
| 	float outline = _OutlineWidth*_ScaleRatioA * scale; | ||||
| 	float softness = _OutlineSoftness*_ScaleRatioA * scale; | ||||
|  | ||||
| 	// Color & Alpha | ||||
| 	float4 faceColor = _FaceColor; | ||||
| 	float4 outlineColor = _OutlineColor; | ||||
| 	faceColor *= input.color; | ||||
| 	outlineColor.a *= input.color.a; | ||||
| 	faceColor *= tex2D(_FaceTex, float2(input.uv2_FaceTex.x + _FaceUVSpeedX * _Time.y, input.uv2_FaceTex.y + _FaceUVSpeedY * _Time.y)); | ||||
| 	outlineColor *= tex2D(_OutlineTex, float2(input.uv2_OutlineTex.x + _OutlineUVSpeedX * _Time.y, input.uv2_OutlineTex.y + _OutlineUVSpeedY * _Time.y)); | ||||
| 	faceColor = GetColor(sd, faceColor, outlineColor, outline, softness); | ||||
| 	faceColor.rgb /= max(faceColor.a, 0.0001); | ||||
|  | ||||
| #if BEVEL_ON | ||||
| 	float3 delta = float3(1.0 / _TextureWidth, 1.0 / _TextureHeight, 0.0); | ||||
|  | ||||
| 	float4 smp4x = {tex2D(_MainTex, input.uv_MainTex - delta.xz).a, | ||||
| 					tex2D(_MainTex, input.uv_MainTex + delta.xz).a, | ||||
| 					tex2D(_MainTex, input.uv_MainTex - delta.zy).a, | ||||
| 					tex2D(_MainTex, input.uv_MainTex + delta.zy).a }; | ||||
|  | ||||
| 	// Face Normal | ||||
| 	float3 n = GetSurfaceNormal(smp4x, input.param.x); | ||||
|  | ||||
| 	// Bumpmap | ||||
| 	float3 bump = UnpackNormal(tex2D(_BumpMap, input.uv2_FaceTex.xy)).xyz; | ||||
| 	bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5)); | ||||
| 	bump = lerp(float3(0, 0, 1), bump, faceColor.a); | ||||
| 	n = normalize(n - bump); | ||||
|  | ||||
| 	// Cubemap reflection | ||||
| 	fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDirEnv, mul((float3x3)unity_ObjectToWorld, n))); | ||||
| 	float3 emission = reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a; | ||||
| #else | ||||
| 	float3 n = float3(0, 0, -1); | ||||
| 	float3 emission = float3(0, 0, 0); | ||||
| #endif | ||||
| 	 | ||||
| #if GLOW_ON | ||||
| 	float4 glowColor = GetGlowColor(sd, scale); | ||||
| 	glowColor.a *= input.color.a; | ||||
| 	emission += glowColor.rgb*glowColor.a; | ||||
| 	faceColor = BlendARGB(glowColor, faceColor); | ||||
| 	faceColor.rgb /= max(faceColor.a, 0.0001); | ||||
| #endif | ||||
|  | ||||
| 	// Set Standard output structure | ||||
| 	o.Albedo = faceColor.rgb; | ||||
| 	o.Normal = -n; | ||||
| 	o.Emission = emission; | ||||
| 	o.Specular = lerp(_FaceShininess, _OutlineShininess, saturate(sd + outline * 0.5)); | ||||
| 	o.Gloss = 1; | ||||
| 	o.Alpha = faceColor.a; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 j.mei7
					j.mei7