Forwarded from Deleted Account
خب فایل شیدر ؟ من شیدر نویس نیستم اگه می شه فایل شیدرو بفرست دوست عزیز
Forwarded from Kamali
Shader "Custom/Transparent"
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
}
SubShader
{
Tags {"RenderType"="Transparent" "Queue"="Transparent"}
LOD 200
Pass {
ColorMask 0
}
// Render normally
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
CGPROGRAM
#pragma surface surf Standard fullforwardshadows alpha:fade
#pragma target 3.0
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
half _Glossiness;
half _Metallic;
fixed4 _Color;
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Standard"
}
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
}
SubShader
{
Tags {"RenderType"="Transparent" "Queue"="Transparent"}
LOD 200
Pass {
ColorMask 0
}
// Render normally
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
CGPROGRAM
#pragma surface surf Standard fullforwardshadows alpha:fade
#pragma target 3.0
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
half _Glossiness;
half _Metallic;
fixed4 _Color;
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Standard"
}
Forwarded from Kamali
Shader "Kamaly/TransparentCubeMap" {
Properties {
_MainTex("Main Map", 2D) = ""{}
_Cube("Reflection Map", Cube) = "" {}
_reflectionAmount("Reflection amount", Range (0.0,1.0)) = 0.3
}
SubShader {
Tags {"RenderType"="Transparent" "Queue"="Transparent"}
LOD 200
Pass {
ColorMask 0
}
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
// User-specified uniforms
uniform samplerCUBE _Cube;
uniform sampler _MainTex;
uniform fixed _reflectionAmount;
struct vertexInput {
float4 vertex : POSITION;
float3 normal : NORMAL;
float2 uv : TEXCOORD;
};
struct vertexOutput {
float4 pos : SV_POSITION;
float3 normalDir : TEXCOORD0;
float3 viewDir : TEXCOORD1;
float2 uv : TEXCOORD2;
};
vertexOutput vert(vertexInput input)
{
vertexOutput output;
output.uv = input.uv;
float4x4 modelMatrix = unity_ObjectToWorld;
float4x4 modelMatrixInverse = unity_WorldToObject;
// دیگه نمی خواد در unity_Scale.w ضربش کنیم
// چون ما بردارهای تبدیل شده رو نرمالایز می کنیم (بردار یکه)
output.viewDir = mul(modelMatrix, input.vertex).xyz
- _WorldSpaceCameraPos;
output.normalDir = normalize(
mul(float4(input.normal, 0.0), modelMatrixInverse).xyz);
output.pos = UnityObjectToClipPos(input.vertex);
return output;
}
float4 frag(vertexOutput input) : COLOR
{
float3 reflectedDir =
reflect(input.viewDir, normalize(input.normalDir));
return lerp(tex2D(_MainTex,input.uv),texCUBE(_Cube, reflectedDir),_reflectionAmount);
}
ENDCG
}
}
}
Properties {
_MainTex("Main Map", 2D) = ""{}
_Cube("Reflection Map", Cube) = "" {}
_reflectionAmount("Reflection amount", Range (0.0,1.0)) = 0.3
}
SubShader {
Tags {"RenderType"="Transparent" "Queue"="Transparent"}
LOD 200
Pass {
ColorMask 0
}
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
// User-specified uniforms
uniform samplerCUBE _Cube;
uniform sampler _MainTex;
uniform fixed _reflectionAmount;
struct vertexInput {
float4 vertex : POSITION;
float3 normal : NORMAL;
float2 uv : TEXCOORD;
};
struct vertexOutput {
float4 pos : SV_POSITION;
float3 normalDir : TEXCOORD0;
float3 viewDir : TEXCOORD1;
float2 uv : TEXCOORD2;
};
vertexOutput vert(vertexInput input)
{
vertexOutput output;
output.uv = input.uv;
float4x4 modelMatrix = unity_ObjectToWorld;
float4x4 modelMatrixInverse = unity_WorldToObject;
// دیگه نمی خواد در unity_Scale.w ضربش کنیم
// چون ما بردارهای تبدیل شده رو نرمالایز می کنیم (بردار یکه)
output.viewDir = mul(modelMatrix, input.vertex).xyz
- _WorldSpaceCameraPos;
output.normalDir = normalize(
mul(float4(input.normal, 0.0), modelMatrixInverse).xyz);
output.pos = UnityObjectToClipPos(input.vertex);
return output;
}
float4 frag(vertexOutput input) : COLOR
{
float3 reflectedDir =
reflect(input.viewDir, normalize(input.normalDir));
return lerp(tex2D(_MainTex,input.uv),texCUBE(_Cube, reflectedDir),_reflectionAmount);
}
ENDCG
}
}
}
👍1
Forwarded from Kamali
Shader "Kamaly/BlurTransparentCubeMap"
{
Properties
{
_MainTex ("Base (RGB)", 2D) = "white" {}
_Color ("_Color", Color) = (1,1,1,1)
_Alpha ("Alpha", Range (0,1)) = 0.142
_Cube("Reflection Map", Cube) = "" {}
_reflectionAmount("Reflection amount", Range (0.0,1.0)) = 0.842
_BlurNumber("BlurNumber",Float) = 0.18
}
SubShader
{
Pass {
ColorMask 0
}
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#pragma target 3.0
#include "UnityCG.cginc"
uniform samplerCUBE _Cube;
uniform fixed _reflectionAmount;
struct vertexInput {
float4 vertex : POSITION;
float3 normal : NORMAL;
float2 texcoord : TEXCOORD;
};
struct vertexOutput {
float4 pos : SV_POSITION;
float3 normalDir : TEXCOORD0;
float3 viewDir : TEXCOORD1;
float2 texcoord : TEXCOORD2;
};
sampler2D _MainTex;
fixed4 _Color;
float _Distortion;
fixed _Alpha;
float _BlurNumber;
float _BurnAmount;
vertexOutput vert(vertexInput input)
{
vertexOutput output;
output.texcoord = input.texcoord;
float4x4 modelMatrix = unity_ObjectToWorld;
float4x4 modelMatrixInverse = unity_WorldToObject;
// ضرب با unity_Scale.w غیر ضروری است
// چون ما بردارهای تبدیل شده را عادی می کنیم
output.viewDir = mul(modelMatrix, input.vertex).xyz
- _WorldSpaceCameraPos;
output.normalDir = normalize(
mul(float4(input.normal, 0.0), modelMatrixInverse).xyz);
output.pos = UnityObjectToClipPos(input.vertex);
return output;
}
float4 frag (vertexOutput input) : COLOR
{
float4 result = 0;
float3 reflectedDir =
reflect(input.viewDir, normalize(input.normalDir));
for(float i=0;i<_BlurNumber;i+=0.02){
float3 A = texCUBE(_Cube,reflect(input.viewDir, normalize(input.normalDir)+float3(i,0,0)));
float3 B = texCUBE(_Cube,reflect(input.viewDir, normalize(input.normalDir)+float3(0,i,0)));
float3 C = texCUBE(_Cube,reflect(input.viewDir, normalize(input.normalDir)+float3(0,0,i)));
float4 Layers = float4((A+B+C)/3,1);
result =lerp(result,Layers,_Alpha);
}
return lerp(tex2D(_MainTex,input.texcoord),result,_reflectionAmount)*_Color;
}
ENDCG
}
}
}
{
Properties
{
_MainTex ("Base (RGB)", 2D) = "white" {}
_Color ("_Color", Color) = (1,1,1,1)
_Alpha ("Alpha", Range (0,1)) = 0.142
_Cube("Reflection Map", Cube) = "" {}
_reflectionAmount("Reflection amount", Range (0.0,1.0)) = 0.842
_BlurNumber("BlurNumber",Float) = 0.18
}
SubShader
{
Pass {
ColorMask 0
}
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#pragma target 3.0
#include "UnityCG.cginc"
uniform samplerCUBE _Cube;
uniform fixed _reflectionAmount;
struct vertexInput {
float4 vertex : POSITION;
float3 normal : NORMAL;
float2 texcoord : TEXCOORD;
};
struct vertexOutput {
float4 pos : SV_POSITION;
float3 normalDir : TEXCOORD0;
float3 viewDir : TEXCOORD1;
float2 texcoord : TEXCOORD2;
};
sampler2D _MainTex;
fixed4 _Color;
float _Distortion;
fixed _Alpha;
float _BlurNumber;
float _BurnAmount;
vertexOutput vert(vertexInput input)
{
vertexOutput output;
output.texcoord = input.texcoord;
float4x4 modelMatrix = unity_ObjectToWorld;
float4x4 modelMatrixInverse = unity_WorldToObject;
// ضرب با unity_Scale.w غیر ضروری است
// چون ما بردارهای تبدیل شده را عادی می کنیم
output.viewDir = mul(modelMatrix, input.vertex).xyz
- _WorldSpaceCameraPos;
output.normalDir = normalize(
mul(float4(input.normal, 0.0), modelMatrixInverse).xyz);
output.pos = UnityObjectToClipPos(input.vertex);
return output;
}
float4 frag (vertexOutput input) : COLOR
{
float4 result = 0;
float3 reflectedDir =
reflect(input.viewDir, normalize(input.normalDir));
for(float i=0;i<_BlurNumber;i+=0.02){
float3 A = texCUBE(_Cube,reflect(input.viewDir, normalize(input.normalDir)+float3(i,0,0)));
float3 B = texCUBE(_Cube,reflect(input.viewDir, normalize(input.normalDir)+float3(0,i,0)));
float3 C = texCUBE(_Cube,reflect(input.viewDir, normalize(input.normalDir)+float3(0,0,i)));
float4 Layers = float4((A+B+C)/3,1);
result =lerp(result,Layers,_Alpha);
}
return lerp(tex2D(_MainTex,input.texcoord),result,_reflectionAmount)*_Color;
}
ENDCG
}
}
}
Forwarded from Kamali
float3 A = texCUBE(_Cube,reflect(input.viewDir, normalize(input.normalDir)+float3(i,0,0)));
float3 B = texCUBE(_Cube,reflect(input.viewDir, normalize(input.normalDir)+float3(0,i,0)));
float3 C = texCUBE(_Cube,reflect(input.viewDir, normalize(input.normalDir)+float3(0,0,i)));
float4 Layers = float4((A+B+C)/3,1);
result =lerp(result,Layers,_Alpha);
float3 B = texCUBE(_Cube,reflect(input.viewDir, normalize(input.normalDir)+float3(0,i,0)));
float3 C = texCUBE(_Cube,reflect(input.viewDir, normalize(input.normalDir)+float3(0,0,i)));
float4 Layers = float4((A+B+C)/3,1);
result =lerp(result,Layers,_Alpha);
Forwarded from Kamali
Shader "Kamaly/Cars" {
Properties {
_Color("Color",Color) = (1,1,1,1)
_Cube ("Cubemap", CUBE) = "" {}
_Metallic("Metallic",Range(0,1)) = 1
_Smoothness("Smoothness",Range(0,1)) = 1
_Alpha("Alpha",Float) = 1
}
SubShader {
Tags {"RenderType"="Transparent" "Queue"="Transparent"}
LOD 200
Pass {
ColorMask 0
}
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
CGPROGRAM
#pragma surface surf Standard fullforwardshadows alpha:fade
struct Input {
float2 uv_MainTex;
float3 worldRefl;
};
sampler2D _MainTex;
samplerCUBE _Cube;
float4 _Color;
float _Metallic;
float _Smoothness;
float4 _EmissionColor;
float _Alpha;
void surf (Input IN, inout SurfaceOutputStandard o) {
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb * 0.5 * _Color;
o.Emission = texCUBE (_Cube, IN.worldRefl).rgb*_Color;
o.Metallic = _Metallic;
o.Smoothness = _Smoothness;
o.Alpha = _Alpha;
}
ENDCG
}
Fallback "Diffuse"
}
Properties {
_Color("Color",Color) = (1,1,1,1)
_Cube ("Cubemap", CUBE) = "" {}
_Metallic("Metallic",Range(0,1)) = 1
_Smoothness("Smoothness",Range(0,1)) = 1
_Alpha("Alpha",Float) = 1
}
SubShader {
Tags {"RenderType"="Transparent" "Queue"="Transparent"}
LOD 200
Pass {
ColorMask 0
}
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
CGPROGRAM
#pragma surface surf Standard fullforwardshadows alpha:fade
struct Input {
float2 uv_MainTex;
float3 worldRefl;
};
sampler2D _MainTex;
samplerCUBE _Cube;
float4 _Color;
float _Metallic;
float _Smoothness;
float4 _EmissionColor;
float _Alpha;
void surf (Input IN, inout SurfaceOutputStandard o) {
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb * 0.5 * _Color;
o.Emission = texCUBE (_Cube, IN.worldRefl).rgb*_Color;
o.Metallic = _Metallic;
o.Smoothness = _Smoothness;
o.Alpha = _Alpha;
}
ENDCG
}
Fallback "Diffuse"
}
MHD
میخواستم بدونم شیدر بدنه های ماشین csr2 چجوری کار میکنه و الگوریتمش چیه که هم باکیفیته و هم پردازش کمتری داره
برای ساخت شیدر بدنه به متریال PBR نیاز دارید و همچنین برای رفلکشن می تونید از CubeMap استفاده کنید
Forwarded from Kamali
سلام دوستان امشب اگر مایل باشید درباره ی توابع فاصله کمی بحث کنیم کنیم
Forwarded from Kamali
http://numb3r23.github.io/cgTalk/04_distancefields.html
Distances
2D-Distance maps
2D-Distance functions
3D-Distance fields - functions
3D-Distance fields - geometries
Distances
2D-Distance maps
2D-Distance functions
3D-Distance fields - functions
3D-Distance fields - geometries
Forwarded from Kamali
فاصله چیست؟
ویژگی ایجاد شده توسط فضای بین دو نقطه
فضا چیست؟ Rn → R2، R3
ویژگی ایجاد شده توسط فضای بین دو نقطه
فضا چیست؟ Rn → R2، R3
Forwarded from Deleted Account
ببخشید میان پست تون پیام میدم میشه درباره کاربردش توضیح بدید اول کجا استفاده میشه
Forwarded from Kamali
جاهایی زیادی استفاده میشه که مهمترینش Raymarching هست
http://www.gameology.ir/index.php?pid=read&id=211
http://www.gameology.ir/index.php?pid=read&id=211
www.gameology.ir
گیمولوژی | رسانه تحلیلی بازی سازی | مدلسازی با Raymarching و میادین فاصله در یونیتی
هدف من از این مطلب این است که به شما نشان دهم این روش قدیمیتر رندر، میتواند به بازی بازگردد و با استفاده از پردازش موازی و تکنیکهای محاسبه شده بهینهسازی شود! GPU در حال حاضر بسیار قدرتمند است و از آن برای شتاب فیزیک و حتی یادگیری هوش مصنوعی عمیق استفاده…
Forwarded from Deleted Account
👍🏻👍🏻👍🏻 حتما باید مطلب خوبی باشه / چون تا حالا اسمش رو نشنیده بودم