zoukankan      html  css  js  c++  java
  • unity camera RenderWithShader ,SetReplacementShader

    2.2.2 RenderWithShader方法:使用其他shader渲染

    基本语法:public void RenderWithShader(Shader shader, string replacementTag);

    其中参数shader为要使用的shader;replacementTag 为shader的Tag标示。

    功能说明:此方法的作用是可以使用指定的shader来代替当前物体的shader渲染一帧。当replacementTag为空时会替换视口中所有物体的shader。

    提示:SetReplacementShader方法与此方法功能相近,不同之处是,SetReplacementShader方法使用指定的shader来替换物体当前的shader,被替换后每一帧都会用替换的shader来渲染物体,而不是只渲染一帧,具体请查看实例演示。

    实例演示:下面通过实例演示方法RenderWithShader的使用。

    using UnityEngine;
    using System.Collections;
    
    public class RenderWithShader_ts : MonoBehaviour
    {
    bool is_use = false;
    void OnGUI()
    {
    if (is_use)
    {
    //使用高光shader:Specular来渲染Camera
    camera.RenderWithShader(Shader.Find("Specular"), "RenderType");
    }
    if (GUI.Button(new Rect(10.0f, 10.0f, 300.0f, 45.0f), "使用RenderWithShader启用高光"))
    {
    //RenderWithShader每调用一次只渲染一帧,所以不可将其直接放到这儿
    //camera.RenderWithShader(Shader.Find("Specular"), "RenderType")
    is_use = true;
    }
    if (GUI.Button(new Rect(10.0f, 60.0f, 300.0f, 45.0f), "使用SetReplacementShader启用高光"))
    {
    //SetReplacementShader方法用来替换已有shader,调用一次即可
    camera.SetReplacementShader(Shader.Find("Specular"), "RenderType");
    is_use = false;
    }
    if (GUI.Button(new Rect(10.0f, 110.0f, 300.0f, 45.0f), "关闭高光"))
    {
    //重置摄像机的shader渲染模式
    camera.ResetReplacementShader();
    is_use = false;
    }
    }
    }
    

      

    在这段代码中,首先定义了一个变量is_use用来记录是否启用高光shader,如果is_use为true,则在OnGUI方法中调用方法RenderWithShader来替换已有shader,也可直接使用方法SetReplacementShader来替换已有shader。如果要关闭高光则只需重置shader即调用方法ResetReplacementShader(),并修改is_use值为false,具体显示情况请读者自行运行程序查看。

    提示:方法RenderWithShader每调用一次只渲染一帧,故不可直接将其放到GUI的Button中,否则看不出效果。


    本文章内容摘自图书《Unity API解析》,源码下载地址:http://www.ituring.com.cn/book/1474
    ————————————————
    版权声明:本文为CSDN博主「宏哥的博客」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/quan2008happy/article/details/39380463

  • 相关阅读:
    HDU 1022 Train Problem I
    HDU 1702 ACboy needs your help again!
    HDU 1294 Rooted Trees Problem
    HDU 1027 Ignatius and the Princess II
    HDU 3398 String
    HDU 1709 The Balance
    HDU 2152 Fruit
    HDU 1398 Square Coins
    HDU 3571 N-dimensional Sphere
    HDU 2451 Simple Addition Expression
  • 原文地址:https://www.cnblogs.com/nafio/p/12187400.html
Copyright © 2011-2022 走看看