forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

Morganolla 08.08.2014 18:22

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от RegIon (Сообщение 285113)
Я бы написал шейдер для квада, в котором бар рисуется картинка с маской и программно менял -длину маски, или смешение setOffset методом

Тяжело написать такой шейдер самому? Еще не писал шейдеры в юнити...

RegIon 19.08.2014 17:42

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Morganolla (Сообщение 285143)
Тяжело написать такой шейдер самому? Еще не писал шейдеры в юнити...

Нет, берешь готовый шейдер, например без z теста и освещения, и редактируешь GLSL код в нем. Примеры шейдеров можно выгуглить.
Алгоритм пиксельшейдера прост:
srs = tex2d(srs_img,pos)
mask = tex2d(mask_img,pos-vec2d(1-xoffset,0))
srs.a = mask.r
outcolor = srs.a

pos- координата пикселя
xoffset - смещение маски по x 0-1
outcolor - расчитаный пиксель

Просто ставит в альфа канал картинки значение красного канала маски из положения пикселя+смешение, получается альфамаска)

Так как не помню наизусть синтаксиса GLSL,то писал как помню.

Такой шейдер пойдет? В нем маска едет (вроде правильно, правил на мобиле):
PHP код:

Shader "Custom/NewShader" {
        
Properties {
                
_MainTex ("Base (RGB A-mask)"2D) = "white" {}
                
_SecondTex ("Base (RGB)"2D) = "white" {}
                
_Offset ("Offset"Range(0,1))=0.5
        
}
        
SubShader
        
{
                
Tags "RenderType"="Opaque" }
                
LOD 200
                
                CGPROGRAM
                
#pragma surface surf Lambert

                
sampler2D _MainTex;
                
sampler2D _SecondTex;
                
fixed _Offset;

                
struct Input
                
{
                        
float2 uv_MainTex;
                };

                
void surf (Input INinout SurfaceOutput o)
                {
                        
fixed4 c tex2D (_MainTexIN.uv_MainTex);
                        
fixed4 c1 tex2D (_SecondTexIN.uv_MainTex-float2(1-_Offset,0));

                        
o.Albedo c.rgb;
                        
o.Alpha c1.r;
                }
                
ENDCG
        

        
FallBack "Diffuse"



Morganolla 03.09.2014 16:54

Ответ: Вопросы от новичка
 
Вопрос...
В приложении для андроида надо в ассетах запомнить массив рисунков (jpg) и потом в ходе игры их динамически подгружать как 2Д текстуры... Как это можно сделать вообще и скрипты (какая ф-ия)?
Пробовал через Resource.Load.., но при этом сильно растет объем АПК файла. Надо как то по другому... может как то с WWW....?
PS. В игре задействован 2dTool...

pax 03.09.2014 18:03

Ответ: Вопросы от новичка
 
В проекте можно создать папку StreamingAssets
http://docs.unity3d.com/Manual/StreamingAssets.html
положить туда jpg файлы и в случае андроида только по WWW оттуда считать используя WWW.texture к примеру.

radiobutton 17.09.2014 23:52

Ответ: Вопросы от новичка
 
Когда создаю новую папку в Scripts , то у меня автоматически появляется новая Assembly-CSharp-<Name> в проекте. Как можно этого избежать? (у меня кстати есть в Scripts папка, которая не помню как создавалась, но для нее нету отдельной "сборки", а вот новые нормально добавить не могу). Используется MonoDevelop.

Не знаете как со студией подружить юнити? Находил какие то статьи на англ, но ниче не понял.

pax 18.09.2014 10:59

Ответ: Вопросы от новичка
 
Сборки создаются в том случае, если в проекте есть особые папки (Plugins, Plugins/Editor, Editor, Standard Assets и т.д.). Это связано с тем, что эти части компилируются в разное время. Так же для js свои сборки.

Студия (не фри версия) работает нормально.

radiobutton 18.09.2014 22:31

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pax (Сообщение 286836)
Сборки создаются в том случае, если в проекте есть особые папки (Plugins, Plugins/Editor, Editor, Standard Assets и т.д.). Это связано с тем, что эти части компилируются в разное время. Так же для js свои сборки.

Точно у меня Editor как раз называется. +) Спасибо.

Цитата:

Сообщение от pax (Сообщение 286836)
Студия (не фри версия) работает нормально.

Действительно. =)

WISHMASTER35 04.10.2014 22:53

Ответ: Вопросы от новичка
 
никто еще не тестировал юнити 5?
я так надеюсь, что в нем можно будет получить данные из render texture и можно будет создавать меш со своим набором и типом данных.
первое нужно, чтобы посчитать шум перлина на карточке. а второе чтобы оптимизировать потребление памяти. без этого дальнейшее развитие моего проекта бессмысленно(
Еще бы не помешало создавать меш прямо на gpu. сейчас приходится доставать данные из ComputeBuffer, а затем отправлять их в меш. Что накладно для, например, marching cubes.

pax 05.10.2014 18:19

Ответ: Вопросы от новичка
 
C рендертекстуры же можно пиксели считать. Ставишь рендертекстуру RenderTexture.active = rt; и читаешь пиксели в обычную текстуру Texture2D.ReadPixels.
ИМХО скорее всего своих структур меша не будет.

WISHMASTER35 05.10.2014 19:43

Ответ: Вопросы от новичка
 
Можно то можно, но тормозит это сильно. да и у обычной текстуры форматов меньше.
www.gamedev.ru/code/forum/?id=176270 вообщем получить из нее данные - действительно проблема. и в этом не юнити виновата, а ограничение low level api, видно из-за синхронизации так. хотя на том форуме приводятся более производительные методы. так что юнити все же могла бы быть лучше.
в dx11 создали специальные текстуры для расчетов RWTexture2D/3D. но юнити имеет лишь compute buffer. а в dx9 наверно и вообще нет нормального способа это сделать.

если кастомного меша не будет, то можно попробовать Graphics.DrawProceduralIndirect. теоретически им можно отрендерить любые данные хранящиеся в compute buffer. но dx9 отпадает. хотя не ясно как эта функция работает и какой ее аналог в dx11. и примеров по ней не видел.

pax 05.10.2014 20:03

Ответ: Вопросы от новичка
 
RenderTecture в видеопамяти, чтобы получить ее в обычную память, память надо скопировать, это естественно медленно. Я других способов не знаю как это быстрее сделать.

Я вообще ничего еще из новых возможностей типа compute buffer не использовал ничего.

WISHMASTER35 05.10.2014 21:02

Ответ: Вопросы от новичка
 
да копирование памяти не столь медленное. texture.GetPixels вполне может работать в рантайме. а Texture2D.ReadPixels понижала фпс до 1-5.
к сожалению не знаю есть ли в dx9 другие способы получить расчеты. в dx11 сделали RWTexture2D , но юнити почему-то их обошел стороной и подовольствовался лишь ComputeBuffer'ом.

Morganolla 06.10.2014 18:33

Ответ: Вопросы от новичка
 
Странный баг - моно ругается на Camera.main, говорит `Camera' does not contain a definition for `main' и т.д. про все свойства камеры...! Что это? )))

pax 06.10.2014 20:11

Ответ: Вопросы от новичка
 
camera с маленькой буквы. main это статическое свойство класса, так что надо Camera.main

Morganolla 06.10.2014 21:09

Ответ: Вопросы от новичка
 
pax, извини за неточность там все правильно - Camera.main , я поправил предыдущий пост, тут что то другое...


Часовой пояс GMT +4, время: 23:48.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot