text 团结ちゃんシェーダ肌部分のフラグメントシェーダに自分なりのコメントを入れたもの

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text 团结ちゃんシェーダ肌部分のフラグメントシェーダに自分なりのコメントを入れたもの相关的知识,希望对你有一定的参考价值。

float4 frag( v2f i ) : COLOR
{
	float4_t diffSamplerColor = tex2D( _MainTex, i.uv );
	//return float4_t(diffSamplerColor.rgb, diffSamplerColor.a);
	
	// ###### 視線ベクトルと法線ベクトルのdot積
	float_t eyeDotNormal = dot( i.normal, i.eyeDir );
	//return float4_t(eyeDotNormal, eyeDotNormal, eyeDotNormal, diffSamplerColor.a);
	
	
	// ###### 視線ベクトルに対して平行の法線ベクトルだった場合、値は最も小さくなる値
	float_t invEyeDotNormalU = clamp( 1 - abs( eyeDotNormal ), 0.02, 0.98 );
	//return float4_t(invEyeDotNormalU, invEyeDotNormalU, invEyeDotNormalU, diffSamplerColor.a);
	
	
	// ###### Falloffカラー
	// uが小さいほど白(0.0)->肌色(1.0)
	float4_t falloffSamplerColor = FALLOFF_POWER * tex2D( _FalloffSampler, float2( invEyeDotNormalU, 0.9999f ) );
	//return float4_t(falloffSamplerColor.rgb, diffSamplerColor.a);
	
	float4_t grayscaleSamplerColor = tex2D( _FalloffSampler, float2( invEyeDotNormalU, 0.1f ) );
	//return float4_t(grayscaleSamplerColor.rgb, diffSamplerColor.a);
	
	
	// ###### Falloffカラーとデュフューズカラーの合成
	// aの値に変化がないので一律でdiffSamplerColor.rgb * falloffSamplerColor.rgbになっている(オリジナル)
	//float3_t combinedColor = lerp(diffSamplerColor.rgb , diffSamplerColor.rgb * falloffSamplerColor.rgb, falloffSamplerColor.a);
	// このグラーデーション処理を入れることで、回り込んだ部分に濃い肌色が入る
	float3_t combinedColor = lerp(diffSamplerColor.rgb , diffSamplerColor.rgb * falloffSamplerColor.rgb, grayscaleSamplerColor.r);
	//return float4_t(combinedColor, diffSamplerColor.a);
	
	
	// ###### ライトベクトルと法線のdot積
	float_t lightDotNormal = dot( i.normal, i.lightDir );
	//return float4_t(lightDotNormal, lightDotNormal, lightDotNormal, diffSamplerColor.a);
	
	
	// ###### [0.5 - 1.0]の範囲に変更
	float_t lightDotNormal2 = saturate( 0.5 * ( lightDotNormal + 1.0 ) );
	//return float4_t(lightDotNormal2, lightDotNormal2, lightDotNormal2, diffSamplerColor.a);
	
	
	// ##### リムライトU座標 視線と交差すると値が大きい
	float_t rimlightSamplerU = saturate( lightDotNormal2 * invEyeDotNormalU );
	//return float4_t(rimlightSamplerU, rimlightSamplerU, rimlightSamplerU, diffSamplerColor.a);
	
	
	// ###### リムライトの強度
	// テクスチャからリムライトの強さを取得する
	float_t rimlightStrength = tex2D( _RimLightSampler, float2( rimlightSamplerU, 0.25f ) ).r;
	//return float4_t(rimlightStrength, rimlightStrength, rimlightStrength, diffSamplerColor.a);
	
	
	combinedColor += rimlightStrength * diffSamplerColor.rgb;
	return float4_t(combinedColor, diffSamplerColor.a);
}

以上是关于text 团结ちゃんシェーダ肌部分のフラグメントシェーダに自分なりのコメントを入れたもの的主要内容,如果未能解决你的问题,请参考以下文章

markdown アクティビティ,フラグメント値受け渡し

SAP変更文書

c_cpp ランバートシェーダ(シェーダだけで完结)

csharp コンピュートシェーダ的HelloWorld

c_cpp 的HelloWorldコンピュートシェーダ

csharp 大量の立方体を回すコンピュートシェーダ