<p>As the compiler tells:</p>
<pre><code>OpenSmalltalk/opensmalltalk-vm/src/plugins/Squeak3D/Squeak3D.c:2475:7: warning: variable 'scale' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
                if (!((l2vDistance == 0.0)
                    ^~~~~~~~~~~~~~~~~~~~~~
/media/psf/Home/Smalltalk/OpenSmalltalk/opensmalltalk-vm/src/plugins/Squeak3D/Squeak3D.c:2480:42: note: uninitialized use occurs here
                l2vDirection[0] = ((l2vDirection[0]) * scale);
                                                       ^~~~~

</code></pre>
<p>That's effectively a bug in Smalltalk source, scale might be used uninitialized:</p>
<pre><code>computeDirection
        "Compute the direction for the current light and vertex"
        | scale |
        <inline: true>
        <var: #scale type: #double>
        (lightFlags anyMask: FlagPositional) ifTrue:[
                "Must compute the direction for this vertex"
                l2vDirection at: 0 put: (litVertex at: PrimVtxPositionX) - (primLight at: PrimLightPositionX).
                l2vDirection at: 1 put: (litVertex at: PrimVtxPositionY) - (primLight at: PrimLightPositionY).
                l2vDirection at: 2 put: (litVertex at: PrimVtxPositionZ) - (primLight at: PrimLightPositionZ).
                "l2vDistance := self dotProductOf: l2vDirection with: l2vDirection."
                l2vDistance := ((l2vDirection at: 0) * (l2vDirection at: 0)) +
                                                ((l2vDirection at: 1) * (l2vDirection at: 1)) +
                                                        ((l2vDirection at: 2) * (l2vDirection at: 2)).
                (l2vDistance = 0.0 or:[l2vDistance = 1.0]) 
                        ifFalse:[       l2vDistance := l2vDistance sqrt.
                                        scale := -1.0/l2vDistance].
                l2vDirection at: 0 put: (l2vDirection at: 0) * scale.
                l2vDirection at: 1 put: (l2vDirection at: 1) * scale.
                l2vDirection at: 2 put: (l2vDirection at: 2) * scale.
        ] ifFalse:[
                (lightFlags anyMask: FlagDirectional) ifTrue:[
                        l2vDirection at: 0 put: (primLight at: PrimLightDirectionX).
                        l2vDirection at: 1 put: (primLight at: PrimLightDirectionY).
                        l2vDirection at: 2 put: (primLight at: PrimLightDirectionZ).
                ].
        ]
</code></pre>
<p>IMO:</p>
<ul>
<li>the scaling is not needed when distance is 0 or 1</li>
<li>the scaling should be inside the block when distance is neither 0 nor 1</li>
<li>the scaling should be positive</li>
</ul>
<p>If I decipher correctly <code>l2vDirection</code> means light to vertex direction, that is:</p>
<pre><code>LV vector = OV vector - OL vector
</code></pre>
<p>whatever origin O, and that is what we already do in code (PrimVtxPositionX - PrimLightPositionX). So I don't understand the -1.0 here...<br>
If there is a -1.0, then we must also initialize scale to -1.0 when distance is 1.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/434?email_source=notifications&email_token=AIJPEW5XANR6EDJ4WSRALKDQPTMKRA5CNFSM4JCWMRPKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HTA24GQ">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AIJPEW3XZPAAP6WXVFZJB4LQPTMKRANCNFSM4JCWMRPA">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AIJPEWYID4UE2YLS76BIDSLQPTMKRA5CNFSM4JCWMRPKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HTA24GQ.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/434?email_source=notifications\u0026email_token=AIJPEW5XANR6EDJ4WSRALKDQPTMKRA5CNFSM4JCWMRPKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HTA24GQ",
"url": "https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/434?email_source=notifications\u0026email_token=AIJPEW5XANR6EDJ4WSRALKDQPTMKRA5CNFSM4JCWMRPKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HTA24GQ",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>