मैं अभी भी एक छवि प्रसंस्करण प्रोजेक्ट पर काम कर रहा हूं जो एचएलएसएल शेडर्स का उपयोग फ़ोटोशॉप-एस्क्यू फ़िल्टर को ड्रॉप छाया, बेवल आदि जैसे जोड़ने के लिए करता है। अब मैं एचएलएसएल में बाहरी चमक प्रभाव को लागू करने के लिए एक दृष्टिकोण की तलाश कर रहा हूं।एचएलएसएल शेडर के रूप में बाहरी चमक
मैं वर्तमान में निम्नलिखित विचार के साथ प्रयोग कर रहा हूँ:
1) वर्तमान बनावट चमक (पैरामीटर बनाने के लिए स्केल: glowSize, जो
2) धुंधला क्षैतिज
रूपरेखा का आकार) सेट3) धुंधला खड़ी, कलंक रंग चमक और चमक प्रदान करने के लिए शीर्ष
पर मूल बनावट जोड़ने मैं निम्नलिखित बहु पास HLSL शेडर उपयोग कर रहा हूँ के परिवर्तन का रंग:
जब एक अंडाकार की तरह साधारण आकार का उपयोग करतेfloat4 PS_Scale(VS_OUTPUT IN) : COLOR0
{
float2 tex = IN.texture0;
float2 scaleCenter = float2(0.5f, 0.5f);
float2 scaleTex = (tex - scaleCenter) * glowSize + scaleCenter;
return tex2D(foreground, scaleTex);
}
float4 PS_GlowH(VS_OUTPUT IN) : COLOR0
{
float2 Tex = IN.texture0;
float4 sum = float4(0.0, 0.0, 0.0, 0.0);
sum += tex2D(secondForeground, float2(Tex.x - 4.0*blur, Tex.y))*0.05;
sum += tex2D(secondForeground, float2(Tex.x - 3.0*blur, Tex.y))*0.09;
sum += tex2D(secondForeground, float2(Tex.x - 2.0*blur, Tex.y))*0.12;
sum += tex2D(secondForeground, float2(Tex.x - blur, Tex.y))*0.15;
sum += tex2D(secondForeground, float2(Tex.x, Tex.y))*0.16;
sum += tex2D(secondForeground, float2(Tex.x + blur, Tex.y))*0.15;
sum += tex2D(secondForeground, float2(Tex.x + 2.0*blur, Tex.y))*0.12;
sum += tex2D(secondForeground, float2(Tex.x + 3.0*blur, Tex.y))*0.09;
sum += tex2D(secondForeground, float2(Tex.x + 4.0*blur, Tex.y))*0.05;
return sum;
}
float4 PS_GlowV(VS_OUTPUT IN) : COLOR0
{
float2 Tex = IN.texture0;
float4 sum = float4(0.0, 0.0, 0.0, 0.0);
sum += tex2D(secondForeground, float2(Tex.x, Tex.y - 4.0*blur))*0.05;
sum += tex2D(secondForeground, float2(Tex.x, Tex.y - 3.0*blur))*0.09;
sum += tex2D(secondForeground, float2(Tex.x, Tex.y - 2.0*blur))*0.12;
sum += tex2D(secondForeground, float2(Tex.x, Tex.y - blur))*0.15;
sum += tex2D(secondForeground, float2(Tex.x, Tex.y))*0.16;
sum += tex2D(secondForeground, float2(Tex.x, Tex.y + blur))*0.15;
sum += tex2D(secondForeground, float2(Tex.x, Tex.y + 2.0*blur))*0.12;
sum += tex2D(secondForeground, float2(Tex.x, Tex.y + 3.0*blur))*0.09;
sum += tex2D(secondForeground, float2(Tex.x, Tex.y + 4.0*blur))*0.05;
float4 result = sum * opacity;
result.rgb = float3(glowColor.r, glowColor.g, glowColor.b)/255.0f;
float4 src = tex2D(foreground, IN.texture0.xy);
return result * (1-src.a) + src;
}
इस कोड के परिणाम ठीक लग रहा है, लेकिन जब पाठ पर शेडर लागू करने के काम नहीं करता:
यह स्पष्ट है कि वहाँ के साथ एक समस्या यह है कि है स्केलिंग। मेरे पास कोई रूपरेखा नहीं है कि मूल बनावट को रूपरेखा के रूप में उपयोग करने के लिए कैसे स्केल करें। क्या यह भी संभव है? एचएलएसएल में बाहरी चमक या रूपरेखा फ़िल्टर को कार्यान्वित करने के लिए कोई अन्य विचार?
अग्रिम धन्यवाद।
कैसे एक तरह एक कलंक शेडर मैं ऊपर पोस्ट किया है फ़ोटोशॉप चमक सम्मिश्रण विकल्प के समान परिणाम देने कर सकते हैं? – barnacleboy
मेरा कोड पहले से ही ऐसा करता है, लेकिन मैं स्केलिंग के बिना चमक आकार सेट करने का कोई तरीका नहीं समझ सकता। जो चमक मैं अपने शेडर से प्राप्त कर रहा हूं वह ठीक है, लेकिन यह स्केलिंग के बिना नहीं बढ़ सकता है ... – barnacleboy
देर से उत्तर के लिए खेद है। आपने नहीं देखा है कि आपने अपना जवाब अपडेट कर लिया है। – barnacleboy