라벨이 UE4 Graphics인 게시물 표시

frustum culling & GPU instancing examples

 https://github.com/Milk-Drinker01/Milk_Instancer01/blob/main/README.md https://github.com/miccall/Unity-GPU-Driven-Pipeline https://githubhot.com/index.php/repo/Milk-Drinker01/Milk_Instancer01 https://www.mpc-rnd.com/unity-gpu-culling-experiments/ https://github.com/ellioman/Indirect-Rendering-With-Compute-Shaders/blob/master/README.md https://github.com/ColinLeung-NiloCat/UnityURP-MobileDrawMeshInstancedIndirectExample https://youtu.be/dMreKTbQkcE https://youtu.be/e5WXx4PQXpU http://www.lighthouse3d.com/tutorials/view-frustum-culling/ https://github.com/tsherif/webgl2examples

GPU Instancing

이미지
 https://docs.unity3d.com/Manual/GPUInstancing.html GPU instancing GPU instancing is a  draw call optimization  method that renders multiple copies of a  mesh  with the same material in a single draw call. Each copy of the mesh is called an instance. This is useful for drawing things that appear multiple times in a  scene , for example, trees or bushes. GPU instancing renders identical meshes in the same draw call. To add variation and reduce the appearance of repetition, each instance can have different properties, such as  Color  or  Scale . Draw calls that render multiple instances appear in the  Frame Debugger  as  Draw Mesh (instanced) . Requirements and compatibility This section includes information about the platform, render pipeline, and SRP Batcher compatibility of GPU instancing. Platform compatibility GPU instancing is available on every platform except  WebGL  1.0. Render pipeline compatibility Feature Bu...

GPU Thread compute

 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=julie_eun1014&logNo=221116294215 1. 멀티 프로세서와 CUDA 코어 GPU의 구조는 코어 개수 * 코어 클락 으로 이루어졌습다. 따라서 GPU 코어는 CPU 코어와는 다른 구조를 가지는 것을 알 수 있습니다. CPU는 " 멀티 코어를 구성하는 전체 구성 요소 "를 뜻하고, GPU 에서는 이러한 구성 요소를  멀티 프로세서  라고 부릅니다. 멀티 프로세서 : 계산 유닛, 로드스토어 유닛 등 GPU를 구성하는 기본 요소로 구성된 최소단위. GPU는 멀티프로세서 내에 여러 개의 GPU 코어를 가지고 있음. 그 안에 계산 유닛을   GPU 코어  라고 합니다. CPU코어와 GPU 코어의 역할은 동일합니다. CPU는 하나의 칩당 멀티코어로 4~12개 정도의 코어를 가지고 있습니다. GPU는 하나의 칩에  최대 15개의 멀티 프로세서 를 가지고 있습니다. 이 멀티 프로세서는 각각 안에  192개의 코어(계산 유닛) 을 가지고 있습니다. 따라서 하나의 칩에 총 코어가 2880개 입니다. 2. Block과 Thread의 개념 GPU 내에 여러 개의 멀티 프로세서가 존재하는데, 하나의 멀티 프로세서에서 작동되는 "스레드의 모음" 을  블록 이라고 합니다. 따라서 GPU안에서 동작하는 모든 스레드의 개수는 블록 * 블록 내의 스레드 개수 입니다. 스레드는  멀티 프로세서 내에 서 작동되는 코어 하나 를  스레드 라고 합니다. 정확히는 코어 하나에 할당된 명령어입니다.. 블록과 스레드는 하드웨어와 1:n으로 매칭되기 때문에 자원이 허용되는 한 하나의 멀티 프로세서에서 여러 개의 블록을 동시에 실행시킬 수 있습니다. 그러면 스레드도 마찬가지로 여러 개를 동시에 실행시킬 수 있겠죠? 3. Kernel 실행시키기 GPU 병렬 프...

Simple PBR DirectX11

 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sorkelf&logNo=221052520085

URP pipeline conversion

이미지
 https://blog.naver.com/mnpshino/221844164319 TAG ​ = > 먼저 태그에 'RenderPipeline"="UniversalPipeline"을 추가해 줍니다. 큐는 기본으로 2000(Geometry) 일테니 추가해주셔도 되고 지금은 안해주셔도 됩니다. Noraml을 이용하여 라이팅 계산을 해 주실때는 기존에는 ForwardBase로 바꿔주셔야 했지만, 이젠 그런거 신경쓰지 않으셔도 됩니다. INCLUDE & multi compile [출처]   URP 셰이더 코딩 튜토리얼 : 제 1편 - Unlit Soft Shadow | 작성자   Madumpa

Use shadow receiver in Custom shader urp

 https://illu.tistory.com/1407 Shader "URPDefaultCodeSample" {     Properties      {         [Header(UniversalRP Default Shader code)]         [Space(20)]         _TintColor("TintColor", color) = (1,1,1,1)         _MainTex("Texture", 2D) = "white" {}      // Toggle control opaque to TransparentCutout          [Toggle]_AlphaTest("Alpha Test", float) = 0         _Alpha("AlphaClip", Range(0,1)) = 0.5          [Enum(UnityEngine.Rendering.CullMode)] _Cull("Cull Mode", Float) = 1        }       SubShader     {              Name  "URPDefault"         Tags {"RenderPipeline...