zoukankan      html  css  js  c++  java
  • Unity SRP 环境搭建

    工程配置

    1. 创建一个3d project
    2. 安装 Core RPLibrary(com.unity.render-pipelines.core)
    1. Windows->Package Manager
    2. 点击左上角加号选择 add package from git url
    1. 输入com.unity.render-pipelines.core 回车
    2. 设置颜色空间为Linear 线性空间(Project Setting->Player->Color Space)

    创建管线

    1. 创建RenderPipeline 子类 MyPipLine 实现 Render 方法
    public class MyPipLine : RenderPipeline
    {
        protected override void Render(ScriptableRenderContext context, Camera[] cameras)
        {
            
        }
    }
    
    1. 创建RenderPipelineAsset的子类 实现RenderPipeline方法
    [CreateAssetMenu(menuName = "Tools/CreateMyPipeline")]
    public class MyPipLineAsset : RenderPipelineAsset
    {
        protected override RenderPipeline CreatePipeline()
        {
            return new MyPipLine();
        }
    }
    
    1. 在unity中使用右键菜单Tools->CreateMyPipline创建pipline资源
    2. 打开Edit->Project Settings->Graphics 将创建出的资源拖拽至Scriptable Render Pipeline Settings

    这样管线就创建完成了。接下来只要实现MyPiplineRender方法了

    渲染物体

    1. 在场景中创建一个立方体
    2. 添加一个材质赋予立方体,材质的shader 选择为Unlit/Color
    3. 实现MyPipLine类的Render方法
    protected override void Render(ScriptableRenderContext context, Camera[] cameras)
        {
            foreach (var camera in cameras)
            {
                //设置相机参数
                context.SetupCameraProperties(camera);
                //获取相机裁剪参数
                camera.TryGetCullingParameters(out var cullingParameters);
                //根据裁剪参数获取裁剪结果
                var results = context.Cull(ref cullingParameters);
                //设置渲染Pass
                var ds = new DrawingSettings();
                ds.SetShaderPassName(1, new ShaderTagId("SRPDefaultUnlit"));
                //渲染过滤器设置为全部渲染
                var fs = new FilteringSettings(RenderQueueRange.all);
                //绘制渲染结果
                context.DrawRenderers(results,ref ds,ref fs);
                //绘制天空盒子
                context.DrawSkybox(camera);
            }
            //提交
            context.Submit();
        }
    

    在场景中就可以看到物体了

  • 相关阅读:
    3-附1 ->和*的区别
    第2章 变量和基本类型
    第2章 变量和基本类型 附3---底层const和顶层const
    第2章 变量和基本类型 附2 --声明和定义的区别
    第2章 变量和基本类型 附1---变量和对象的区别
    第一章 开始
    1. 数据采集基础问题
    跟波利亚学解题---1
    [PTA]L2-001 紧急救援 (25 分)
    [图论]最短路计数(spfa)
  • 原文地址:https://www.cnblogs.com/zitonglove/p/14998474.html
Copyright © 2011-2022 走看看