Ue4

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


Priročnik

  1. Projekt odpre preizkus predloge, ki je privzeto zaprt. nastavitve projekta -> motor -> upodabljanje -> naknadna obdelava -> prepust globinske šablone po meri , Izberite omogočeno s šablono





  2. 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