例如,在"我的世界"中,您可以将火炬放置在任何地方,每个火炬都会影响世界上的光照水平,并且您可以在世界范围内放置的火炬/光源数量没有限制.我99%确定火炬的照明在CPU上处理并为每个块存储,因此当在某个块上渲染光值时,只需要将其传递到着色器,但是光源不能为此移动原因.如果你有一个游戏,你可以放置可以四处移动的光源(箭头着火,带有灯光的矿车,发光的能量球)和照明不是那么简单(包括颜色)什么是最有效的计算灯光效果的方法.
根据我的研究,我发现不同的渲染,不同的光照,动态创建具有不同光量的着色器并使用for循环(不能使用由于展开的制服)和静态光照贴图(这些可能仅用于还是灯)有没有其他方法可以进行照明计算,例如做除了允许移动灯光之外做什么类型的Minecraft,或者是否可以采用无限量的灯光并在数学上将它们组合成仅涉及几个灯光的近似值(这是一个想法我想出来但我无法弄清楚它是如何完成的?)
如果它有帮助,我是一个在OpenGL(传统和现代)方面具有良好经验的程序员,所以你可以给我代码片段,虽然我没有做太多的照明,所以简短的解释将不胜感激.如果你能指出我正确的方向,我也愿意做研究!
我最近刚刚完成了与Remix IDE的一项相当复杂的合同的工作。我现在将web3附加到前端,但是当我调用应该失败的函数时,它们仍会在Metamask上通过。
在Remix中测试我的合同时,我经常会单击并调用某些包含要求语句的函数,这些语句我知道仅能确认正确记录了合同状态。Remix没有将事务发送到metamask,而是输出了一条错误消息,我也想自己处理事务错误。
我如何检查我的合同通话以查看是否会失败。我必须使用预测气体的方法并以这种方式进行检测吗?如果可以,怎么办?我当前的代码如下:
contract.callFunction(function(error, result) {
if (!error) alert(result);
else alert(error);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码捕获了拒绝元掩码确认为错误,但是应该失败的事务将通过设置了极高的气体限制的元掩码进入。函数callFunction在合同中,不带参数,但对区块链有影响,因此需要交易。该函数的第一行是“ require(state == 1);”。并且我目前将合同设置为状态2,因此我希望交易失败,我只想检测到交易失败。