unity shader——特效与音乐相结合

特效与音乐的结合,也并没有太大难度,特效部分提供一些可控接口,音乐部分提供波谱数值即可。

第一步非常好实现,国内这块儿的资料还是比较多的。

第二步看起来难,实际上过来人点一点,就透亮了。

在unity中,不需要再实现获取即时音乐数据之类麻烦的底层代码了,使用这个函数:

(unity圣典,能看懂英文部分尽量看英文,汉化估计是直接拿软件翻过来的)

这个函数的用法是在每个 UPDATE 函数内部取样,它会自动从当前播放到的位置取,具体参数设置可以参照unity圣典。

百说不如一做,代码放一下:

using UnityEngine;
using System.Collections;

public class lightController : MonoBehaviour {

    public Renderer light1, light2, light3, light4;

    public float dumpX=0.3f, dumpY=0.3f, dumpZ=0.3f;

    // 采样宽度
    public int sampWidth = 128;
    public float scaleAmount = 4;

    private float[] specTrum;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

        specTrum = audio.GetSpectrumData(sampWidth, 0, FFTWindow.BlackmanHarris);

        float totalValue = 0;
        int i = 0;
        while (i < sampWidth)
        {
            totalValue = totalValue + specTrum[i];
            i++;
        }

        dumpZ = totalValue*scaleAmount;

//        light1.material.SetFloat ("_DampZ", dumpZ);
//        light1.material.SetFloat ("_DampX", dumpX);
        light1.material.SetFloat ("_DampY", dumpY);

//        light2.material.SetFloat ("_DampZ", dumpZ);
//        light2.material.SetFloat ("_DampX", dumpX);
        light2.material.SetFloat ("_DampY", dumpY);

//        light3.material.SetFloat ("_DampZ", dumpZ);
//        light3.material.SetFloat ("_DampX", dumpX);
        light3.material.SetFloat ("_DampY", dumpY);

//        light4.material.SetFloat ("_DampZ", dumpZ);
//        light4.material.SetFloat ("_DampX", dumpX);
        light4.material.SetFloat ("_DampY", dumpY);
    }
}

关于shader的内容,可以参照这篇:
http://www.cnblogs.com/SecretMan001/p/4521437.html

OK了,看过代码之后你就会明白了,答案如此简单。

共勉!

时间: 2024-08-11 03:31:55

unity shader——特效与音乐相结合的相关文章

【Unity Shader编程】之十五 屏幕高斯模糊(Gaussian Blur)后期特效的实现

本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/51871531 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 本文工程使用的Unity3D版本: 5.2.1  本篇文章将分析如何在Unity中基于Shader实现高斯模糊屏幕后期特效. 首先放出最终的实现效果.如下几幅图,是在Unity中使用本文所实现的Shader得到的高斯模糊屏幕

Unity Shader入门教程(一)

参考文献:http://www.360doc.com/content/13/0923/15/12282510_316492286.shtml Unity Shader是着色器,将纹理.网格信息输入,得到材质的一段程序,具体是个什么东西,还需要亲自实践才知道.一个Unity大神推荐我:如果要学计算机图形编程(游戏编程的基础),可以先学习UnityShader,往后再学习OpenGL和DX.不说废话,依我的风格,都是直接看实例,笔者的教程偏向于傻瓜式的,应该适合入门. 前提:安装了Unity和VS,

Unity3D for VR 学习(9): Unity Shader 光照模型 (illumination model)

关于光照模型 所谓模型,一般是由学术算法发起, 经过大量实际数据验证而成的可靠公式 现在还记得2009年做TD-SCDMA移动通信算法的时候,曾经看过自由空间传播模型(Free space propagation Model),目的为了得出移动信号的传播损耗.当时是基于普通的PC实时运算,非常非常耗时–如北京五环内的传播模型渲染GIS图用了超过20分钟. 光照模型来源有2类: 一类是基于学术论文的算法,如Lambert模型.Phong模型. 另一类基于算法的变种–在实际生产实践中修正得到的模型,

《Unity Shader 与 计算机图形学》第二章

提示:本篇将会非常长~ 本系列文章分为 硬件 编程入门 工程实践 上一篇 主要介绍了GPU的特征工作原理 以及渲染的底层流程 其实对于新架构而言还有所不同 Shader描述了如何渲染物体的信息,包括: Texture Setup.纹理设置 Material Property.材质设置 Render State.渲染状态 Blend Setup.混合设置 Pixel Shader.像素着色 Vertex Shader.定点着色 Render Target Setup 渲染目标设置 Shader并不

【我的书】Unity Shader的书 — 目录(2015.09.04更新)

写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shader的艰难,在群里也见了很多人提出的问题.我觉得学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文...这对我有什么好处呢?强迫我对知识进行梳理,对细节问题把握更清楚. 第二个原因你懂的. 关于本书的定位问题: 面向Unity Shader初学者,但要: 有一定的

【我的书】Unity Shader的书 — 目录(2016.1.29更新)

写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shader的艰难,在群里也见了很多人提出的问题.我觉得学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文...这对我有什么好处呢?强迫我对知识进行梳理,对细节问题把握更清楚. 第二个原因你懂的. 关于本书的定位问题: 面向Unity Shader初学者,但要: 有一定的

关于unity shader的BUG

(shader这方面的教材.尤其体积光讲的暧昧不清,浑浑昏昏!) 由于将要做的一款作品里面要用到体积光特效,于是对这块知识进行了相应的研究.成果: 1.发现了unity shader的一个BUG: 参照之前所学的DX的知识,将混合状态设置成这样,进行颜色混合的时候,发现无法进行纯色混色(颜色值,相对于贴图而言),以及部分贴图出现无法混合成功的情况.于是顺着这条线一直往下探索.测试,发现了事件的真相: unity的fragment着色器在“采色”结束后,不会按照上面标注的那句blend进行操作,也

【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shader的艰难,在群里也见了非常多人提出的问题. 我认为学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文...这对我有什么优点呢?强迫我对知识进行梳理,对细节问题把握更清楚. 第二个原因你懂的. 关于本书的定位问题: 面向Unity Shader刚開始学习的人,但要

Unity Shader 知识点总结(二)

紧接着上一篇文章的shader入门知识的总结,本文主要总结shader中的纹理贴图.透明度混合.顶点动画.后期特效处理等操作.如果有什么地方有错,请指出更正,谢谢.本文的代码主要来自开源书:unity入门精要 一.Unity shader中的纹理 1.简单纹理 在unity shader中,纹理的主要作用是用来给模型贴上一个外表,这样得到的模型颜色就具有纹理的颜色混合.在常见的一些shader上,都会有一个_MainTex的选项,这就是我们常常用的主纹理贴图.对于纹理贴图,其对应的需要有纹理坐标