• 大小: 49KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签: Unity  Shader  

资源简介

将脚本挂在摄像机,将图片经Shader处理后生成Material并渲染到屏幕

资源截图

代码片段和文件信息

using UnityEngine;
using System.Collections;
using System;

//[ExecuteInEditMode]
//[AddComponentMenu (“PengLu/ImageEffect/BrokenScreen“)]
public class ImageEffect_BrokenScreen : MonoBehaviour {
#region Variables
public Shader BrokenScreenShader = null;
private Material BrokenScreenMaterial = null;

public Texture2D BumpMap;
    private RenderTextureFormat rtFormat = RenderTextureFormat.Default;

[Range(0.0f 1.0f)]
public float satCount = 0.17f;



#endregion


void OnEnable () {
FindShaders ();
CheckSupport ();
CreateMaterials ();
}

void FindShaders () {
if (!BrokenScreenShader) {
BrokenScreenShader = Shader.Find(“PengLu/ImageEffect/Unlit/BrokenScreen“);
}
}

void CreateMaterials() {
if(!BrokenScreenMaterial){
BrokenScreenMaterial = new Material(BrokenScreenShader);
BrokenScreenMaterial.hideFlags = HideFlags.HideAndDontSave;
}
}

bool Supported(){
return (SystemInfo.supportsImageEffects && BrokenScreenShader.isSupported);
}


bool CheckSupport() {
if(!Supported()) {
enabled = false;
return false;
}
return true;
}



void OnRenderImage (RenderTexture sourceTexture RenderTexture destTexture)
{
#if UNITY_EDITOR
FindShaders ();
CheckSupport ();
CreateMaterials ();
#endif

float scaleX  scaleY ;

if(sourceTexture.width > sourceTexture.height)
{
scaleX = 1.0f;
scaleY = (float) sourceTexture.height / (float) sourceTexture.width;
}
else
{
scaleX = (float) sourceTexture.width / (float) sourceTexture.height;
scaleY = 1.0f;
}


print(“scaleX:-------“ + scaleX + “  “ + “scaleY:-------“ + scaleY);

if(BumpMap != null){

        BrokenScreenMaterial.SetFloat (“_satCount“ satCount);
        BrokenScreenMaterial.SetFloat (“_scaleX“ scaleX);
        BrokenScreenMaterial.SetFloat (“_scaleY“ scaleY);
  BrokenScreenMaterial.SetTexture (“_BumpTex“ BumpMap);
    Graphics.Blit (sourceTexture destTexture BrokenScreenMaterial0);

}
else {

Graphics.Blit (sourceTexture destTexture);

}





}

 public void OnDisable () {
        if (BrokenScreenMaterial)
            DestroyImmediate (BrokenScreenMaterial);
             BrokenScreenMaterial = null;
    }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2219  2018-03-06 16:38  suiping\ImageEffect_BrokenScreen.cs

    ..A..H.       262  2018-03-06 16:38  suiping\ImageEffect_BrokenScreen.cs.meta

     文件       1267  2018-03-06 16:38  suiping\ImageEffect_BrokenScreen.shader

    ..A..H.       195  2018-03-06 16:38  suiping\ImageEffect_BrokenScreen.shader.meta

     文件      47074  2018-03-06 16:38  suiping\sui.png

    ..A..H.      2070  2018-03-06 16:38  suiping\sui.png.meta

     目录          0  2018-03-17 17:20  suiping

----------- ---------  ---------- -----  ----

                53087                    7


评论

共有 条评论