Сообщения на форуме пользователя Andrey (167 стр.)
Проблема с PointSprites (DirectX) | 18 авг. 2006 | 14:53 | #2 |
---|
Striker_Dev.
соглашусь ret
не расшмряемы они но на первых парх пойдет. Хотя OGRE их юзает.
соглашусь ret
не расшмряемы они но на первых парх пойдет. Хотя OGRE их юзает.
Сg Еффект - не могу получить технику. | 18 авг. 2006 | 14:51 | #14 |
---|
Executor
да ты прав :) опечатка я поправил
а вообще идеи есть?
да ты прав :) опечатка я поправил
а вообще идеи есть?
Разбиение простраства | 18 авг. 2006 | 10:42 | #3 |
---|
xapac
следует добавить что тут несколько вариантов. Узел Octree/QuadTree может наследоваться от узла в дереве сцены. тогда можно к этому узлу присоединять другие объекты.
Следует учеться что обюъект сцены также может наследоваться от узла сцены(из которых состоит дерево сцены), так и может не наследоваться. Тогда будет массив объектов присоедененных к узлу дерева сцены такой подход в движке Ogre.
Подход в котором наследование объекта от узла применяется, в движке irrlicht. Выбирай ято удобнее. Но в любом случае сцену надо представлять ввиде дерева. тогда все операции трансформации рендеринга и т.д. можно применять сразу к группе объектов. Хорошее начало может дать статья:
http://www.gamedev.ru/articles/?id=70101
следует добавить что тут несколько вариантов. Узел Octree/QuadTree может наследоваться от узла в дереве сцены. тогда можно к этому узлу присоединять другие объекты.
Следует учеться что обюъект сцены также может наследоваться от узла сцены(из которых состоит дерево сцены), так и может не наследоваться. Тогда будет массив объектов присоедененных к узлу дерева сцены такой подход в движке Ogre.
Подход в котором наследование объекта от узла применяется, в движке irrlicht. Выбирай ято удобнее. Но в любом случае сцену надо представлять ввиде дерева. тогда все операции трансформации рендеринга и т.д. можно применять сразу к группе объектов. Хорошее начало может дать статья:
http://www.gamedev.ru/articles/?id=70101
Сg Еффект - не могу получить технику. | 18 авг. 2006 | 10:35 | #12 |
---|
keltar
Кстати я разделил эффект на пиксельный и вершинный шедер интересно то что они отдельно не скомпилились были ошибки и в тех и
других. Тогда вопрог почему тогда скомпилися эффект?
пришлось исправить ошибки в результате вот разделленные шедеры:
Пиксельный
Вершинный:
Эти шедеры отдельно точно скомпилились. Соеденив их в тот-же эффект в результате он тоже скомпилися без ошибок, но опять
техника == NULL
вот код результирующего эффекта:
неужели остается вариант отослать баг репорт??? ;)))
Правка: лишняя переменная
Кстати я разделил эффект на пиксельный и вершинный шедер интересно то что они отдельно не скомпилились были ошибки и в тех и
других. Тогда вопрог почему тогда скомпилися эффект?
пришлось исправить ошибки в результате вот разделленные шедеры:
Пиксельный
uniform sampler2D Texture0; // текстура uniform sampler2D Texture1; // текстура float4 horizon = {0.9f, 0.7f, 0.7f, 1.0f}; ////////////////////////////////////////////////////////////// //Structures ////////////////////////////////////////////////////////////// struct PS { // пиксельный шейдер float4 position : POSITION; float2 texCoord0 : TEXCOORD0; float2 texCoord1 : TEXCOORD1; float2 intensity : TEXCOORD2; }; ////////////////////////////////////////////////////////////// //Pixel Shader ////////////////////////////////////////////////////////////// float4 PS_shader(in PS IN) : COLOR { float4 clouds_0 = tex2D(Texture0, IN.texCoord0); float4 clouds_1 = tex2D(Texture1, IN.texCoord1); float4 clouds = (clouds_0 + clouds_1) * IN.intensity.y; float4 cloud_color = float4((1.0 - IN.intensity.x) * horizon.x, (1.0 - IN.intensity.x) * horizon.y, IN.intensity.x * horizon.z, 0.0); return cloud_color * (1.0 - clouds.x) + clouds; } |
// struct VS { // вершинный шейдер float4 position : POSITION; float3 normal : NORMAL; float2 texCoord0 : TEXCOORD0; float2 texCoord1 : TEXCOORD1; }; //Vertex shader to pixel shader struct PS { // пиксельный шейдер float4 position : POSITION; float2 texCoord0 : TEXCOORD0; float2 texCoord1 : TEXCOORD1; float2 intensity : TEXCOORD2; }; ////////////////////////////////////////////////////////////// //Vertex Shader ////////////////////////////////////////////////////////////// void VS_shader( in VS IN, uniform float4x4 worldViewProj, uniform float time, out PS OUT) { float4 bbox = {2.0f, 0.3f, 2.0f, 1.0f}; OUT.position = mul(IN.position, worldViewProj); OUT.intensity.x = OUT.position.y / bbox.y; OUT.intensity.x = exp(clamp(OUT.intensity.x, 0.0f, 1.0f)) / 1.8f; OUT.intensity.y = OUT.intensity.x * OUT.intensity.x; OUT.texCoord0 = float2(OUT.position.x / 2.0f + time, OUT.position.z / 1.0f); OUT.texCoord1 = float2(OUT.position.x + time / 2.0f, OUT.position.z); } |
техника == NULL
вот код результирующего эффекта:
// float4x4 worldViewProj : ModelViewProjection; // произведение World * View * Projection uniform sampler2D Texture0; // текстура uniform sampler2D Texture1; // текстура uniform float time; // просто переменная float4 horizon = {0.9f, 0.7f, 0.7f, 1.0f}; float4 bbox = {2.0f, 0.3f, 2.0f, 1.0f}; ////////////////////////////////////////////////////////////// //Structures ////////////////////////////////////////////////////////////// //Application to vertex shader struct VS { // вершинный шейдер float4 position : POSITION; float3 normal : NORMAL0; float2 texCoord0 : TEXCOORD0; float2 texCoord1 : TEXCOORD1; }; //Vertex shader to pixel shader struct PS { // пиксельный шейдер float4 position : POSITION; float2 texCoord0 : TEXCOORD0; float2 texCoord1 : TEXCOORD1; float2 intensity : TEXCOORD2; }; ////////////////////////////////////////////////////////////// //Vertex Shader ////////////////////////////////////////////////////////////// void VS_shader( in VS IN, out PS OUT) { OUT.position = mul(IN.position, worldViewProj); OUT.intensity.x = OUT.position.y / bbox.y; OUT.intensity.x = exp(clamp(OUT.intensity.x, 0.0f, 1.0f)) / 1.8f; OUT.intensity.y = OUT.intensity.x * OUT.intensity.x; OUT.texCoord0 = float2(OUT.position.x / 2.0f + time, OUT.position.z / 1.0f); OUT.texCoord1 = float2(OUT.position.x + time / 2.0f, OUT.position.z); } ////////////////////////////////////////////////////////////// //Pixel Shader ////////////////////////////////////////////////////////////// float4 PS_shader(in PS IN) : COLOR { float4 clouds_0 = tex2D(modelTextureSampler0, IN.texCoord0); float4 clouds_1 = tex2D(modelTextureSampler1, IN.texCoord1); float4 clouds = (clouds_0 + clouds_1) * IN.intensity.y; float4 cloud_color = float4((1.0 - IN.intensity.x) * horizon.x, (1.0 - IN.intensity.x) * horizon.y, IN.intensity.x * horizon.z, 0.0); return cloud_color * (1.0 - clouds.x) + clouds; } technique Sky { pass { VertexProgram = compile vp1 VS_shader(); FragmentProgram = compile fp1 PS_shader(); } } |
Правка: лишняя переменная
Правка: 18 авг. 2006 10:58
Сg Еффект - не могу получить технику. | 17 авг. 2006 | 18:48 | #11 |
---|
чпасибо за совет попробую..
Сg Еффект - не могу получить технику. | 17 авг. 2006 | 18:47 | #10 |
---|
keltar
я тут одно предупреждение убрал:
вместо
сделал:
а то компилятор писал предупреждения преобразования float4 в float2
я тут одно предупреждение убрал:
вместо
OUT.texCoord0 = float4(OUT.position.x / 2.0f + time, OUT.position.z / 1.0f, 0.0f, 0.0f); OUT.texCoord1 = float4(OUT.position.x + time / 2.0f, OUT.position.z, 0.0f, 0.0f); |
OUT.texCoord0 = float2(OUT.position.x / 2.0f + time, OUT.position.z / 1.0f); OUT.texCoord1 = float2(OUT.position.x + time / 2.0f, OUT.position.z);
Правка: float2
Правка: 18 авг. 2006 14:50
Сg Еффект - не могу получить технику. | 17 авг. 2006 | 13:36 | #8 |
---|
>а примеры работают? :\
в том то и дела работают и простой эффект с корректными техниками получается
>там вроде ассерт лишний один в примере (в том смысле что у тебя не используется ModelView, а CgFXOpenGLSimple оно ассертится
>если всё же бажит, то надо отправлять багрепорт
что не пойму про что ты :(
в том то и дела работают и простой эффект с корректными техниками получается
>там вроде ассерт лишний один в примере (в том смысле что у тебя не используется ModelView, а CgFXOpenGLSimple оно ассертится
>если всё же бажит, то надо отправлять багрепорт
что не пойму про что ты :(
Сg Еффект - не могу получить технику. | 17 авг. 2006 | 0:21 | #6 |
---|
keltar
>Какой версии cg toolki
файл Readme.txt
NVIDIA Cg 1.5 beta2 README Copyright (C) 2002-2006 NVIDIA Corp.
есть еще варианты? может попробовать методом исключения на основе простого шейдера добавлять код и смотреть что не так?
>Какой версии cg toolki
файл Readme.txt
NVIDIA Cg 1.5 beta2 README Copyright (C) 2002-2006 NVIDIA Corp.
есть еще варианты? может попробовать методом исключения на основе простого шейдера добавлять код и смотреть что не так?
Сg Еффект - не могу получить технику. | 16 авг. 2006 | 14:31 | #4 |
---|
keltar
не работает...
technique == NULL хоть ты тресни!!
:(
видео карта GeForce 6600, дата разработки драйвера 09.03.2006, версия 8.4.2.1
а у тебя какая карта?
не работает...
technique = cgGetFirstTechnique(effect); ...
:(
видео карта GeForce 6600, дата разработки драйвера 09.03.2006, версия 8.4.2.1
а у тебя какая карта?
Сg Еффект - не могу получить технику. | 16 авг. 2006 | 11:09 | #2 |
---|
Ну неужели никто не может ничего сказать???
LUA | 16 авг. 2006 | 11:06 | #7 |
---|
xapac
>В mvc вроеде все работает провожу теже действия с CBuilder 6
>линковщик ругается
если линкуешь в VC++ то для убого дебилдера попробуй пребразуй *.lib через com2omf.exe(в акталоге BIN) т.е. примерно так в командной строке
coff2omf.exe lua_vc.lib lua_cb.lib и подключи преобразованную либу.
и вообще кидай это дебилдер...
>В mvc вроеде все работает провожу теже действия с CBuilder 6
>линковщик ругается
если линкуешь в VC++ то для убого дебилдера попробуй пребразуй *.lib через com2omf.exe(в акталоге BIN) т.е. примерно так в командной строке
coff2omf.exe lua_vc.lib lua_cb.lib и подключи преобразованную либу.
и вообще кидай это дебилдер...
Сg Еффект - не могу получить технику. | 14 авг. 2006 | 19:19 | #1 |
---|
???
Сg Еффект - не могу получить технику. | 14 авг. 2006 | 15:06 | #0 |
---|
Привет всем!!!
с шейдерах не силен. Попробывал переделать шейдер из HLSL в Cg Fx.
загружаю все стандартно т.к. остальные рабочие примеры моим кодом грузяться.
но не могу получить технику после загрузки своего эффекта.
вот участок кода показывающий проблему:
technique == NULL;
хотя шедер создается и нет сроки листинга(cgGetLastListing(cgContext) == NULL ) с ошибками.
вот сам шедер эффекта:
пробовал ставить разные профили компиляции arbvp1, arvfp1, vp20, fp20 ничего не помогает. Что я делаю не так?
спасибо всем заранее.
С Уважением Андрей.
с шейдерах не силен. Попробывал переделать шейдер из HLSL в Cg Fx.
загружаю все стандартно т.к. остальные рабочие примеры моим кодом грузяться.
но не могу получить технику после загрузки своего эффекта.
вот участок кода показывающий проблему:
void CgFXProgram::LoadEffect() // загрузка эффекта { effect = cgCreateEffectFromFile(cgContext, shaderFileName.c_str(), NULL); CheckForCgError(shaderFileName); OutListing(); if (!effect) { return; } technique = cgGetFirstTechnique(effect); // получить первую технику while (technique && cgValidateTechnique(technique) == CG_FALSE) { technique = cgGetNextTechnique(technique); } }
хотя шедер создается и нет сроки листинга(cgGetLastListing(cgContext) == NULL ) с ошибками.
вот сам шедер эффекта:
float4x4 worldViewProj : ModelViewProjection; // произведение World * View * Projection float4x4 world; // мировая матрица объекта float4x4 mvit : ModelViewIT; texture Texture0; // текстура texture Texture1; // текстура float time; // просто переменная uniform float intensity_sq, intensity; // интенсивность и квадрат интенсивности float4 horizon = {0.9f, 0.7f, 0.7f, 1.0f}; float4 bbox = {2.0f, 0.3f, 2.0f, 1.0f}; float3 Color = float3(0,1,0); // Texture samler sampler2D modelTextureSampler0 = sampler_state { generateMipMap = true; minFilter = LinearMipMapLinear; magFilter = Linear; mipfilter = Linear; }; // Texture samler sampler2D modelTextureSampler1 = sampler_state { generateMipMap = true; minFilter = LinearMipMapLinear; magFilter = Linear; mipfilter = Linear; }; ////////////////////////////////////////////////////////////// //Structures ////////////////////////////////////////////////////////////// //Application to vertex shader struct VS { // вершинный шейдер float4 position : POSITION0; float3 normal : NORMAL0; float2 texCoord0 : TEXCOORD0; float2 texCoord1 : TEXCOORD1; }; //Vertex shader to pixel shader struct PS { // пиксельный шейдер float4 position : POSITION0; float2 texCoord0 : TEXCOORD0; float2 texCoord1 : TEXCOORD1; float2 intensity : TEXCOORD2; }; ////////////////////////////////////////////////////////////// //Vertex Shader ////////////////////////////////////////////////////////////// void VS_shader( in VS IN, out PS OUT) { OUT.position = mul(IN.position, worldViewProj); OUT.intensity.x = OUT.position.y / bbox.y; OUT.intensity.x = exp(clamp(OUT.intensity.x, 0.0f, 1.0f)) / 1.8f; OUT.intensity.y = OUT.intensity.x * OUT.intensity.x; OUT.texCoord0 = float4(OUT.position.x / 2.0f + time, OUT.position.z / 1.0f, 0.0f, 0.0f); OUT.texCoord1 = float4(OUT.position.x + time / 2.0f, OUT.position.z, 0.0f, 0.0f); } ////////////////////////////////////////////////////////////// //Pixel Shader ////////////////////////////////////////////////////////////// float4 PS_shader(in PS IN) : COLOR { float4 clouds_0 = tex2D(modelTextureSampler0, IN.texCoord0); float4 clouds_1 = tex2D(modelTextureSampler1, IN.texCoord1); float4 clouds = (clouds_0 + clouds_1) * IN.intensity.y; float4 cloud_color = float4((1.0 - IN.intensity.x) * horizon.x, (1.0 - IN.intensity.x) * horizon.y, IN.intensity.x * horizon.z, 0.0); return cloud_color * (1.0 - clouds.x) + clouds; } ////////////////////////////////////////////////////////////// //Techniques ////////////////////////////////////////////////////////////// technique Sky { pass { VertexProgram = compile vp40 VS_shader(in VS, out PS); FragmentProgram = compile fp40 PS_shader(in PS); } } |
спасибо всем заранее.
С Уважением Андрей.
new & malloc | 13 авг. 2006 | 23:03 | #15 |
---|
keltar
>cppguru
>а что юзать?
может имеется ввиду std::vector<T>
glueray
>realloc - ненужная и тормознутая вещь, да еще к тому же может работать неправильно
это почему иормозная? для каких размеров? сотни Кб или сотни Мб ?
>(если в программе есть ссылки на перемещаемые объекты)
это уже надо по другому делать...
Feaerenil
>VirtualAllocEx =)
а если размер памяти мал, то будет ли эффективно? а если это Unix Ос ? ;)
>cppguru
>а что юзать?
может имеется ввиду std::vector<T>
glueray
>realloc - ненужная и тормознутая вещь, да еще к тому же может работать неправильно
это почему иормозная? для каких размеров? сотни Кб или сотни Мб ?
>(если в программе есть ссылки на перемещаемые объекты)
это уже надо по другому делать...
Feaerenil
>VirtualAllocEx =)
а если размер памяти мал, то будет ли эффективно? а если это Unix Ос ? ;)
Гаснет экран, при обращении к члену указателя | 13 авг. 2006 | 11:16 | #8 |
---|
Striker_Dev.
Экран гаснет если запускать из под среды отладки?
Release/Debug ???
ну только код можно запостить или денлай детальный лог перед обращением к членцу класса вывод и адрес.
Экран гаснет если запускать из под среды отладки?
Release/Debug ???
ну только код можно запостить или денлай детальный лог перед обращением к членцу класса вывод и адрес.