Forwarded from Kamali
فلو مپ به تکسچری میگن که اطلاعات دو بعدی رو تو خودش ذخیره کنه. رنگ پیکسل تعیین می کنه که چه مسیری از بافت مختصات uv به عنوان پایه استفاده میشه.
Forwarded from Shader Laboratory
میدونید چرا این رنگیه؟
شما حتماً با RGB آشنا هستید
Red 1,0,0
Green 0,1,0
Blue 0,0,1
این رنگ به خاطر مختصاتشه
سرچ کنید uv coordinates
(0,0) سیاه
(1,0) قرمز R
(1,1) زرد RG
(0,1) سبز G
.
شما حتماً با RGB آشنا هستید
Red 1,0,0
Green 0,1,0
Blue 0,0,1
این رنگ به خاطر مختصاتشه
سرچ کنید uv coordinates
(0,0) سیاه
(1,0) قرمز R
(1,1) زرد RG
(0,1) سبز G
.
Forwarded from Kamali
به عنوان مثال سبز یعنی مسیرمون بالا سمت چپه، مرکز بی طرفه، و قرمز به پایینسمت راست.
Forwarded from Kamali
این یک تکنیک برای جریان آب یا هر چیز دیگه میتونه استفاده بشه.
من تو یک پروژه ازش به عنوان انیمیشن fake استفاده کردم.
و در جای دیگه ازش برای افکت گرما (Heat Distortion)
https://gamedev.stackexchange.com/questions/153965/how-can-i-replicate-quantum-breaks-distortion-particle-effect/153966#153966
من تو یک پروژه ازش به عنوان انیمیشن fake استفاده کردم.
و در جای دیگه ازش برای افکت گرما (Heat Distortion)
https://gamedev.stackexchange.com/questions/153965/how-can-i-replicate-quantum-breaks-distortion-particle-effect/153966#153966
Game Development Stack Exchange
How can I replicate Quantum Break's distortion particle effect?
Quantum Break has this fantastic particle effect, it's a distortion effect like broken glass. I want know how I can replicate this effect? You can see it below, and a full video is available on You...
Forwarded from SaL
یعنی میشه باهاش قطرات باران که مثل کرم روی صفحه نمایش میان پایین رو درست کرد؟🤔
Forwarded from Kamali
باید با استفاده از رندر تکسچر ، uv coordinate رو distort کنید
تو شیدرتوی معادل رندر تکسچر همون بافر ها هستند که باهاش می تونید هر چیزی رو ذخیره کنید که بعداً ازش استفاده کنید
تو شیدرتوی معادل رندر تکسچر همون بافر ها هستند که باهاش می تونید هر چیزی رو ذخیره کنید که بعداً ازش استفاده کنید
Forwarded from Shader Laboratory
برای ساخت فلو مپ یک uv coodinate لازم داریم
Forwarded from Kamali
بعد تو فتوشاپ با استفاده از smudge tool می تونید distortion به uv coordinate بدید
#pragma kernel TesterKernel
RWTexture2D<float4> Result;
[numthreads(8, 8, 1)]
void TesterKernel(uint2 id : SV_DispatchThreadID)
{
float2 iResolution=float2(1024,1024); //texture resolution
Result[id] = float4(id/iResolution,0,1);
}
RWTexture2D<float4> Result;
[numthreads(8, 8, 1)]
void TesterKernel(uint2 id : SV_DispatchThreadID)
{
float2 iResolution=float2(1024,1024); //texture resolution
Result[id] = float4(id/iResolution,0,1);
}
using UnityEngine;
[ExecuteInEditMode]
public class Test : MonoBehaviour
{
[SerializeField] ComputeShader _compute;
RenderTexture _buffer;
const int kSize = 512;
void OnDestroy()
{
if (_buffer != null)
if (Application.isPlaying)
Destroy(_buffer);
else
DestroyImmediate(_buffer);
}
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
if (_buffer == null)
{
_buffer = new RenderTexture(kSize, kSize, 0);
_buffer.enableRandomWrite = true;
_buffer.filterMode = FilterMode.Point;
_buffer.hideFlags = HideFlags.DontSave;
_buffer.Create();
}
var kernel = _compute.FindKernel("TesterKernel");
_compute.SetTexture(kernel, "Result", _buffer);
_compute.Dispatch(kernel, kSize / 8, kSize / 8, 1);
Graphics.Blit(_buffer, destination);
}
}
[ExecuteInEditMode]
public class Test : MonoBehaviour
{
[SerializeField] ComputeShader _compute;
RenderTexture _buffer;
const int kSize = 512;
void OnDestroy()
{
if (_buffer != null)
if (Application.isPlaying)
Destroy(_buffer);
else
DestroyImmediate(_buffer);
}
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
if (_buffer == null)
{
_buffer = new RenderTexture(kSize, kSize, 0);
_buffer.enableRandomWrite = true;
_buffer.filterMode = FilterMode.Point;
_buffer.hideFlags = HideFlags.DontSave;
_buffer.Create();
}
var kernel = _compute.FindKernel("TesterKernel");
_compute.SetTexture(kernel, "Result", _buffer);
_compute.Dispatch(kernel, kSize / 8, kSize / 8, 1);
Graphics.Blit(_buffer, destination);
}
}
#pragma kernel TesterKernel
RWTexture2D<float4> Result;
float4 drawline(float2 uv)
{
float Thickness = 0.02;
float LineSideA = step((uv.x+Thickness)+uv.y,0.5);
float LineSideB = step((uv.x-Thickness)+uv.y,0.5);
return float4(1,1,1,1)*LineSideB-LineSideA;
}
[numthreads(8, 8, 1)]
void TesterKernel(uint2 id : SV_DispatchThreadID)
{
float2 iResolution=float2(1024,1024); //texture resolution
Result[id] = drawline(id/iResolution);
}
RWTexture2D<float4> Result;
float4 drawline(float2 uv)
{
float Thickness = 0.02;
float LineSideA = step((uv.x+Thickness)+uv.y,0.5);
float LineSideB = step((uv.x-Thickness)+uv.y,0.5);
return float4(1,1,1,1)*LineSideB-LineSideA;
}
[numthreads(8, 8, 1)]
void TesterKernel(uint2 id : SV_DispatchThreadID)
{
float2 iResolution=float2(1024,1024); //texture resolution
Result[id] = drawline(id/iResolution);
}