![]() |
Ответ: Имитация водной поверхности.
Шейдер теней.
1. Делаем рендер с камеры стоящей в позиции света и ориентированной по направлению света. Результатом должна стать текстура, в которой цветом будет записано расстояние от видимых пикселей до источника света. Допустим красный+зеленый кодируют целую часть, а голубой дробную. 2. Далее рендрим сцену с обычной позиции камеры. Вершинный шейдер передает в пиксельный позиции и текстурные координаты вершин. Все тени в пиксельном шейдере. Передаем в шейдер позицию источника света и текстуру из п.1. Далее используя матрицу проекции для той камеры, что стоит в позиции источника света узнаю, верхний ли этот пиксель или нет, если нет, значит он в тени, значит надо совершить затенение, что само по себе тривиальная задача. И тут появляется возможность супер-дюпер манипулирования параметрами тени, хошь тени как на луне, хошь святящиеся. В итоге должно получиться само затенение. Все это можно объединить в одном шейдере с двумя проходами. Первый проход создание текстуры глубины сцены с позиции света. Камеру создавать не нужно, а на основании позиции света можно замутить матрицу проекции для камеры как бы существующей в этом месте. Для отсутствия швов карту глубины можно сделать кубомапой. Хотя бы в общих чертах я прав? |
Ответ: Имитация водной поверхности.
Цитата:
Цитата:
в VS считаешь просто помимо обычной позиции, позицию, полученную переменожением на шадоумап-матрицу. шадоумап-матрица = world * lightView * lightProj. потом эту матрицу, либо результат перемножения надо перевести в 0-1 диапазон, чтобы использовать как текстурные координаты для карты глубины. удобнее изначально шадоумап-матрицу умножить на скейлящую в нужный диапазон матрицу. Цитата:
Цитата:
|
Ответ: Имитация водной поверхности.
Вообще протупил, не нужны они, но в принципе, можно сделать как бы светящиеся участки мешей в зависимости от цвета наложенной текстуры.
|
Ответ: Имитация водной поверхности.
char fps;
xText (10,20,fps=xGetFPS()); выдает: \init.cpp|23|error: initializing argument 3 of 'void xText(int, int, const char*, int, int)'| Это типа я этой командой могу только константы печатать? O_o |
Ответ: Имитация водной поверхности.
так?
Цитата:
|
Ответ: Имитация водной поверхности.
так запускает, секунду печатает fps, потом ничего не печатает :)
|
Ответ: Имитация водной поверхности.
char содержит 1 символ (1 байт). для строк используй std::string.
#include <string> using namespace std; ... чтобы конвертировать число в стринг, придётся написать отдельную функцию: string itoa( int n ) { char buff[32]; sprintf(buff,"%d",n); return string( buff ); } ... xText (10,20, (string("fps: ") + itoa(xGetFPS())).c_str() ); необязательно так париться каждый раз - можно расширить стринг, дабы он мог нормально складываться с циферками. а вообще тебе стоит читать книжки по с++ ) --- исправил ошибочку |
Ответ: Имитация водной поверхности.
Так и читаю.
Щас вроде в башке устаканивается отличие и структура условий, циклов. Вроде ниче такой язык программирования :) |
Ответ: Имитация водной поверхности.
Цитата:
|
Ответ: Имитация водной поверхности.
Небольшой код для C++ и Xors3D, с вращающимся тором и перемещением камеры. Для Code::Blocks 10.05
Код:
#include <iostream> |
Ответ: Имитация водной поверхности.
dsd, не думал блог завести ?
|
Ответ: Имитация водной поверхности.
С названием: Быдлокод для хорса?
|
Ответ: Имитация водной поверхности.
С любым названием.
|
Ответ: Имитация водной поверхности.
Зачем? Кто его будет читать? и указывать на самые тупые места моего кода?
|
Ответ: Имитация водной поверхности.
Теже люди которые читают то что ты здесь выкладываешь, наверное.
|
Часовой пояс GMT +4, время: 21:30. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot