[일반 렌더링 Pipeline] ShaderGraph를 후면 효과로 사용해 보십시오.
입문
일반 렌더링 Pipeline의 ForwardRenderData 또는 ScriptableRenderFeature를 사용하는 경우
렌더 파이프라인에 자체 처리 (렌더 경로) 를 추가할 수 있습니다.
이번에 렌더링 파이프의 마지막에 착색기 도표를 삽입하여 안개바람의 표현을 실현하는 뒷효과를 만들었다.
생성된 렌더링 파이프라인은 카메라 어셈블리 드롭다운 목록에서 쉽게 전환할 수 있습니다.
안개바람 효과 실시 정보
카메라의 깊이 값(깊이 정보)을 이용하여 Lerp로 두 가지 색을 합성하여 화면에 표시합니다.
색상 방정식画面に出力する色 = Lerp(カラーA, カラーB, デプス値)
환경
[Unity 버전]
Unity2020.1.0a3
[포장]
Universal Render Pipeline - Version 7.1.2
깊이 버퍼 설정 사용
음영처리기 차트에서 깊이 버퍼를 얻기 위해 파이프라인 리소스의 깊이 텍스쳐를 확인합니다.
STEP1: 재료 준비
단계 1.1: 음영처리기 그래픽 만들기
항목 보기 메뉴에서 재료 볼/재료 볼 도면 작성을 선택하여 재료 볼 도면을 작성합니다.
이번에는 Render Depth Simple이라는 이름을 지어보았습니다.
단계 1.2: 음영처리기 그래픽 편집
명암기 도면에서 텍스쳐 2차원 속성을 정의하고 이름을 지정합니다_카메라 깊이 무늬는 카메라 깊이 버퍼(깊이 정보)를 제공한다.
이 깊이 버퍼를 사용하여 두 색상을 Lerp 노드에 결합하고 Unlit Master 노드로 내보냅니다.
_CameraDepthTexture 내보내기 검사 닫기
음영처리기 차트가 완료되었습니다.
STEP1.3: 재료 만들기
재료 볼 차트를 마우스 오른쪽 버튼으로 클릭하여 재료를 생성합니다.
Shader Graphs_렌더 깊이가 단순하다는 재료가 생성됩니다.
생성된 재료의 음영처리기에 이전 재료 그래픽 설정이 있는지 확인할 수 있습니다.
STEP1.4: 리소스 아래에 재료 배치
리소스/리소스/매트릭스 폴더를 만들고 재료를 이동합니다.
재료 이름은 렌더 깊이입니다.
재료 준비는 여기서 끝냅니다.
단계 2: 렌더링 리소스를 만들기 카메라에 등록
렌더 리소스를 생성하여 카메라에 등록하면 렌더 파이프라인에 자체 처리를 삽입할 수 있습니다.
이번에는 렌더링이 끝날 때 음영처리기 차트를 실행하도록 렌더링 파이프라인을 구성합니다.
단계 2.1: 렌더기 리소스 만들기
항목에서 보기
[생성/렌더링/일반 렌더링 Pipeline/Forward 렌더기] 를 선택합니다.
ForwardRender 리소스를 작성합니다.
이번 이름은 RenderDepth입니다.
STEP2.2: 렌더 리소스를 목록에 등록
파이프라인 리소스의 렌더 목록에 자체 제작한 렌더 리소스를 등록하는 경우
카메라 구성 요소의 렌더기에서 선택할 수 있습니다.
카메라 렌더기를 전환하여 렌더링 파이프라인을 전환할 수 있습니다.
단계 2.3: 렌더 기능 만들기
생성된 렌더기에 자체 렌더링 프로세스를 추가하려면 렌더 피쳐를 생성해야 합니다.
리본에서 를 클릭합니다.
[생성/렌더링/일반 렌더링 물감 선/렌더기 피쳐] 를 선택한 경우
렌더 기능이 생성됩니다.
이번에는 Render Depth Feature라고 합니다.(RenderDepthFeature.cs 작성)
STEP2.4 렌더링 기능 다시 쓰기
생성된 RenderDepthFeaturecs를 (으)로 다시 씁니다.
단계 1의 렌더링 깊이 재료를 로드하고 재료를 사용하여 카메라 드로잉을 덮어씁니다.
RenderDepthFeature.csusing UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class RenderDepthFeature : ScriptableRendererFeature
{
class CustomRenderPass : ScriptableRenderPass
{
public Material material; // レンダリングに使用するマテリアル
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{
if (material == null) return;
var camera = renderingData.cameraData.camera; // 現在レンダリングを行っているカメラ
var cmd = CommandBufferPool.Get("RenderDepth"); // 適当なコマンドバッファをとってくる
cmd.Blit(Texture2D.whiteTexture, camera.activeTexture, material); // カメラにマテリアルを適用
context.ExecuteCommandBuffer(cmd); // コマンドバッファ実行
context.Submit();
}
}
CustomRenderPass m_ScriptablePass;
public override void Create()
{
m_ScriptablePass = new CustomRenderPass();
m_ScriptablePass.material = Resources.Load<Material>("Materials/RenderDepth"); // Resources/Materials/RenderDepth.matをロードする
m_ScriptablePass.renderPassEvent = RenderPassEvent.AfterRendering; // レンダリングが終わった後にレンダリングパスを実行
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
renderer.EnqueuePass(m_ScriptablePass);
}
}
Forward Render 리소스에 STEP2.5 Render Feature 등록
단계 2.1에서 만든 ForwardRender 리소스에 단계 2.3에서 만든 Render Depth Feature를 등록합니다.
STEP2.6 파이프라인 렌더링 완료
레벨 라이브러리의 Camera 구성 요소의 렌더기에서 렌더링 깊이를 선택하면 화면 표시가 변경됩니다.
렌더링이 끝날 때 재료 볼 그래픽을 실행하고 화면에 반영하도록 파이프라인 렌더링을 완료합니다.
STEP2.7 색상 변경 시도
재료 매개변수를 변경하면 즉시 화면에 반영됩니다.
총결산
이번에는 재료 볼 그래픽을 후면 효과로 사용할 수 있도록 파이프라인을 쉽게 렌더링할 수 있습니다.
재질 공의 장점은 직관적으로 재질 공을 조립할 수 있다는 것이다
렌더링 파이프라인에 ShaderGraph를 추가하면 효과를 직관적으로 조합할 수 있다고 생각합니다.
Unity 2019.4 LTS로 하고 싶은 상황
Unity 2019.4의 경우 RenderPassEvent.AfterRendering+1
및 FinalPostProcessPass
이 들어갑니다 Final Blit Pass
이번에 추가되는 후기 과정은 패스가 뭉개집니다.
이것은 다음과 같은 방식으로 RenderDepthFeature.cs
의Create
방법을 피할 수 있다.
RenderDepthFeature.cspublic override void Create()
{
m_ScriptablePass = new CustomRenderPass();
m_ScriptablePass.material = Resources.Load<Material>("Materials/RenderDepth"); // Resources/Materials/RenderDepth.matをロードする
m_ScriptablePass.renderPassEvent = RenderPassEvent.AfterRendering + 2;
}
Reference
이 문제에 관하여([일반 렌더링 Pipeline] ShaderGraph를 후면 효과로 사용해 보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/1ba2ffe27398719e7b53
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
画面に出力する色 = Lerp(カラーA, カラーB, デプス値)
단계 1.1: 음영처리기 그래픽 만들기
항목 보기 메뉴에서 재료 볼/재료 볼 도면 작성을 선택하여 재료 볼 도면을 작성합니다.
이번에는 Render Depth Simple이라는 이름을 지어보았습니다.
단계 1.2: 음영처리기 그래픽 편집
명암기 도면에서 텍스쳐 2차원 속성을 정의하고 이름을 지정합니다_카메라 깊이 무늬는 카메라 깊이 버퍼(깊이 정보)를 제공한다.
이 깊이 버퍼를 사용하여 두 색상을 Lerp 노드에 결합하고 Unlit Master 노드로 내보냅니다.
_CameraDepthTexture 내보내기 검사 닫기
음영처리기 차트가 완료되었습니다.
STEP1.3: 재료 만들기
재료 볼 차트를 마우스 오른쪽 버튼으로 클릭하여 재료를 생성합니다.
Shader Graphs_렌더 깊이가 단순하다는 재료가 생성됩니다.
생성된 재료의 음영처리기에 이전 재료 그래픽 설정이 있는지 확인할 수 있습니다.
STEP1.4: 리소스 아래에 재료 배치
리소스/리소스/매트릭스 폴더를 만들고 재료를 이동합니다.
재료 이름은 렌더 깊이입니다.
재료 준비는 여기서 끝냅니다.
단계 2: 렌더링 리소스를 만들기 카메라에 등록
렌더 리소스를 생성하여 카메라에 등록하면 렌더 파이프라인에 자체 처리를 삽입할 수 있습니다.
이번에는 렌더링이 끝날 때 음영처리기 차트를 실행하도록 렌더링 파이프라인을 구성합니다.
단계 2.1: 렌더기 리소스 만들기
항목에서 보기
[생성/렌더링/일반 렌더링 Pipeline/Forward 렌더기] 를 선택합니다.
ForwardRender 리소스를 작성합니다.
이번 이름은 RenderDepth입니다.
STEP2.2: 렌더 리소스를 목록에 등록
파이프라인 리소스의 렌더 목록에 자체 제작한 렌더 리소스를 등록하는 경우
카메라 구성 요소의 렌더기에서 선택할 수 있습니다.
카메라 렌더기를 전환하여 렌더링 파이프라인을 전환할 수 있습니다.
단계 2.3: 렌더 기능 만들기
생성된 렌더기에 자체 렌더링 프로세스를 추가하려면 렌더 피쳐를 생성해야 합니다.
리본에서 를 클릭합니다.
[생성/렌더링/일반 렌더링 물감 선/렌더기 피쳐] 를 선택한 경우
렌더 기능이 생성됩니다.
이번에는 Render Depth Feature라고 합니다.(RenderDepthFeature.cs 작성)
STEP2.4 렌더링 기능 다시 쓰기
생성된 RenderDepthFeaturecs를 (으)로 다시 씁니다.
단계 1의 렌더링 깊이 재료를 로드하고 재료를 사용하여 카메라 드로잉을 덮어씁니다.
RenderDepthFeature.csusing UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class RenderDepthFeature : ScriptableRendererFeature
{
class CustomRenderPass : ScriptableRenderPass
{
public Material material; // レンダリングに使用するマテリアル
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{
if (material == null) return;
var camera = renderingData.cameraData.camera; // 現在レンダリングを行っているカメラ
var cmd = CommandBufferPool.Get("RenderDepth"); // 適当なコマンドバッファをとってくる
cmd.Blit(Texture2D.whiteTexture, camera.activeTexture, material); // カメラにマテリアルを適用
context.ExecuteCommandBuffer(cmd); // コマンドバッファ実行
context.Submit();
}
}
CustomRenderPass m_ScriptablePass;
public override void Create()
{
m_ScriptablePass = new CustomRenderPass();
m_ScriptablePass.material = Resources.Load<Material>("Materials/RenderDepth"); // Resources/Materials/RenderDepth.matをロードする
m_ScriptablePass.renderPassEvent = RenderPassEvent.AfterRendering; // レンダリングが終わった後にレンダリングパスを実行
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
renderer.EnqueuePass(m_ScriptablePass);
}
}
Forward Render 리소스에 STEP2.5 Render Feature 등록
단계 2.1에서 만든 ForwardRender 리소스에 단계 2.3에서 만든 Render Depth Feature를 등록합니다.
STEP2.6 파이프라인 렌더링 완료
레벨 라이브러리의 Camera 구성 요소의 렌더기에서 렌더링 깊이를 선택하면 화면 표시가 변경됩니다.
렌더링이 끝날 때 재료 볼 그래픽을 실행하고 화면에 반영하도록 파이프라인 렌더링을 완료합니다.
STEP2.7 색상 변경 시도
재료 매개변수를 변경하면 즉시 화면에 반영됩니다.
총결산
이번에는 재료 볼 그래픽을 후면 효과로 사용할 수 있도록 파이프라인을 쉽게 렌더링할 수 있습니다.
재질 공의 장점은 직관적으로 재질 공을 조립할 수 있다는 것이다
렌더링 파이프라인에 ShaderGraph를 추가하면 효과를 직관적으로 조합할 수 있다고 생각합니다.
Unity 2019.4 LTS로 하고 싶은 상황
Unity 2019.4의 경우 RenderPassEvent.AfterRendering+1
및 FinalPostProcessPass
이 들어갑니다 Final Blit Pass
이번에 추가되는 후기 과정은 패스가 뭉개집니다.
이것은 다음과 같은 방식으로 RenderDepthFeature.cs
의Create
방법을 피할 수 있다.
RenderDepthFeature.cspublic override void Create()
{
m_ScriptablePass = new CustomRenderPass();
m_ScriptablePass.material = Resources.Load<Material>("Materials/RenderDepth"); // Resources/Materials/RenderDepth.matをロードする
m_ScriptablePass.renderPassEvent = RenderPassEvent.AfterRendering + 2;
}
Reference
이 문제에 관하여([일반 렌더링 Pipeline] ShaderGraph를 후면 효과로 사용해 보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/1ba2ffe27398719e7b53
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class RenderDepthFeature : ScriptableRendererFeature
{
class CustomRenderPass : ScriptableRenderPass
{
public Material material; // レンダリングに使用するマテリアル
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{
if (material == null) return;
var camera = renderingData.cameraData.camera; // 現在レンダリングを行っているカメラ
var cmd = CommandBufferPool.Get("RenderDepth"); // 適当なコマンドバッファをとってくる
cmd.Blit(Texture2D.whiteTexture, camera.activeTexture, material); // カメラにマテリアルを適用
context.ExecuteCommandBuffer(cmd); // コマンドバッファ実行
context.Submit();
}
}
CustomRenderPass m_ScriptablePass;
public override void Create()
{
m_ScriptablePass = new CustomRenderPass();
m_ScriptablePass.material = Resources.Load<Material>("Materials/RenderDepth"); // Resources/Materials/RenderDepth.matをロードする
m_ScriptablePass.renderPassEvent = RenderPassEvent.AfterRendering; // レンダリングが終わった後にレンダリングパスを実行
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
renderer.EnqueuePass(m_ScriptablePass);
}
}
이번에는 재료 볼 그래픽을 후면 효과로 사용할 수 있도록 파이프라인을 쉽게 렌더링할 수 있습니다.
재질 공의 장점은 직관적으로 재질 공을 조립할 수 있다는 것이다
렌더링 파이프라인에 ShaderGraph를 추가하면 효과를 직관적으로 조합할 수 있다고 생각합니다.
Unity 2019.4 LTS로 하고 싶은 상황
Unity 2019.4의 경우 RenderPassEvent.AfterRendering+1
및 FinalPostProcessPass
이 들어갑니다 Final Blit Pass
이번에 추가되는 후기 과정은 패스가 뭉개집니다.
이것은 다음과 같은 방식으로 RenderDepthFeature.cs
의Create
방법을 피할 수 있다.
RenderDepthFeature.cspublic override void Create()
{
m_ScriptablePass = new CustomRenderPass();
m_ScriptablePass.material = Resources.Load<Material>("Materials/RenderDepth"); // Resources/Materials/RenderDepth.matをロードする
m_ScriptablePass.renderPassEvent = RenderPassEvent.AfterRendering + 2;
}
Reference
이 문제에 관하여([일반 렌더링 Pipeline] ShaderGraph를 후면 효과로 사용해 보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/1ba2ffe27398719e7b53
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public override void Create()
{
m_ScriptablePass = new CustomRenderPass();
m_ScriptablePass.material = Resources.Load<Material>("Materials/RenderDepth"); // Resources/Materials/RenderDepth.matをロードする
m_ScriptablePass.renderPassEvent = RenderPassEvent.AfterRendering + 2;
}
Reference
이 문제에 관하여([일반 렌더링 Pipeline] ShaderGraph를 후면 효과로 사용해 보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/r-ngtm/items/1ba2ffe27398719e7b53텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)