Pull to refresh
24
0
Send message

Зависимость прозрачности от ориентации поверхности

Reading time 2 min
Views 16K
На днях, вертя в руках пластиковый стаканчик, я обратил внимание на то, что видимая прозрачность пластика зависит от угла, под которым смотришь на поверхность — если смотреть перпендикулярно поверхности, то задний фон отчетливо виден, а если смотреть вдоль поверхности, то материал становится практически непрозрачным. Это явление меня заинтересовало, и я решил построить математическую модель.

Сказано — сделано. Под катом вывод формулы, код фрагментного шейдера и небольшое демо.
Читать дальше →
Total votes 62: ↑57 and ↓5 +52
Comments 14

Что не так с ссылками в С++

Reading time 6 min
Views 35K

Disclaimer: На данный момент я не располагаю достаточным опытом работы с С++11, поэтому все рассуждения следует рассматривать исключительно в контексте С++03, однако буду рад обсудить в комментариях взаимодействие нововведений С++ с рассмотренными в статье проблемами.

Ссылки в C++ появились чтобы удовлетворить синтаксические потребности механизма перегрузки операторов. В чистом С нет ссылочных типов, вместо этого есть понятие lvalue, которое описывается размытой формулировкой «то, что может стоять слева от оператора присваивания».

// Чистый C
int a;
int foo(int);
a = 7; // тип a - int
5 = 7; // и тип 5 - int
foo(42) = 7; // и тип foo(42) - тоже int 

В этом маленьком примере три выражения: переменная a, литерал «5» и вызов функции foo(42) — имеют одинаковый тип — int, но только переменная является lvalue и может стоять слева от оператора присваивания.

С точки зрения С программиста, выражение «foo(42) = 7;» лишено здравого смысла и не должно компилироваться, однако с появлением перегрузки операторов, возникла потребность именно в таких выражениях.

Читать дальше →
Total votes 28: ↑18 and ↓10 +8
Comments 24

GLU ES — порт GLU 1.3 под OpenGL ES

Reading time 1 min
Views 2.5K

Я достаточно долго искал библиотеку способную триангулировать самопересекающиеся многоугольники или разбивать их на простые многоугольники. В конце концов я остановился на libtess в составе GLU ES — в моем случае удобнее подключить с помощью mercurial subrepos цельную thirdparty-библиотеку, чем грубо выдрать и скопировать кусок исходников.

GLU ES является полным (в отличии от iGLU) портом GLU 1.3 под OpenGL ES. Портирование осуществлено Горчак Михаилом, за что ему огромное спасибо!

Библиотека доступна под лицензией SGI FREE SOFTWARE LICENSE B.

Читать дальше →
Total votes 11: ↑8 and ↓3 +5
Comments 2

Введение в безопасность на основе мандатных ссылок (англ. Capability-based security)

Reading time 10 min
Views 6K
В большинстве сегодняшних операционных систем модель безопасности своими корнями уходит в Unix, наследуя предположение о том, что пользователь может доверять программам, которые он запускает. Однако, как показывает практика – это утверждение в корне неверно.

Marc Stiegler сравнивает это с ситуацией, когда вы нанимая уборщика даете ему Главный И Единственный Ключ, которые не только открывает комнату, в которой необходимо сделать уборку, а открывает все двери, в т.ч. и дверь сейфа с золотом. Т.е. у вас всего две альтернативы – либо не давать уборщику этот ключ – и тогда он не сможет выполнить свою работу, либо дать и надеяться на его порядочность.

Модель безопасности на основе мандатных ссылок (англ. capability-based security) предлагает решение этой проблемы.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 15

Information

Rating
Does not participate
Location
Украина
Registered
Activity