Shader在地上画个圆

来源:互联网 发布:淘宝天猫优惠券宣传语 编辑:程序博客网 时间:2024/04/28 07:26


圈移动,访问修改shader的属性

using UnityEngine;[ExecuteInEditMode]public class Radius : MonoBehaviour {    public Material radiusMaterial;    public float radius = 1;    public Color color = Color.white;    // Use this for initialization    void Start () {}    //每帧更新shader中的参数值// Update is called once per framevoid Update () {        radiusMaterial.SetVector("_Center", transform.position);        radiusMaterial.SetFloat("_Radius", radius);        radiusMaterial.SetColor("_RadiusColor", color);    }}


shader其实很简单

Properties {_Color("Color", Color) = (1,1,1,1)_MainTex("Albedo (RGB)", 2D) = "white" {}_Center("Center", Vector) = (0,0,0,0)_Radius("Radius", Float) = 0.5_RadiusColor("Radius Color", Color) = (1,0,0,1)_RadiusWidth("Radius Width", Float) = 2}SubShader {Tags { "RenderType"="Opaque" }LOD 200CGPROGRAM// Physically based Standard lighting model, and enable shadows on all light types#pragma surface surf Standard fullforwardshadows// Use shader model 3.0 target, to get nicer looking lighting#pragma target 3.0sampler2D _MainTex;fixed4 _Color;float3 _Center;float _Radius;fixed4 _RadiusColor;float _RadiusWidth;struct Input {float2 uv_MainTex;float3 worldPos;};void surf(Input IN, inout SurfaceOutputStandard o) {float d = distance(_Center, IN.worldPos);if (d > _Radius && d < _Radius + _RadiusWidth)o.Albedo = _RadiusColor;elseo.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;}ENDCG} FallBack "Diffuse"



原创粉丝点击