SlideShare a Scribd company logo
1 of 7
Download to read offline
Firstname M. Lastname
Title
Company
Unity SRP
Lightweight RenderPipeline
Unity R&D(Spotlight) Team
Senior Graphics Programmer
김성대
Firstname M. Lastname
Title
Company
Scriptable Render Pipeline
시작!
렌더링 엔트리 포인트(Rendering Entry Point)
렌더링 엔트리 포인트(Rendering Entry Point)
• RenderPipeline 상속
• Render()함수에서 시작
1
2
3
4
public class BasicPipeInstance : RenderPipeline
{
protected override void Render(ScriptableRenderContext context, Camera[] cameras){}
}
렌더 파이프라인 컨텍스트(Render Pipeline Context)
• 그래픽 하드웨어와 통신
렌더 타겟(RenderTarget) 클리어
렌더링 및 최종 실행
1
2
3
var cmd = new CommandBuffer(); // CommandBuffer 생성
cmd.ClearRenderTarget(true, false, Color.green); // RenderTarget을 클리어후 녹색으로 채우기
context.ExecuteCommandBuffer(cmd); // CommandBuffer를 queue에 넣기
1
2
3
4
5
// 렌더링(내부에 CommandBuffer를 queue함)
context.DrawRenderers(cullResults, ref drawSettings, ref filterSettings);
// CommandBuffer의 queues를 최종 실행
context.Submit();
컬링(Culling)
• 보이지 않는 오브젝트 검출
cullResults에 PVS(Potentially Visible Set)를 가짐
- cullResults.visibleLights(화면에 보이는 라이트목록)
- cullResults.visibleRenderers(화면에 보이는 오브젝트 목록)(19.1 버전에서는 노출 안됨!)
1
2
3
4
5
6
7
8
9
10
// 카메라로부터 cullingParams정보 얻기
ScriptableCullingParameters cullingParams;
If (!camera.TryGetCullingParameters(IsStereoEnabled(camera), out cullingParams))
continue;
// 원하면 cullingParams 수정할 수 있음
cullingParams.shadowDistance = Mathf.Min(m_ShadowSettings.maxShadowDistance, m_CurrCamera.farClipPlane);
// culling 실행
CullingResults cullResults = context.Cull(ref cullingParams);
전체 자료 다운로드는
하단 신청폼을 통해 신청 후,
다운로드 하실 수 있습니다.

More Related Content

Similar to 유니티 웨비나 3. Unity SRP와 LWRP에 대한 모든 것!

제 19회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [전진 4드론] : RAD(Reinforcement learning method for ...
제 19회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [전진 4드론] : RAD(Reinforcement learning method for ...제 19회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [전진 4드론] : RAD(Reinforcement learning method for ...
제 19회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [전진 4드론] : RAD(Reinforcement learning method for ...BOAZ Bigdata
 
[0326 박민근] deferred shading
[0326 박민근] deferred shading[0326 박민근] deferred shading
[0326 박민근] deferred shadingMinGeun Park
 
Surface flingerservice(서피스플링거서비스초기화 ics)
Surface flingerservice(서피스플링거서비스초기화 ics)Surface flingerservice(서피스플링거서비스초기화 ics)
Surface flingerservice(서피스플링거서비스초기화 ics)fefe7270
 
윈도우 매니저 스터디: 1. 윈도우 매니저 출력
윈도우 매니저 스터디: 1. 윈도우 매니저 출력윈도우 매니저 스터디: 1. 윈도우 매니저 출력
윈도우 매니저 스터디: 1. 윈도우 매니저 출력nemoux
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스Sungik Kim
 
[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli종빈 오
 
Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2YEONG-CHEON YOU
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012devCAT Studio, NEXON
 
Unity Surface Shader for Artist 03
Unity Surface Shader for Artist 03Unity Surface Shader for Artist 03
Unity Surface Shader for Artist 03SangYun Yi
 
[0312 조진현] good bye dx9
[0312 조진현] good bye dx9[0312 조진현] good bye dx9
[0312 조진현] good bye dx9진현 조
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shadingMinGeun Park
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기Jaeseung Ha
 
Spark performance tuning
Spark performance tuningSpark performance tuning
Spark performance tuninghaiteam
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10흥배 최
 
TR 069 클라이언트 검토자료 3편
TR 069 클라이언트 검토자료 3편TR 069 클라이언트 검토자료 3편
TR 069 클라이언트 검토자료 3편ymtech
 
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)LanarkSeung
 
오픈드론맵 한국어 사용자 지침서
오픈드론맵 한국어 사용자 지침서오픈드론맵 한국어 사용자 지침서
오픈드론맵 한국어 사용자 지침서Byeong-Hyeok Yu
 
모바일웹Ui개발 저자세미나 1부
모바일웹Ui개발 저자세미나 1부모바일웹Ui개발 저자세미나 1부
모바일웹Ui개발 저자세미나 1부NAVER D2
 
20201121 코드 삼분지계
20201121 코드 삼분지계20201121 코드 삼분지계
20201121 코드 삼분지계Chiwon Song
 

Similar to 유니티 웨비나 3. Unity SRP와 LWRP에 대한 모든 것! (20)

제 19회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [전진 4드론] : RAD(Reinforcement learning method for ...
제 19회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [전진 4드론] : RAD(Reinforcement learning method for ...제 19회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [전진 4드론] : RAD(Reinforcement learning method for ...
제 19회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [전진 4드론] : RAD(Reinforcement learning method for ...
 
[0326 박민근] deferred shading
[0326 박민근] deferred shading[0326 박민근] deferred shading
[0326 박민근] deferred shading
 
Surface flingerservice(서피스플링거서비스초기화 ics)
Surface flingerservice(서피스플링거서비스초기화 ics)Surface flingerservice(서피스플링거서비스초기화 ics)
Surface flingerservice(서피스플링거서비스초기화 ics)
 
윈도우 매니저 스터디: 1. 윈도우 매니저 출력
윈도우 매니저 스터디: 1. 윈도우 매니저 출력윈도우 매니저 스터디: 1. 윈도우 매니저 출력
윈도우 매니저 스터디: 1. 윈도우 매니저 출력
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스
 
[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli
 
Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 
Unity Surface Shader for Artist 03
Unity Surface Shader for Artist 03Unity Surface Shader for Artist 03
Unity Surface Shader for Artist 03
 
[0312 조진현] good bye dx9
[0312 조진현] good bye dx9[0312 조진현] good bye dx9
[0312 조진현] good bye dx9
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 
Spark performance tuning
Spark performance tuningSpark performance tuning
Spark performance tuning
 
Sw설계
Sw설계Sw설계
Sw설계
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
TR 069 클라이언트 검토자료 3편
TR 069 클라이언트 검토자료 3편TR 069 클라이언트 검토자료 3편
TR 069 클라이언트 검토자료 3편
 
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
 
오픈드론맵 한국어 사용자 지침서
오픈드론맵 한국어 사용자 지침서오픈드론맵 한국어 사용자 지침서
오픈드론맵 한국어 사용자 지침서
 
모바일웹Ui개발 저자세미나 1부
모바일웹Ui개발 저자세미나 1부모바일웹Ui개발 저자세미나 1부
모바일웹Ui개발 저자세미나 1부
 
20201121 코드 삼분지계
20201121 코드 삼분지계20201121 코드 삼분지계
20201121 코드 삼분지계
 

유니티 웨비나 3. Unity SRP와 LWRP에 대한 모든 것!

  • 1. Firstname M. Lastname Title Company Unity SRP Lightweight RenderPipeline Unity R&D(Spotlight) Team Senior Graphics Programmer 김성대
  • 4. 렌더링 엔트리 포인트(Rendering Entry Point) • RenderPipeline 상속 • Render()함수에서 시작 1 2 3 4 public class BasicPipeInstance : RenderPipeline { protected override void Render(ScriptableRenderContext context, Camera[] cameras){} }
  • 5. 렌더 파이프라인 컨텍스트(Render Pipeline Context) • 그래픽 하드웨어와 통신 렌더 타겟(RenderTarget) 클리어 렌더링 및 최종 실행 1 2 3 var cmd = new CommandBuffer(); // CommandBuffer 생성 cmd.ClearRenderTarget(true, false, Color.green); // RenderTarget을 클리어후 녹색으로 채우기 context.ExecuteCommandBuffer(cmd); // CommandBuffer를 queue에 넣기 1 2 3 4 5 // 렌더링(내부에 CommandBuffer를 queue함) context.DrawRenderers(cullResults, ref drawSettings, ref filterSettings); // CommandBuffer의 queues를 최종 실행 context.Submit();
  • 6. 컬링(Culling) • 보이지 않는 오브젝트 검출 cullResults에 PVS(Potentially Visible Set)를 가짐 - cullResults.visibleLights(화면에 보이는 라이트목록) - cullResults.visibleRenderers(화면에 보이는 오브젝트 목록)(19.1 버전에서는 노출 안됨!) 1 2 3 4 5 6 7 8 9 10 // 카메라로부터 cullingParams정보 얻기 ScriptableCullingParameters cullingParams; If (!camera.TryGetCullingParameters(IsStereoEnabled(camera), out cullingParams)) continue; // 원하면 cullingParams 수정할 수 있음 cullingParams.shadowDistance = Mathf.Min(m_ShadowSettings.maxShadowDistance, m_CurrCamera.farClipPlane); // culling 실행 CullingResults cullResults = context.Cull(ref cullingParams);
  • 7. 전체 자료 다운로드는 하단 신청폼을 통해 신청 후, 다운로드 하실 수 있습니다.