У цій статті я хочу докладно розповісти як користуватися БампМеппінгом в GLScene.
У цій статті я хочу докладно розповісти як користуватися БампМеппінгом в GLScene. Почну з того що цей бамп який ми будемо використовувати не самий швидкісний, краще звичайно буде есле написати свій GLSL шейдер. Але що ж поробиш, цей шейдер максимум що може з себе вичавити, так це 500-600 FPS при малій кількості об'єктів, налаштувань у нього мало ...
Почнемо ...
Ось ми вже відкрили Делфі і створили новий додаток. Що не створив? Ану швидко, не відставай, я диктую швидко))). На форму поставили GLScene1, GLSceneViewer1, GLBumpShader1, GLMaterialLibrary. У Uses написали: JPEG, так як ми будемо використовувати текстури в форматі ЖПЕГ. Ну це не значить що Ви не можете використовувати інші формати)). Ось ще одна примітка: текстура і бамп-текстура повинні бути однакового розміру, я маю на увазі піксклі, наприклад 256х256 і 256х256 і т.д. .. Ну створимо допустимо найпростішу сценку: кулька, даммікуб, план, джерело світла і камеру яка спрямована на кульку. Думаю Ви знаєте як це зробити)) У процедурі OnFormCreate пишемо:
Ну ось, це майже і є бамп, але майже, ще нада обьяснить що що значить і налаштування шейдера. Пояснюю:
map, bumpmap: TGLLibMaterial; - ЦІМ ми Даємо назви нашими матеріалами. bumpmap: = GLMaterialLibrary1.Materials.Add; - це ми додаємо материал до бібліотеки матеріалів GLMaterialLibrary1. textures / ground_bump.jpg - це шлях до зображення, у Вас він може бути інший))) bumpmap.Name: = 'Bump_MAP'; - цим ми задаємо ім'я матеріалу до бібліотеки матеріалів. bumpmap.Material.Texture.TextureFormat: = TFNormalmap; - цим ми показуем що ця текстура - карта нормалей, зауважте що бамп карта може бути і карта висот і карта нормалей, різниці не буде.
Ну а цим ми застосовуємо об'єкту всю ту вище написану писанину (текстуру і бамп).
Ось ми дійшли до настроювань шейдера, я напишу ті настройки які, на мене, найкращі, а так Ви можете поексперементувати самі. У ObjectInspector шейдера налаштовуємо:
BumpMethod: bmBasicARBFP в BumpOptions навпроти boDiffuseTexture2 ставимо True - цим ми дклаем видною звичайну текстуру. Всі решта не чіпаємо. BumpSpace: bsObject SpecularMode: smOff
Все інше про що мова не йшла не чіпаємо!
Все! Ваш бамп зроблено! Тепер можна відкомпілювати додаток і подивитися, що вийшло. До речі, все те що ми писали, можна зробити в ObjectInspector'e, але кодом набагато краще, ато будуть з'являтися різні баги і тому подібне ...