Unity水面交互.zip


非常漂亮的水面扰动效果,可以用来模拟人物在水中游泳的波纹效果
资源截图
代码片段和文件信息
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;


/// 
/// 焦散渲染器
/// 

public class CausticRenderer : MonoBehaviour
{
    /// 
    /// 网格单元格大小
    /// 

    public float geometryCellSize;
    /// 
    /// 焦散宽度
    /// 

    public float width;
    /// 
    /// 焦散长度
    /// 

    public float length;
    /// 
    /// 焦散强度
    /// 

    public float causticIntensity = 1.0f;
    /// 
    /// 深度范围(该参数目前实现比较简单,只是简单的传入世界空间的最小高度和有效高度范围,以计算焦散的有效高度范围(线性插值),暂时没有实现复杂的范围计算效果)
    /// 

    public Vector2 causticDepthRange;

    public Material material;

    private Mesh m_Mesh;

    private Camera m_Camera;

    private RenderTexture m_RenderTexture;
    private CommandBuffer m_CommandBuffer;

    void Start()
    {
        m_Camera = gameobject.AddComponent();
        m_Camera.aspect = width / length;
        m_Camera.backgroundColor = Color.black;
        //m_Camera.enabled = false;
        m_Camera.depth = 0;
        m_Camera.farClipPlane = 5;
        m_Camera.nearClipPlane = -5;
        m_Camera.orthographic = true;
        m_Camera.orthographicSize = length * 0.5f;
        //m_Camera.clearFlags = CameraClearFlags.SolidColor;
        m_Camera.clearFlags = CameraClearFlags.SolidColor;
        m_Camera.allowHDR = false;
        m_Camera.backgroundColor = Color.black;
        m_Camera.cullingMask = 0;

        m_RenderTexture = RenderTexture.GetTemporary(512 512 16);
        m_RenderTexture.name = “[Caustic]“;
        m_Camera.targetTexture = m_RenderTexture;

        m_CommandBuffer = new CommandBuffer();
        m_CommandBuffer.name = “[Caustic CB]“;
        m_Camera.AddCommandBuffer(CameraEvent.AfterImageEffectsOpaque m_CommandBuffer);

        m_Mesh = Utils.GenerateLiquidMesh(width length geometryCellSize);

    }

    void OnPostRender()
    {
        //绘制焦散mesh
        Matrix4x4 trs = Matrix4x4.TRS(transform.position Quaternion.identity Vector3.one);
        m_CommandBuffer.Clear();
        m_CommandBuffer.ClearRenderTarget(true true Color.black);

        m_CommandBuffer.SetRenderTarget(m_RenderTexture);

        m_CommandBuffer.DrawMesh(m_Mesh trs material);

        Vector4 plane = new Vector4(0 1 0 Vector3.Dot(new Vector3(0 1 0) transform.position));
        Vector4 range = new Vector4(transform.position.x transform.position.z width * 0.5f length * 0.5f);

        Shader.SetGlobalVector(“_CausticPlane“ plane);
        Shader.SetGlobalVector(“_CausticRange“ range);
        Shader.SetGlobalTexture(“_CausticMap“ m_RenderTexture);
        Shader.SetGlobalVector(“_CausticDepthRange“ causticDepthRange);
        Shader.SetGlobalFloat(“_CausticIntensity“ causticIntensity);
    }

    void OnDestroy()
    {
        if (m_RenderTexture)
            Destroy(m_RenderTexture);
        if (m_Mesh)
            Destroy(m_Mesh);
        if (m_CommandBuffer != null)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-08 15:11  UnityWaveEquation-master
     文件         422  2018-10-08 15:11  UnityWaveEquation-master.gitignore
     目录           0  2018-10-08 15:11  UnityWaveEquation-masterAssets
     文件         191  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulator.meta
     目录           0  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulator
     文件         191  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamples.meta
     目录           0  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamples
     文件       26448  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesDemo.unity
     文件         174  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesDemo.unity.meta
     文件         191  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMaterials.meta
     目录           0  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMaterials
     文件         191  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMaterialsRender.meta
     目录           0  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMaterialsRender
     文件        5048  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMaterialsRendercaustic.mat
     文件         207  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMaterialsRendercaustic.mat.meta
     文件        5620  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMaterialsRenderwater.mat
     文件         207  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMaterialsRenderwater.mat.meta
     文件        5172  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMaterialsRenderwaterbody.mat
     文件         207  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMaterialsRenderwaterbody.mat.meta
     文件        5116  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMaterialssky.mat
     文件         207  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMaterialssky.mat.meta
     文件         191  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMeshes.meta
     目录           0  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMeshes
     文件         191  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMeshesMaterials.meta
     目录           0  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMeshesMaterials
     文件        5448  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMeshesMaterials1 - Default 1.mat
     文件         207  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMeshesMaterials1 - Default 1.mat.meta
     文件        5448  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMeshesMaterials1 - Default 2.mat
     文件         207  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMeshesMaterials1 - Default 2.mat.meta
     文件        5408  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMeshesMaterials1 - Default.mat
     文件         207  2018-10-08 15:11  UnityWaveEquation-masterAssetsLiquidSimulatorExamplesMeshesMaterials1 - Default.mat.meta
............此处省略104个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)