ue4-shader-Predloga po meri CustomStencil
Ue4 Shader Custom Template Customstencil
title: ue4-shader-Predloga po meri CustomStencil
kategorije: UnrealEngine4-Shader
oznake: [ue4, senčnik, šablona, preizkus predloge]
datum: 2019-05-09 21:00:50
komentarji: napačno
Šablona po meri je razširitev po meri. Šablona po meri je razširitev po meri.
Prequel
- Uradna dokumentacija: šablona CustomDepth- https://docs.unrealengine.com/en-US/Engine/Rendering/PostProcessEffects/PostProcessMaterials
- Postopek večbarvnega orisa v Unreal Engine 4 - http://www.tomlooman.com/multi-color-outline-post-process-in-unreal-engine-4/
Priročnik
-
Projekt odpre preizkus predloge, ki je privzeto zaprt. nastavitve projekta -> motor -> upodabljanje -> naknadna obdelava -> prepust globinske šablone po meri , Izberite omogočeno s šablono
-
Predmetom dodelite vrednosti predloge. V mreža Išči po komponentah upodabljanje ,
Označite upodobi prelaz customDepth , daj vrednost šablone customDepth Navedite vrednost predloge 180 (prilagoditi)
-
Če uporabljate c ++, povezano kodo
GetMesh()->SetRenderCustomDepth(true) GetMesh()->SetCustomDepthStencilValue(255) // assign an int32 within 1-255 range.
-
Lahko si ga ogledate. sveti -> vizualizacija medpomnilnika -> šablona po meri
-
Preskusni oris
Sklic: Orisni učinek (1. del) - https://www.parallelcube.com/2017/12/05/outline-effect-part-1/
-
Upodobitve
-
To je post post Material, ujemanje obseg po postopku uporaba
-
Koda vozlišča po meri. Vloga je izravnati medpomnilnik, ki ustreza slikovnim pikam zaslona, in nato splakniti GBuffer Da dobite vrednost predloge.
GetScreenSpaceData Funkcija je lahko GBuffer Pridobite podatke, to je Zamudni cevovod Funkcija. Referenca: Base Pass Pixel Shader
#if SCENE_TEXTURES_DISABLED return 0 #endif float offset_h = SceneTexelSize.r * Thickness float offset_v = SceneTexelSize.g * Thickness float TL = GetScreenSpaceData(ViewportUVToBufferUV(ScreenPosition + float2(-offset_h, -offset_v)), false).GBuffer.CustomStencil.r float TM = GetScreenSpaceData(ViewportUVToBufferUV(ScreenPosition + float2(0, -offset_v)), false).GBuffer.CustomStencil.r float TR = GetScreenSpaceData(ViewportUVToBufferUV(ScreenPosition + float2(offset_h, -offset_v)), false).GBuffer.CustomStencil.r float ML = GetScreenSpaceData(ViewportUVToBufferUV(ScreenPosition + float2(-offset_h, 0)), false).GBuffer.CustomStencil.r float MR = GetScreenSpaceData(ViewportUVToBufferUV(ScreenPosition + float2(offset_h, 0)), false).GBuffer.CustomStencil.r float BL = GetScreenSpaceData(ViewportUVToBufferUV(ScreenPosition + float2(-offset_h, offset_v)), false).GBuffer.CustomStencil.r float BM = GetScreenSpaceData(ViewportUVToBufferUV(ScreenPosition + float2(0, offset_v)), false).GBuffer.CustomStencil.r float BR = GetScreenSpaceData(ViewportUVToBufferUV(ScreenPosition + float2(offset_h, offset_v)), false).GBuffer.CustomStencil.r return max(TL, max(TM, max(TR, max(ML, max(MR, max(BL, max(BM, BR ) ) ) ) ) ) )
-
-
Diagram pomožnega razumevanja
Na koncu je le presečišče vrednost 1, ki je območje kapi. Lerp funkcija 0 je izvirna barva, 1 pa barva poteze