Вопрос не очень понял, отвечу как могу. Есть input data, есть output data - иногда output data включает в себя подмножество input data (т.е. алгоритм меняет данные inplace). Так или иначе, никакого неявного состояния нет - разумеется, код с багом может испортить output data (записать некорректную), или вообще крашнуться.
Ну, эээ, эдж совсем не про то. Per-triangle/per-vertex из всего описанного - только бленд шейпы. Компрессия - т.к. стриминга у нас нет ни в одном проекте, то своего PPU-side декомпрессора вполне хватает пока что.
У меня с эджем так отношения сложились. Надо было скиннинг сделать на СПУ. Причины опустим. =) Сел я, значит, за клавиатуру. Первым делом написал на ППУ простенькую реализацию - только для конкетного формата вертексов. А потом как подумал, что мне на надо будет поддержать все форматы для нормалей-бинормалей-позишенов, да чтобы на СПУ, да чтобы быстро работало... Лень стало самому писать. Дай, думаю, гляну, что в эдже. А там все есть. И если прикрутить, можно кроме скининга еще всяких полезностей поиметь. Только флажки включай-выключай, да форматы меняй. Что касается скорости, то вряд ли я своими руками напишу что-то лучше за разумное время. Ну так, слово-за-слово я и вставил эдж в проект.
Вот я поэтому и спросил. Если бы бленд шейпы надо было бы делать, я, наверное, тоже бы прикрутил эдж. Отсюда удивление - что, не понравился?
Есть два варианта - либо интегрировать edge целиком (куллинг, decompression/recompression, blend shapes, skinning), либо из edge для blend shapes использовать только функцию блендинга куска вершин, влезшего в LS. Первый вариант out of scope был на момент реализации blend shapes (да и есть), на данный момент это не нужно да и память требует. Второй вариант теоретически был бы возможен, практически на данный момент (у нас сейчас только три варианта структуры вершины для blend shapes, отличающиеся набором компонент; притом сомневаюсь что в дальнейшем изменится количество вариантов, изменится скорее их тип) это не сэкономило бы времени на реализацию - ну т.е. все равно писать экспорт часть полностью, рантайм обвязку на PPU, рантайм обвязку на SPU, юнит тесты - экономится написание собственно кода про blend, которого килобайт 10 наверное.
Comments 12
Reply
Reply
Собственно и хотелось узнать, inplace или не inplace, и пытается ли оно как-то защититься от собственных багов)
Reply
Reply
Компрессия - т.к. стриминга у нас нет ни в одном проекте, то своего PPU-side декомпрессора вполне хватает пока что.
Reply
У меня с эджем так отношения сложились. Надо было скиннинг сделать на СПУ. Причины опустим. =) Сел я, значит, за клавиатуру. Первым делом написал на ППУ простенькую реализацию - только для конкетного формата вертексов. А потом как подумал, что мне на надо будет поддержать все форматы для нормалей-бинормалей-позишенов, да чтобы на СПУ, да чтобы быстро работало... Лень стало самому писать. Дай, думаю, гляну, что в эдже. А там все есть. И если прикрутить, можно кроме скининга еще всяких полезностей поиметь. Только флажки включай-выключай, да форматы меняй. Что касается скорости, то вряд ли я своими руками напишу что-то лучше за разумное время. Ну так, слово-за-слово я и вставил эдж в проект.
Вот я поэтому и спросил. Если бы бленд шейпы надо было бы делать, я, наверное, тоже бы прикрутил эдж. Отсюда удивление - что, не понравился?
Reply
Reply
Reply
Reply
Leave a comment