我有一个着色器,可以显示网格的顶点颜色,并且能够剪切蓝色的顶点。我希望用户能够在使用应用程序时打开/关闭此设置。
我已经尝试过此处提供的建议Find and change property name in a shader和此处如何根据顶点颜色丢弃像素并在 MonoBehaviour 中打开或关闭它? 但到目前为止,这些都没有为我工作。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HoloToolkit.Unity;
using System;
public class AnchorScript : MonoBehaviour
{
private Renderer rend;
Vector3 scale;
public WorldAnchorManager worldAnchorManager;
// Start is called before the first frame update
void Start()
{
rend = gameObject.GetComponent<Renderer>();
// transform.localScale = scale;
TurnOffContext();
}
private void Update()
{
SaveScale();
TurnOffContext();
}
public void AnchorIt()
{
worldAnchorManager.AttachAnchor(this.gameObject);
this.gameObject.GetComponent<Renderer>().material.color = Color.red;
}
public void ReleaseAnchor()
{
worldAnchorManager.RemoveAnchor(this.gameObject);
this.gameObject.GetComponent<Renderer>().material.color =
Color.green;
}
public void ShowDifferences()
{
gameObject.GetComponent<Renderer>().enabled = true;
}
public void HideAugmentations()
{
gameObject.GetComponent<Renderer>().enabled = false;
}
public void TurnOffContext()
{
rend.material.SetFloat("_Toggle", 1);
Debug.Log("Toggle ");
}
public void SaveScale()
{
scale = gameObject.GetComponent<Transform>().localScale;
}
}
我希望这个脚本会导致我的网格的蓝色部分被丢弃,因为在我的着色器片段中我有
clip(_Toggle * (0.5f - IN.vertColor.b));
具体来说,不起作用的部分是行
rend.material.Setfloat("_Toggle", 1);
正在调用该函数,但它没有按预期将 _Toggle 值设置为 1。
如果我手动将检查器面板中的 _Toggle 设置从 0 更改为 1,则会丢弃网格的蓝色部分,这是预期的结果。我在上面粘贴的脚本应该与手动更改检查器面板中的设置具有相同的结果。