#function #loops #fragment #fragment-shader
Вопрос:
Это мой первый пост о stackoverflow. Я новичок в написании фрагментов и вершинных шейдеров. Мой шейдер запущен и работает, и теперь я пытаюсь оптимизировать некоторые из них. Я пытаюсь свести эти шесть строк кода в функцию, в которую я могу передавать значения. Я новичок в программировании шейдеров вершин и фрагментов, и мне нужна небольшая помощь в понимании того, как я должен настроить функцию.
{
float HandPinky0ConIntensity = lerp(0, 10, _HandPinkyConfidence0);
float3 maskConfidenceHandPinky0 = ( ( i.worldPos - _HandPinky0Pos ) / _ConfidenceMaskRange * _HandPinky0MaskAdjust); //size and position of mask
float dotValueLineMaskHandPinky0 = clamp(dot(maskConfidenceHandPinky0 , maskConfidenceHandPinky0 ) , 0.0 , 1.0 );
float sphereMaskLineMaskHandPinky0 = pow( dotValueLineMaskHandPinky0 , _OutlineMaskFalloff );
float3 spheremaskConfidenceHandPinky0 = saturate(1.0-sphereMaskLineMaskHandPinky0) * HandPinky0ConIntensity;
float3 outConfidenceHandPinky0 = spheremaskConfidenceHandPinky0;
}
Я хочу написать функцию, которая принимает _HandPinkyConfidence0, _HandPinky0Pos, _ConfidenceMaskRange, _HandPinky0MaskAdjust и которая в конечном итоге проходит через все кости, в данном случае кости мизинца. Таким образом, мне нужно всего 5 функций на палец вместо 6 строк кода на кость.
Я не верю, что правильно перехожу к методу. Должен ли я использовать для этого ввод структуры?
for(int i=0; i<4; i )
Confidence(float _HandPinky[i]Confidence, float3 _HandPinky[i]Pos, float _ConfidenceMaskRange, float _HandPinky[i]MaskAdjust)
{
float HandPinky[i]ConIntensity = lerp(0, 10, _HandPinky0Confidence);
float3 maskConfidenceHandPinky[i] = ( ( i.worldPos - _HandPinky[i]Pos ) / _ConfidenceMaskRange * _HandPinky[i]MaskAdjust); //size and position of mask
float dotValueLineMaskHandPinky[i] = clamp(dot(maskConfidenceHandPinky[i] , maskConfidenceHandPinky[i] ) , 0.0 , 1.0 );
float sphereMaskLineMaskHandPinky[i] = pow( dotValueLineMaskHandPinky[i] , _OutlineMaskFalloff );
float3 spheremaskConfidenceHandPinky[i] = saturate(1.0-sphereMaskLineMaskHandPinky[i]) * HandPinky[i]ConIntensity;
float3 outConfidenceHandPinky[i] = spheremaskConfidenceHandPinky[i];
return outConfidenceHandPinky[i];
}
Спасибо вам за вашу помощь!