আমি কীভাবে কোয়ান্টাম ব্রেকের বিকৃতি কণা প্রভাব প্রতিলিপি করতে পারি?


68

কোয়ান্টাম ব্রেকের এই দুর্দান্ত কণার প্রভাব রয়েছে, এটি ভাঙা কাচের মতো বিকৃতি প্রভাব। আমি জানতে চাই কীভাবে আমি এই প্রভাবটির প্রতিলিপি করতে পারি? আপনি এটি নীচে দেখতে পারেন, এবং একটি সম্পূর্ণ ভিডিও ইউটিউবে উপলব্ধ :

record_2018_02_05_16_34_26_307

record_2018_02_01_22_27_44_971


4
"এই প্রশ্নের যথেষ্ট মনোযোগ পাওয়া যায়নি।" ?
আলেকজান্দ্রে ভেল্যানকোর্ট

@AlexandreVaillancourt আমি শুধু বেশি করে দেখা জন্য এই প্রশ্নের পিন এবং দৃষ্টি আকর্ষণ কারণ আমার মনে হয় এটা useful.I খয়রাত কারণের উপর ভাল কারণ খুঁজে পাইনি এমন একটা সমস্যা আছে আমি আমার reason.thanks পরিবর্তন হবে হয়
সাঈদ Morteza Kamali

2
উদ্বোধনের উদ্দেশ্য আসলে প্রশ্নগুলি কেবল "পিন" করা নয়; আপনার বর্ণিত যৌক্তিকতা কিছুটা ক্ষুদ্র। উদ্বোধনের উদ্দেশ্য হ'ল উত্তরগুলির প্রয়োজন এমন প্রশ্নের দিকে দৃষ্টি আকর্ষণ করা বা বিদ্যমান উত্তরগুলি পুরষ্কার করা, যা আপনার করা হচ্ছে না। ইতিমধ্যে জায়গাটিতে এমন একটি প্রক্রিয়া রয়েছে (এইচএনকিউ, যা আপনার বেশিরভাগ পোস্ট হিট করে) সম্প্রদায়টি দরকারী এবং আকর্ষণীয় বলে মনে করে reward
জোশ

2
লোভী হবেন না আপনি ইতিমধ্যে যথেষ্ট মতামত এবং ভোট পেয়েছেন
ক্যাসানোভা

@ জোশপেট্রি আপনি ঠিকই বলেছেন আমি দুঃখিত আমি এই রাষ্ট্রটি পুনরাবৃত্তি করব না As আমি লজ্জা পাচ্ছি যাতে আপনি আমার প্রশ্নটি খ্যাতি ফিরিয়ে না দিয়ে বৈশিষ্ট্যগুলি থেকে সরিয়ে ফেলতে পারেন I আমি কেবল এটি করেছি কারণ আমি ভেবেছিলাম আমি অন্যকে সাহায্য করব।
সৈয়দ মুর্তিজা কামালি

উত্তর:


101

পিরামিড কণা

ইউনিটির ডিফল্ট কণার আকার কোয়াড। প্রথমে আপনাকে পিরামিড অবজেক্ট ব্যবহার করে এই আকারটি পিরামিডে পরিবর্তন করতে হবে বা জ্যামিতি শেডার দিয়ে কোয়াডস পিরামিডে পরিণত করতে হবে

ভাবমূর্তি

AWD

প্রতিসরণ

ভাঙা কাচের প্রভাব তৈরি করতে ( রিফ্রাকশন ) আপনি এটি ব্যবহার করতে পারেন GrabPass { "TextureName" }যা কোনও টেক্সচারে স্ক্রিনের বিষয়বস্তু দখল করবে।

গ্র্যাবপাস একটি বিশেষ পাসের ধরণ - এটি স্ক্রিনের বিষয়বস্তু ধরে রাখে যেখানে অবজেক্টটি টেক্সচারে আঁকতে চলেছে। উন্নত চিত্র ভিত্তিক প্রভাবগুলি করতে এই টেক্সচারটি পরবর্তী পাসগুলিতে ব্যবহার করা যেতে পারে।

https://docs.unity3d.com/Manual/SL-GrabPass.html

record_2018_02_03_23_09_06_370

Shader "Smkgames/GlassRefraction"
{
    Properties{
        _Refraction("Refraction",Float) = 0.05
        _Alpha("Alpha",Range(0,1)) = 1
    }
    SubShader
    {
Tags {"Queue"="Transparent" "RenderType"="Transparent"}

        Blend SrcAlpha OneMinusSrcAlpha

        GrabPass
        {
            "_GrabTexture"
        }

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
            };

            struct v2f
            {
                float4 grabPos : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };
            sampler2D _MainTex;
            float _Alpha,_Refraction;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.grabPos = ComputeGrabScreenPos(o.vertex);
                return o;
            }

            sampler2D _GrabTexture;

            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 col = tex2Dproj(_GrabTexture, i.grabPos+_Refraction);
                return float4(col.rgb,_Alpha);

            }
            ENDCG
        }
    }
}

জাল নরমাল ব্যবহার করা

আসুন এমন একটি শেডার দিয়ে এগিয়ে চলুন যা বিশ্ব স্থানের মধ্যে জাল স্বাভাবিক দেখায় । আমি এটি ব্যবহার করেছি কারণ আমি ত্রিমাত্রিক ভাঙ্গা আকার দেখতে চেয়েছিলাম।

লম্ব

record_2018_02_05_18_06_09_41

record_2018_02_03_23_19_06_705

    Shader "Smkgames/BrokenGlass3D"
{
    Properties{
        _MainTex("MainTex",2D) = "white"{}
        _Alpha("Alpha",Float) = 1
    }
    SubShader
    {
Tags {"Queue"="Transparent" "RenderType"="Transparent"}
 Blend SrcAlpha OneMinusSrcAlpha 


        GrabPass
        {
            "_GrabTexture"
        }

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 grabPos : TEXCOORD0;
                float3 normal :NORMAL;
            };

            struct v2f
            {
                float4 grabPos : TEXCOORD0;
                float4 vertex : SV_POSITION;
                half3 worldNormal :TEXCOORD1;

            };
            sampler2D _MainTex;
            float _Intensity,_Alpha;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.grabPos = ComputeGrabScreenPos(o.vertex);
                o.worldNormal = UnityObjectToWorldNormal(v.normal);
                return o;
            }

            sampler2D _GrabTexture;

            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 c = 0;
                c.rgb = i.worldNormal*0.5+0.5;
                float4 distortion = tex2D(_MainTex,i.grabPos)+_Intensity;
                fixed4 col = tex2Dproj(_GrabTexture, i.grabPos+c.r);
                return float4(col.rgb,_Alpha);
            }
            ENDCG
        }
    }
}

তাপ বিকৃতি

তাপ বিকৃতি তৈরি করতে আপনি প্রবাহের মানচিত্র ব্যবহার করতে পারেন

ফ্লো-ম্যাপ এমন একটি টেক্সচার যা কোনও টেক্সচারে 2 ডি নির্দেশিক তথ্য সঞ্চয় করে। পিক্সেলের রঙ নির্ধারণ করে যে এটি কোন দিকটি ইউভি-কোঅর্ডিনেট টেক্সচারটিকে বেস হিসাবে ব্যবহার করছে। যত বেশি রঙ সেখানে আনুপাতিক গতি তত দ্রুত। উদাহরণ সবুজ এটিকে উপরে বাম দিকে যেতে বলে, কেন্দ্রটি নিরপেক্ষ, এবং লাল নীচে ডানদিকে যাবে। এটি জলের মতো তরল পদার্থের জন্য একটি দরকারী কৌশল এবং কেবল প্যানার নোডের একটি দরকারী বিকল্প।

flow_map

heatdistortion

    Shader "Smkgames/HeatDistortion"
{
    Properties{
        _DistortionMap("DistortionMap",2D) = "white"{}
        _Intensity("Intensity",Float) = 50
        _Mask("Mask",2D) = "white"{}
        _Alpha("Alpha",Range(0,1)) = 1
    }
    SubShader
    {
Tags {"Queue"="Transparent" "RenderType"="Transparent"}

        GrabPass
        {
            "_GrabTexture"
        }

        Blend SrcAlpha OneMinusSrcAlpha

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
            };

            struct v2f
            {
                float4 grabPos : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };
            sampler2D _Mask,_DistortionMap;
            float _Alpha,_Refraction;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.grabPos = ComputeGrabScreenPos(o.vertex);
                return o;
            }

            sampler2D _GrabTexture;
            float _Intensity;

            fixed4 frag (v2f i) : SV_Target
            {
                float mask = tex2D(_Mask,i.grabPos);
                mask = step(mask,0.5);
                //mask = smoothstep(mask,0,0.4);
                float4 distortion = tex2D(_DistortionMap,i.grabPos+_Time.y)+_Intensity;
                fixed4 col = tex2Dproj(_GrabTexture, i.grabPos*distortion);
                return float4(col.rgb,mask*_Alpha);

            }
            ENDCG
        }
    }
}

সাধারণ ব্যবহার করে আরেকটি উদাহরণ:

cutout

normalmap

ধূমপায়ী_ সাধারণ 1

Shader "Smkgames/HeatDistortion2" {
Properties {
        _CutOut ("CutOut (A)", 2D) = "black" {}
        _BumpMap ("Normalmap", 2D) = "bump" {}
        _BumpAmt ("Distortion", Float) = 10
}

Category {

    Tags { "Queue"="Transparent"  "IgnoreProjector"="True"  "RenderType"="Opaque" }
    Blend SrcAlpha OneMinusSrcAlpha
    Cull Off 
    Lighting Off 
    ZWrite Off 
    Fog { Mode Off}

    SubShader {
        GrabPass {                          
            "_GrabTexture"
        }
        Pass {

CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#pragma multi_compile_particles
#include "UnityCG.cginc"

struct appdata_t {
    float4 vertex : POSITION;
    float2 texcoord: TEXCOORD0;
};

struct v2f {
    float4 vertex : POSITION;
    float4 uvgrab : TEXCOORD0;
    float2 uvbump : TEXCOORD1;
    float2 uvcutout : TEXCOORD2;
};

sampler2D _BumpMap,_CutOut,_GrabTexture;
float _BumpAmt;
float4 _GrabTexture_TexelSize;
float4 _BumpMap_ST,_CutOut_ST;

v2f vert (appdata_t v)
{
    v2f o;
    o.vertex = UnityObjectToClipPos(v.vertex);
    o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*-1) + o.vertex.w) * 0.5;
    o.uvgrab.zw = o.vertex.zw;
    o.uvbump = TRANSFORM_TEX( v.texcoord, _BumpMap );
    o.uvcutout = TRANSFORM_TEX( v.texcoord, _CutOut );
    return o;
}



half4 frag( v2f i ) : COLOR
{
    half2 bump = UnpackNormal(tex2D( _BumpMap, i.uvbump )).rg;
    float2 offset = bump * _BumpAmt * _GrabTexture_TexelSize.xy;
    i.uvgrab.xy = offset * i.uvgrab.z + i.uvgrab.xy;

    half4 col = tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(i.uvgrab));
    fixed4 cut = tex2D(_CutOut, i.uvcutout);
    fixed4 emission = col;
    emission.a = (cut.a);
    return emission;
}
ENDCG
        }
    }

  }
}

আরজিবি স্প্লিট

আপনি যদি আপনার প্রথম জিআইএফ-তে মনোযোগ দেন তবে আপনি সামান্য আরজিবি বিভক্ত দেখতে পাবেন।

u_rgb_seperation_ar

Shader "Hidden/RgbSplit"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _NoiseTex1 ("Noise Texture A", 2D) = "white" {}
        _NoiseTex2 ("Noise Texture B", 2D) = "white" {}
    }
    SubShader
    {

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }

            sampler2D _MainTex,_NoiseTex1,_NoiseTex2;
            float3 colorSplit(float2 uv, float2 s)
{
    float3 color;
    color.r = tex2D(_MainTex, uv - s).r;
    color.g = tex2D(_MainTex, uv    ).g;
    color.b = tex2D(_MainTex, uv + s).b;
    return color;
}

float2 interlace(float2 uv, float s)
{
    uv.x += s * (4.0 * frac((uv.y) / 2.0) - 1.0);
    return uv;
}

    fixed4 frag (v2f i) : SV_Target
    {

    float t = _Time.y;

    float s = tex2D(_NoiseTex1, float2(t * 0.2, 0.5)).r;

    i.uv = interlace(i.uv, s * 0.005);
    float r = tex2D(_NoiseTex2, float2(t, 0.0)).x;

    float3 color = colorSplit(i.uv, float2(s * 0.02, 0.0));

    return float4(color, 1.0);

            }
            ENDCG
        }
    }
}

দরকারী লিংক

https://www.fxguide.com/featured/time-for-destruction-the-tech-of-quantum-break/

সোথ অন গিথুব


47
আমি কৌতূহলী, আপনি কি এই জাতীয় কৌশলগুলি ভাগ করতে কোনও বিকাশকারী ব্লগ স্থাপনের কথা বিবেচনা করেছেন? আমি এর মতো একটি সংস্থার সাবস্ক্রাইব করব। :)
ডিএমগ্রিগরি

7
আমি দ্বিতীয় পরামর্শ! আপনার প্রতিক্রিয়াগুলির জন্য আমি প্রতিদিন ওয়েবসাইটটি নিরীক্ষণ করি, কেননা আপনার দৃষ্টিভঙ্গি সর্বদা সৃজনশীল, বিশদ, এবং তবুও সহজ simple আপনি যে উদাহরণগুলি সরবরাহ করেন সেগুলিও বেশ সহায়ক।
altskop

4
আপনার আরজিবি বিভাজন প্রভাব সম্পর্কে: আমি চশমা পরে থাকি এবং সবসময় ক্রোম্যাটিক ক্ষয়জনিত কারণে প্রাকৃতিকভাবে ঘটে যাওয়া অনুরূপ প্রভাবটি উপভোগ করি যা চোখের থেকে পর্দার দূরত্বের সাথে পৃথক হয়। 3 ডি চশমা যেভাবে কিছু থেকে কত দূরে রয়েছে তার বিভিন্ন ইঙ্গিতগুলির মধ্যে একটি অমিল সৃষ্টি করে, আপনার প্রভাবটি এমন একটি বিশদ নিয়ে হস্তক্ষেপ করে যা আমার মস্তিষ্ক ব্যাখ্যা করে যে আমার চোখ থেকে পর্দা কতটা দূরে। এটি অত্যন্ত অপ্রীতিকর, বমি বমি ভাব এর অবধি। আপনি যদি এটি ব্যবহার করতে চান তবে দয়া করে এটি optionচ্ছিক করুন!
এওউইড

1
@ অয়েইউড এফডাব্লুআইডাব্লু, সংশোধনমূলক দৃষ্টি নেই এমন লোকদের জন্যও এটি তীব্রভাবে অপ্রীতিকর :)
সর্বাধিক

@ ডিএমজি গ্রেগরী ইয়েপ: ডিআইয়ের কোনও সাইট নেই তাই আমি আমার কৌশলগুলি এখানে শেয়ার করি আমার ব্লগ বা সাইট বিকাশ করার জন্য আপনার সমর্থন প্রয়োজন you আপনি যদি আমাকে সমর্থন করেন তবে আমি সহায়ক হব https://www.patreon.com/SedyedMortezaKamaly
Seyed Morteza Kamali
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.