SlideShare a Scribd company logo
1 of 60
Download to read offline
《SRP到URP从原理到应用》
程序员 雨松MOMO
致敬一下大佬
• 我在学习URP的过程中谷歌搜索问题,每次都能看到Phli_lira的详细回答。
• 原来URP、Shader Graph就是他开发的。
• 他是Unity首席图形程序,全面负责Unity渲染管线开发
• 通过他在论坛里讲的我学到了很多,也帮助了很多人。
• 给大佬点赞~
费利佩·里拉
内置渲染管线
• Unity目前已经支持将近30个计算平台
• 意味着内置渲染管线必须同时支持这30个计算平台
• 内置渲染管线越来越臃肿不堪
• 引擎每次对特定平台的管线修改都必须考虑其他平台的兼容性(肯定各种if else条件判断)
• 内置渲染管线无法对开发者提供一些定制化修改接口
• 普通开发者无法去学习渲染管线,导致大部分开发者这块的知识都很匮乏,不利于个人成长
SRP可编程渲染管线
• C++调用渲染API (如OpenGL ES)的接口尽可能做到浅封装
• C++浅封装的渲染接口绑定到C#中
• C#这边就可以整体控制渲染管线的流程,从而实现可编程渲染管线
• SRP并没有直接提供类似对接OpenGL ES的接口,所以并不能为所欲为,有些东西依然是做不到的。
• 基于SRP基础Unity开发了URP和HDRP,这样在性能高端的PC主机上可以使用更好的渲染效果。
• 未来在手机上也可以支持HDRP,HDRP上的好效果也可以自行移植到URP
• 渲染管线是跑在CPU上的而非GPU,GPU硬件也有一套自己的渲染管线,两者是不同的
渲染管线流程CPU
CPU准备渲染数据
CPU裁剪
CPU排序
CPU提交GPU绘制
SRP 怎么裁剪
SRP 怎么排序
SRP 怎么准备数据
SRP渲染管线底层渲染接口
• 平截头体裁剪结果,C#传入摄像机位置FOV参数,C++返回结果(结果中并不会告诉你那些物体被剔除那些物体没
有被剔除),我们无法干预
• 渲染设置,C#传入参数,例如Before After Transparent 层、不透明物体从前向后绘制,实际执行还在C++中
• 裁剪设置,在平截头体裁剪结果二次裁剪,如果设置某个层不渲染,SortingOrder的区域
裁剪
• 即使CPU不做裁剪GPU也会去裁剪,但是全靠GPU裁剪是有问题的。
• 假如有1000W个Mesh顶点传入GPU以后,必须每个顶点着色器都执行完毕后才知道顶点是否落在
显示区域内才能做裁剪,可是大部分顶点着色器都是白白浪费了性能。
• 模型顶点数据在传入GPU之前CPU这边就需要进行裁剪,减少传入GPU的数据。
• 通过摄像机对象获取裁剪参数
裁剪定制化
• 阴影问题,模型没有落在镜头(平截头体裁)内,但是它产生的阴影有可能落在镜头内
• 点光问题,点光没有在(平截头体裁)内,但是它衰减的部分会落在模型上
• 模型、光源都会在CPU进行裁剪,cullingResults就会返回结果
• 光源数量问题, 1直光 8 (4 for GLES2). Can be point, spot, and directional Lights.
• 以上参数可以在C#中配置,实际的裁剪还需要在C++里进行
裁剪
• 注意右上图的点光,它在平截头体外,但是光源衰减会影响到右侧立方体,所以不能被裁掉
• 裁减掉光源会大量减少Shader中的计算量
• cullResult包含裁剪过的光源以及反射探头,至于怎么裁剪这些都是在C++代码中做的。
多光源单PASS
• 每帧都有新的光源裁剪结果
• 将直光、点光、聚光灯、的位置、方向、颜色、衰减传入GPU
排序
比如:
半透明物体渲
染
指定Render
Pass执行顺序
指定半透明物
体绘制顺序
从后向前绘制
提交GPU绘制
不同Pass依次按
顺序根据
Render Pass
Event进行排序
Draw Call 1
Set pass call
SRP BATCHER准备
Draw Call 2
• 在学习SRP Batcher之前需要先了解Set Pass Call 和Draw Call的区别。
• Set Pass Call表示渲染状态,如何开始渲染,例如设置网格、Shader中的参数
• Draw Call则表示根据当前的渲染状态继续绘制
Set pass Call
Draw Call 1
Set pass Call
Draw Call 2
绘制两个半透明物体,因为
Pass的颜色不同,渲染状态则
不同,所以需要2次Set Pass Call
2次Draw Call
渲染状态一样,所以只有1次Set Pass call
2次Draw Call
上例子同样都是2次Draw Call 但渲染的代价是不同的
从效率优化的角度来说也应该要尽量减少Set Pass Call 其次是Draw Call
SRP BATCHER准备DRAW CALL
• 传统方式每一次Draw Call依然会有很多事情要做
• SRP Batcher这边不需要数据收集以及提交,直接绑
定,说明数据已经在GPU中
收集数据
提交数据
绑定数据
材质不同时,新开Set Pass Call Shader变种不同时才新开Set Pass Call
SRP BATCHER原理
• 模型的渲染状态包括,位置信息、渲染材
质参数信息
• 模型可能每帧都会移动坐标,但不会每帧
都修改材质参数信息吧
• SRP Batcher的原理就是将位置信息和材质
信息分开,只有真正变化时才会提交
• GPU内存中会保留着上一次的数据
每个材质中的变量都保存在CBUFFER中,Mesh网格可以不同,材质也可以不同,只要执行
的Shader一样,就不会打断SRP Batcher。
SRP BATCHER使用
所有参数包裹在
CBUFFER中
• SRP Bather并不会减少Draw Call
• 它可以优化每个Draw Call的效率
• 不同的材质或者多Pass的Shader都会打断SRP
Batcher
将现有项目转到URP中
• Builtin渲染管线的一部分功能URP目前暂时不支持
• 如果使用Unity自带的shader,如 standard标准shader可以一键升级
• 自定义shader需要自己修改,否则无法支持SRP Batcher
• 在同一个shader中不能添加多Pass(这会打断渲染状态,方便不代表效率高)
• 使用Render Feature和Render Pass 实现多Pass的效果
• Post-Process V3后处理以及拓展
• 线性空间转换(美术抵制的问题)
URP管线与BUILTIN管线区别
Builtin管线 URP管线
Light Limits
Main Directional Light
Per Object
Per Camera
1
Unlimited
Unlimited
1
8 (4 for GLES2). Can be point, spot,
and directional Lights.
256 (16 for GLES 3.0 or lower, 32
on other mobile platforms)
Realtime Shadows
Directional
Spot
Point
Area
Yes
Yes
Yes
Not supported
Yes - only 1
Yes
In research
Not supported
Shadow Mask Yes In research (unity2020支持)
Shading Multiple Passes Single Pass
更多区别参考 https://docs.unity3d.com/Packages/com.unity.render-
pipelines.universal@10.1/manual/universalrp-builtin-feature-comparison.html
多PASS问题
• URP 中Shader最终只能执行2个Pass
• 修改URP源码可以执行更多Pass(前面我们已经讲
过这种效率低所以才被URP废弃)
• 比如常用的描边、毛发等读需要多Pass的支持
• 如何才能有效的支持SRP Batcher以及多Pass呢?
• 最简单的办法就是使用URP自带的RenderObjcts
RENDEROBJCTS
• Event渲染顺序,这个前面我们讲过
• Filters就是过滤器,这里设置不透明物体,和一个特殊的
层。
• 如果用层就很麻烦了,比如所有Actor层都需要描边,现
在有一个角色不想描边,这就不行了。
• Overrides 设置材质,以及需要执行Pass的Index。
• Depth深度测试参数和Stencil模板测试参数。
• Camera调整针对的渲染视角FOV,后面会详细介绍
渲染层
• 使用层的虽然无法排除层中的某一个,但是使用层无疑是最方便的一个,因为不需要考虑CPU裁
剪,Unity会帮你处理。
• 如果不想被层所限制就需要自己创建RenderFeature和RenderPass了
RenerFeature添加面板属性
将RenderPass添加渲染队列
创建RenderPass
RENDERPASS
创建自定义Pass
收集需要渲染的对象
设置渲染信息
开始绘制
如果Mesh一样推荐使用GPU Instancing
执行CommandBuffer
CUSTOM RENDER PASS
• 因为我们自定义RenderPass不希望被层所限制,所以就无法使用URP自带的方法,这样得自己来处
理裁剪.(摄像机看不到的地方被CPU裁剪)
• 主线程裁剪
• 利用JobSystem多线程中裁剪
SRP BATCHER与GPU INSTNCING区别
• m_BatchRendererGroup.AddBatch
• cmd.DrawMeshInstanced()
• 前面介绍了这两个渲染接口,遗憾的是它们只支持GPU Instancing,前者没有渲染1024个限制(其
实是分成了多次提交),并且支持Job多线程裁剪(需要自己写代码)
• SRP Batcher并没有提供代码级的渲染接口,必须是GameObject在Hierarchy视图里的才支持
• GPU Instancing虽然节省了Draw Call,但是如果MaterialPropertyBlock的数据过大可能还不如SRP
Batcher
• 大家也可以自行测试。
URP 内置的RENDERPASS
直光
MainLightShadow
CasterPass
深度图
DepthOnlyPass
色彩映射
ColorGradingLut
Pass
不透明物体
天空盒
DrawSkyboxPass
点光
AdditionalLightsSh
adowCasterPass
ShadowMap
拷贝深度图到
RT
CopyDepthPass
半透明物体
后处理
PostProcessPass
最终后处理
PostProcessPass
捕获相机输出
CapturePass
最终输出
FinalBlit
Custom
Render Pass
可以添加在
以上任意节
点中
UI
URP 内置的RENDERPASS
• 出于定制的角度,大家完全可以修改内置的Pass来达到最优化
• 每一步Pass后都可以抓取屏幕Blit到贴图中自己使用(扰动、模糊等)
• Blit可以降低分辨率执行且多次操作,比GrabPass更具有优势(GrabPass已经被URP废除)
整体流程
添加渲染资源
绑定渲染器2个
摄像机绑定某个渲染器,可以运行切换
前向渲染器
Light颜色
Light阴影
不透明物体
透明物体Pass
后处理pass
……etc
Unity内置了前向渲染器包括了这些
完全可以自己写个独立的渲染器,我
之前写过一个自定义渲染器来计算特
效的OverDraw,大家可以参考
https://www.xuanyusong.com/archives/
4674
把数据传递给GPU-顶点数据
• Hiearchy视图中的游戏对象
• Graphics.DrawMeshInstanced 等一系列API
(-0.5,0.5,-0.5)
(0.5,-0.5,-0.5)
[ 1,0,0,10
0,2,0,200
0,0,3,340
0,0,0,1 ] 模型世界矩阵
老管线
C++中将unity_ObjectToWord M矩阵传入,在
C++中我们没法改
C#中将VP矩阵传入,就有了修改它的可能
把数据传递给GPU VP矩阵
观察矩阵
投影矩阵
注意模型所在世界transform是不同的,每个模型的M矩阵也是
不同的,但是摄像机的transform和远近裁切面是不变的,所以
通常会在CPU将 V*P后在传入GPU
V和P也会单独传入,这样可以灵活做每个空间转换
最后从裁剪空间到NDC空间
完整流程
• URP每个摄像机会绑定Universal Additional Camera Data,就是对原本Camera 组件保存信息的拓展
• 遍历每个摄像机传入每个摄像机的VP矩阵。
• 讲这个的原因就是为了引入动态FOV的功能
• 有时候需要在顶点着色器转世界矩阵、转视图矩阵、也需要单独传入V 和 P矩阵
动态FOV
• FPS游戏动态调整某个物体的FOV比如枪,其他则不受影响
• 原理就是给枪传入不同的视图和投影矩阵
URP升级指南
• From Built-in to URP 固定管线转URP方法
• 一键升级,自定义shader需要自己处理
GRABPASS
• URP禁用了Grab Pass
• Grab Pass就是带宽杀手,比如一个Blur模糊操作, Grab Pass至少需要横向纵向抓2次,而且无法
减低分辨率
• Grab Pass优点就是随时都可以抓屏,比如在2层UI之间做Blur这种
• URP做起来就比较麻烦了,但是URP效率高,接着我们讲讲原理
URP抓屏
抓取固定Pass上的贴图
降低分辨率
模糊卷积
升采样
URP抓屏
还记得URP这堆pass吗?
初始化定义关键点的RT贴图,颜色RT、深度RT、半透RT、后处理RT
深度以及每个Pass都会给颜色RT上绘制,如果勾选了深度图和不透明图,
URP会在它Blit到一张RT上,供后面使用
渲染流程
SetUp负责渲染初始化,配置FrameBuffer,深度
Buffer以及初始化每个Pass并且将pass加入渲染
队列
Execute负责排序所有Pass,首先调用
每个Pass的Configure、SetRenderTarget
最后是Exccute方法
渲染流程-清空缓冲区
• 每帧会分配临时缓冲区用于shadowmap(可复用RT)
• Clear (color + z + stencil) 清空所有颜色以及深度
• MainLightShadowCasterPass中设置ClearFlag和Color
• 前面提到的Execute就会执行SetRenderTarget
每个Pass可以决定是否要清空缓冲区,颜色或深
度、可以单独配置,这快性能完全掌握在自己
手里。
渲染流程-SHADOW MAP
• ShadowMap每帧会保
存在临时RT中
• 意味着可以随时访问
shadowMap颜色缓冲
• 对它起了一个别名
• Shader中也可以方便对
它进行采样
渲染流程-渲染到缓冲区
• 向缓冲区RT上绘制
• 自定义Pass可以穿插在任
意位置
• 意味着可以随时访问颜色
RT缓冲
• 也可以根据情况Blit 到RT中
• 注意,
(_CameraColorTexture)
并非渲染缓冲区,以下都
简称颜色RT 真正的渲染缓冲区
渲染流程-渲染到缓冲区
• 天空盒也继续像颜色RT上画
渲染流程-渲染到缓冲区
• 半透明继续像颜色RT画
• 下面就是后处理了
后处理根据当前颜色RT向
_AfterPostProcessTexture RT上画。
在将上面的RT
Blit到颜色RT上
渲染流程-UI
• 绘制UI,继续向颜色RT上画
• UI使用单独摄像机,使用Camera Stacking 叠上去。
• UI不使用后处理
渲染流程-FINAL BLIT
• Final Blit 负责将颜色RT最终Blit到颜色缓冲中
• Blit(_CameraColorTexture, CameraTarget,
material);
• 判断设备是否支持SRGB转换 不支持就在
Blit .shader里进行伽马矫正
• 如果支持SRGB转换就直接Blit,但是这完全
是多余的一次Blit可以考虑优化掉
优化FINAL BLIT
如果手机支持SRGB转换
AlterPosProcessTexturez可以省掉,直接给颜
色缓冲写
UI绘制完也直接给颜色缓冲写,不再给颜色
RT上写
真正的渲染缓冲区,直接给它上面写
干掉FINAL BLIT
干掉FinalBlit
优化
• 3D降分辨率,UI高清分辨率
• 3D摄像机后处理在UberPost将低分辨率
的_CameraColorTexture写入颜色缓冲区
• 高清UI直接给颜色缓冲区写
POST-PROCESSING V3
• V2同时支持老管线和URP管线
• V3只支持URP管线,它并不需要兼容老管线,性能会更加优化
• V3直接内嵌在URP管线中了
• 绑定Volum组件添加对应后处理就可以
• 每个后处理的执行顺序是被写死在URP里的
后处理拓展
• 在不修改URP源码的情况下,自定义后处理效果只能
放在V3后处理的前面或后面执行
• 创建自定义RenderFeature
• 这里我们设置自定义Blur效果在V3后处理之前
后处理拓展
• 因为我们干掉了FinalBlit,这里的后处理要给颜色RT上画,并非颜色缓冲画。
• 这样V3后处理结束的时候将颜色RT直接写入颜色缓冲中。
• UI继续往上叠,和之前的流程一样
• 自定义Feature中要将_CameraColorTexture 颜色RT传进去
后处理拓展
拓展后处理
• 还可以自定义Volum,但是这样需要自己将数据传给RenderFeature
结束
• 讨论

More Related Content

What's hot

HDR Theory and practicce (JP)
HDR Theory and practicce (JP)HDR Theory and practicce (JP)
HDR Theory and practicce (JP)Hajime Uchimura
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부Eunseok Yi
 
Advanced Scenegraph Rendering Pipeline
Advanced Scenegraph Rendering PipelineAdvanced Scenegraph Rendering Pipeline
Advanced Scenegraph Rendering PipelineNarann29
 
Parallel Futures of a Game Engine
Parallel Futures of a Game EngineParallel Futures of a Game Engine
Parallel Futures of a Game EngineJohan Andersson
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介torisoup
 
업적,칭호,타이틀 그게 뭐든간에...
업적,칭호,타이틀 그게 뭐든간에...업적,칭호,타이틀 그게 뭐든간에...
업적,칭호,타이틀 그게 뭐든간에...SeungYeon Jeong
 
Customize renderpipeline
Customize renderpipelineCustomize renderpipeline
Customize renderpipelineAkilarLiao
 
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들Jubok Kim
 
UniRx完全に理解した
UniRx完全に理解したUniRx完全に理解した
UniRx完全に理解したtorisoup
 
게임제작개론: #3 간접통제와 게임 커뮤니티
게임제작개론: #3 간접통제와 게임 커뮤니티게임제작개론: #3 간접통제와 게임 커뮤니티
게임제작개론: #3 간접통제와 게임 커뮤니티Seungmo Koo
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
Physically Based Lighting in Unreal Engine 4
Physically Based Lighting in Unreal Engine 4Physically Based Lighting in Unreal Engine 4
Physically Based Lighting in Unreal Engine 4Lukas Lang
 
Windowsの画面スケーリングを きちんと理解しよう
Windowsの画面スケーリングをきちんと理解しようWindowsの画面スケーリングをきちんと理解しよう
Windowsの画面スケーリングを きちんと理解しようYuya Yamaki
 
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)Gerke Max Preussner
 
Unite2019 HLOD를 활용한 대규모 씬 제작 방법
Unite2019 HLOD를 활용한 대규모 씬 제작 방법Unite2019 HLOD를 활용한 대규모 씬 제작 방법
Unite2019 HLOD를 활용한 대규모 씬 제작 방법장규 서
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기ChangKyu Song
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규ChangKyu Song
 
Color Science for Games(JP)
Color Science for Games(JP)Color Science for Games(JP)
Color Science for Games(JP)Hajime Uchimura
 

What's hot (20)

Shaders in Unity
Shaders in UnityShaders in Unity
Shaders in Unity
 
HDR Theory and practicce (JP)
HDR Theory and practicce (JP)HDR Theory and practicce (JP)
HDR Theory and practicce (JP)
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
 
Advanced Scenegraph Rendering Pipeline
Advanced Scenegraph Rendering PipelineAdvanced Scenegraph Rendering Pipeline
Advanced Scenegraph Rendering Pipeline
 
Parallel Futures of a Game Engine
Parallel Futures of a Game EngineParallel Futures of a Game Engine
Parallel Futures of a Game Engine
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
업적,칭호,타이틀 그게 뭐든간에...
업적,칭호,타이틀 그게 뭐든간에...업적,칭호,타이틀 그게 뭐든간에...
업적,칭호,타이틀 그게 뭐든간에...
 
Customize renderpipeline
Customize renderpipelineCustomize renderpipeline
Customize renderpipeline
 
脱Unity!? UE4でVR開発のここが変わった
脱Unity!? UE4でVR開発のここが変わった脱Unity!? UE4でVR開発のここが変わった
脱Unity!? UE4でVR開発のここが変わった
 
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들
 
UniRx完全に理解した
UniRx完全に理解したUniRx完全に理解した
UniRx完全に理解した
 
게임제작개론: #3 간접통제와 게임 커뮤니티
게임제작개론: #3 간접통제와 게임 커뮤니티게임제작개론: #3 간접통제와 게임 커뮤니티
게임제작개론: #3 간접통제와 게임 커뮤니티
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Physically Based Lighting in Unreal Engine 4
Physically Based Lighting in Unreal Engine 4Physically Based Lighting in Unreal Engine 4
Physically Based Lighting in Unreal Engine 4
 
Windowsの画面スケーリングを きちんと理解しよう
Windowsの画面スケーリングをきちんと理解しようWindowsの画面スケーリングをきちんと理解しよう
Windowsの画面スケーリングを きちんと理解しよう
 
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)
 
Unite2019 HLOD를 활용한 대규모 씬 제작 방법
Unite2019 HLOD를 활용한 대규모 씬 제작 방법Unite2019 HLOD를 활용한 대규모 씬 제작 방법
Unite2019 HLOD를 활용한 대규모 씬 제작 방법
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
Color Science for Games(JP)
Color Science for Games(JP)Color Science for Games(JP)
Color Science for Games(JP)
 

Similar to 《SRP到URP从原理到应用》

【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文MAKERPRO.cc
 
ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染Ning Hu
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事Chieh (Jack) Yu
 
面向对象设计七大原则
面向对象设计七大原则面向对象设计七大原则
面向对象设计七大原则zoorz
 
HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程Souyi Yang
 
如何設計電腦 -- 還有讓電腦變快的那些方法
如何設計電腦  -- 還有讓電腦變快的那些方法如何設計電腦  -- 還有讓電腦變快的那些方法
如何設計電腦 -- 還有讓電腦變快的那些方法鍾誠 陳鍾誠
 
技术人怎么做产品
技术人怎么做产品技术人怎么做产品
技术人怎么做产品Cando Zhou
 
Team1 - 拉亞計畫
Team1 - 拉亞計畫Team1 - 拉亞計畫
Team1 - 拉亞計畫nctusee
 
SDN ryu 專題安裝
SDN ryu 專題安裝SDN ryu 專題安裝
SDN ryu 專題安裝承樺 董
 
杜增强 Flash移动开发优化技巧
杜增强 Flash移动开发优化技巧杜增强 Flash移动开发优化技巧
杜增强 Flash移动开发优化技巧增强 杜
 
高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程Souyi Yang
 
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林imShining @DevCamp
 
如何客製化URP渲染流程.pptx
如何客製化URP渲染流程.pptx如何客製化URP渲染流程.pptx
如何客製化URP渲染流程.pptxAkilarLiao
 
VPU&Teachable Machine介紹
VPU&Teachable Machine介紹VPU&Teachable Machine介紹
VPU&Teachable Machine介紹YOU SHENG CHEN
 
DDD系統分析
DDD系統分析DDD系統分析
DDD系統分析國昭 張
 
20120516 axure rp prototype design outline
20120516 axure rp prototype design outline20120516 axure rp prototype design outline
20120516 axure rp prototype design outlineturtleknight
 
成大心理系-Prototyping方法
成大心理系-Prototyping方法成大心理系-Prototyping方法
成大心理系-Prototyping方法Souyi Yang
 
Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化Dahui Feng
 

Similar to 《SRP到URP从原理到应用》 (20)

【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
 
ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
 
面向对象设计七大原则
面向对象设计七大原则面向对象设计七大原则
面向对象设计七大原则
 
HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程
 
如何設計電腦 -- 還有讓電腦變快的那些方法
如何設計電腦  -- 還有讓電腦變快的那些方法如何設計電腦  -- 還有讓電腦變快的那些方法
如何設計電腦 -- 還有讓電腦變快的那些方法
 
技术人怎么做产品
技术人怎么做产品技术人怎么做产品
技术人怎么做产品
 
Team1 - 拉亞計畫
Team1 - 拉亞計畫Team1 - 拉亞計畫
Team1 - 拉亞計畫
 
42qu thrift1
42qu thrift142qu thrift1
42qu thrift1
 
SDN ryu 專題安裝
SDN ryu 專題安裝SDN ryu 專題安裝
SDN ryu 專題安裝
 
Cnc fablab
Cnc   fablabCnc   fablab
Cnc fablab
 
杜增强 Flash移动开发优化技巧
杜增强 Flash移动开发优化技巧杜增强 Flash移动开发优化技巧
杜增强 Flash移动开发优化技巧
 
高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程
 
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
 
如何客製化URP渲染流程.pptx
如何客製化URP渲染流程.pptx如何客製化URP渲染流程.pptx
如何客製化URP渲染流程.pptx
 
VPU&Teachable Machine介紹
VPU&Teachable Machine介紹VPU&Teachable Machine介紹
VPU&Teachable Machine介紹
 
DDD系統分析
DDD系統分析DDD系統分析
DDD系統分析
 
20120516 axure rp prototype design outline
20120516 axure rp prototype design outline20120516 axure rp prototype design outline
20120516 axure rp prototype design outline
 
成大心理系-Prototyping方法
成大心理系-Prototyping方法成大心理系-Prototyping方法
成大心理系-Prototyping方法
 
Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化Linux必备知识与Unix基础文化
Linux必备知识与Unix基础文化
 

《SRP到URP从原理到应用》