非常抱歉我只記得大約兩個月前在某篇的推文看到
可是現在怎麼翻都找不到 所以針對這個疑問回答......
答案:單獨偷掉一個顏色不去算是不可能的
因為算出來的樣子..... 如果你有興趣知道 用搜尋引擎找
"色盲者眼中的世界"這種套圖......會有八成像
(就是說 RGB之所以是光的三原色 跟你的生理性質
比較有關 你眼睛中真的有三種功能對應RGB...)
但是偷顏色來變快還是可行的 而且 很好 很強大 很常見(或許??
偷的方法就不一樣了 一般建議 偷尾數
怎麼說?
首先拿一杯水 裡面滴99滴墨汁 然後再拿一杯水
滴上100滴墨汁 如果這兩杯水沒有擺在一起 大概你完全看不出
哪一杯是哪一杯 因為只差了1/100
所以不用每次算都很剛好 差個1或者1%或許不會怎樣
可是有誤差跟加速怎麼搭得上關係?我設計一個加法功能
A+B很接近100的時候會給我100,這樣有可能變快嗎?
這樣做當然不會,事實上通常加減跟乘不太會因為
你算的不精確得到甚麼好處 所以不是在這邊使用的
那麼來先考慮 比乘法更複雜的東西好了 首先應該是?
小學生都知道乘法學完要學的是除法
回想起你印象中的加減乘除的所有直式算法
加減是不是兩排搞定 而乘法就做了很多排分別乘起來再加
而除法比逆向的乘法更複雜 要不斷退位 還會除不盡要算到最後
真實的計算電路也很像這幾個直式 加減法算N個bit不會太複雜
乘法就可能平方倍大小 除法除了比乘法電路還大 可能還要一直循環
計算到最後1bit結束為止
那麼假如我32bit的資料 也許我除法就做前面1/2或者2/3的bit
後面隨便放 或者是一開始就沒有除法 只有倒數的查表(查表就不可能
滿足32bit了 一定先砍資料長度再查)
總之我有很多辦法,讓原本正常做要幾十個cycle的除法降低成為幾個
cycle,可是我頂多保證前面一部分是正確的 後面比正確值大或小
不知道.這樣的最大誤差...比如說前16bit正確 就是誤差1/256之內
也許對後面的資料而言這誤差可以接受 也許後面會算到爆炸
如果對還是純GPU的時代.誤差一般都沒甚麼 或者做遊戲的不滿意再自己修
除法之上還有log, logE, sin, cos等等運算 原理都相同,正常算要一大把
時間 提供快速算有誤差的給你自己考慮用不用
但後來有了GPGPU 有些程式設計者就無腦的要求你的結果都要跟CPU一致
所以完全只能算不精確的運算的GPU應該都不見了 要嘛這些GPU
提供兩套硬體 一套完整精確度但是慢一套快 或者是他的完全精確的
是以硬體指令為基礎 但是後面用數值方法再修正.....
最後我有沒有辦法知道哪個遊戲或者哪個硬體用的是不精確有誤差的
版本 除了他自己揭露給你看或者你逆向工程挑戰他吧 (??
==>如果看到同一個遊戲 有的卡顏色鮮艷有的卡顏色平板 後者
是偷掉顏色的運算嗎?
我認為兩者無關 顏色可以後來再加強...
而且經過後製加強的似乎更容易掩蓋住有使用不精確運算的方法的結果
如果叫你一個月都吃某力炸醬麵 然後端兩碗飯 裡面各加了兩粒鹽跟三粒鹽
再來分辨 應該是不可能成功的吧.
反之加料成重口味的東西 你就更難分出差異在後面小小的範圍內的誤差了呀