আমি আমার ভক্সেল ইঞ্জিনে পয়েন্ট লাইট প্রয়োগ করছি, এবং আমি সত্যই আলোর উত্সের কাছাকাছি 100% থেকে আলোক ব্যাসার্ধের 0% পর্যন্ত আলোকের একটি ভাল প্রবাহ পেতে লড়াই করছি।
ফাংশনটির জন্য আমার 5 টি যুক্তি রয়েছে:
- হালকা রঙ (ভেক 3)
- আলোর তীব্রতা (আলোক থেকে দূরত্ব যেখানে দূরত্ব যেখানে 100% রয়েছে)
- আলো থেকে খণ্ডের দূরত্ব
- খণ্ড থেকে সাধারণ আলোর কোণ
- আলোর অবস্থান
খণ্ডের রঙ গণনার জন্য কোনও ফাংশন তৈরি করতে কেউ আমাকে সঠিক দিকে ঠেলে দিতে পারে?
আমার একটি পরীক্ষার চিত্র:
সম্পাদনা (বাইট দ্বারা অনুরোধ করা বর্তমান কোড) নোট করুন যে এটি আমার দিক থেকে কিছু পরীক্ষামূলক কোড। আমি একটি ওয়েবসাইট থেকে ভাসমান সংস্থান পেয়েছি, এবং এটি ধরণের কাজ করে তবে সঠিক থেকে অনেক দূরে। :
void main()
{
// Light color
vec3 torchColor = vec3(1.0f, 1.0f, 1.0f);
float lightAdd = 0.0f;
for (int i=0; i<5; i++) {
vec3 pos = lights[i];
if (pos.x == 0.0f) continue;
float dist = distance(vertex_pos, pos);
if (dist < 9) {
float att=1.0/(1.0+0.1*dist+0.01*dist*dist);
vec3 surf2light = normalize(pos - vertex_pos);
vec3 norm = normalize(normal);
float dcont=max(0.0,dot(norm,surf2light));
lightAdd += att*(dcont+0.4);
}
}
vec3 textureColor = texture2D(texture, texture_coordinate).rgb;
vec3 torch_output = lightAdd * torchColor;
vec3 final_color = ((0.1+torch_output) * textureColor);
gl_FragColor = vec4(final_color, 1.0f);
}
if (dist < 9)
? অন্যথায় আপনি নিরূপণ পারে att
একটি ফাংশন যে আয় 1 যখন দূরত্ব 0 এবং 0 যখন দূরত্ব 9. যেমন সঙ্গেmix(1.0, 0.0, dist / 9.0)